假如我的servlet写了session.setAttribute(“name”,name);,我的js如何去获取name属性值
时间: 2025-02-10 15:15:36 浏览: 34
在Servlet中设置session的`setAttribute("name", name)`之后,为了在JavaScript中获取这个属性值,你需要做以下几步:
1. **服务器端**:当用户访问包含此session信息的页面时,Servlet会将`name`关联到用户的session。这通常是通过`HttpSession`接口完成的,例如在JSP或Spring MVC等Web框架中。
```java
// Servlet or JSP code
HttpSession session = request.getSession();
session.setAttribute("name", name);
```
2. **浏览器存储**:一旦session创建并设置了属性,浏览器会自动存储相关的会话ID,这个信息会被隐含地包含在发送给服务器的cookie中。
3. **跨域访问限制**:如果你的应用需要从非同源(CORS)的页面访问session数据,可能需要在服务器上启用CORS策略或者允许跨域资源共享(CORS)。
4. **前端获取**:在JavaScript中,你可以通过`XMLHttpRequest`或者Fetch API发起AJAX请求,向服务器发送带有session ID的请求,并在服务器返回的数据中查找`name`属性。
```javascript
// JavaScript (using jQuery for example)
$.ajax({
url: 'your-context-root/session-name', // Assuming your servlet maps to this URL
type: 'GET',
xhrFields: {
withCredentials: true, // Needed if cookies are used for cross-origin requests
},
success: function(response) {
var name = response.name; // Assuming the server returns {name: "value"}
console.log(name);
}
});
```
请注意,这里假设了你已经将session ID作为cookie发送到客户端,并且服务器已设置好适当的CORS策略。
阅读全文
相关推荐
















org.apache.jasper.JasperException: 在 [69] 行处理 [/teacher/teacher_teaching.jsp] 时发生异常
66: 课程学分
67:
68: <%String username = session.getAttribute("username").toString();
69: teacheraction te=new teacheraction(username);ResultSet rs =te.getaresult(); while(rs.next()) { %>
70:
71: <%= rs.getString("semester") %>
72: <%= rs.getString("course_name") %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:610)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
com.beacon.sms.filter.EncodingFilter.doFilter(EncodingFilter.java:27)
根本原因。
java.lang.NullPointerException
org.apache.jsp.teacher.teacher_005fteaching_jsp._jspService(teacher_005fteaching_jsp.java:188)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
com.beacon.sms.filter.EncodingFilter.doFilter(EncodingFilter.java:27)
package com.boda.xy;
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.time.LocalTime;
import jakarta.servlet.annotation.WebServlet;
@WebServlet(name = "showSession", value = "/show - session")
public class ShowSessionServlet extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset = UTF - 8");
//创建或返回用户会话对象
HttpSession session = request.getSession(true);
String state = session.isNew()?"新会话":"旧会话";
session.setMaxInactiveInterval(60);
String heading = null;
//从会话对象中检索accessCount属性
Integer accessCount = (Integer)session.getAttribute("accessCount");
if(accessCount == null){
accessCount = Integer.valueOf(1);
heading = "欢迎您,首次登录该页面!";
}else{
heading = "欢迎您,再次访问该页面!";
accessCount = accessCount + 1;
}
//将accessCount作为属性存储到会话对象中
session.setAttribute("accessCount",accessCount);
PrintWriter out = response.getWriter();
out.println("<html><head>");
out.println("<title>会话跟踪示例</title></head>");
out.println("<body>");
out.println("" + heading
+ "再次访问" + "");
out.println("");
out.println("信息 值 \n");
out.println("会话状态: " + state + " ");
out.println(session.getId() + "
");
out.println("创建时间: ");
out.println("" + session.getCreationTime() + " ");
out.println("最近访问时间: ");
out.println("" + session.getLastAccessedTime() + " ");
out.println("最大不活动时间(: "
+ session.getMaxInactiveInterval() + " ");
out.println("Cookie: "
+ request.getHeader("Cookie") + " ");
out.println("已被访问次数: "
+ accessCount + " ");
out.println("");
out.println("</body></html>");
}
}
如何在java wed中运行该代码

package com.boda.xy;
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.time.LocalTime;
import jakarta.servlet.annotation.WebServlet;
@WebServlet(name = "showSession", value = "/show - session")
public class ShowSessionServlet extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset = UTF - 8");
//创建或返回用户会话对象
HttpSession session = request.getSession(true);
String state = session.isNew()?"新会话":"旧会话";
session.setMaxInactiveInterval(60);
String heading = null;
//从会话对象中检索accessCount属性
Integer accessCount = (Integer)session.getAttribute("accessCount");
if(accessCount == null){
accessCount = Integer.valueOf(1);
heading = "欢迎您,首次登录该页面!";
}else{
heading = "欢迎您,再次访问该页面!";
accessCount = accessCount + 1;
}
//将accessCount作为属性存储到会话对象中
session.setAttribute("accessCount",accessCount);
PrintWriter out = response.getWriter();
out.println("<html><head>");
out.println("<title>会话跟踪示例</title></head>");
out.println("<body>");
out.println("" + heading
+ "再次访问" + "");
out.println("");
out.println("信息 值 \n");
out.println("会话状态: " + state + " ");
out.println(session.getId() + "



