问题描述:
1.首先通过login.jsp登陆系统,用户验证通过后,讲用户信息设置到session中,具体代码如下:
User user = UserManager.getInstance().login(userId, password);
session.setAttribute("user_info", user);
//session.setMaxInactiveInterval(60*60);
response.sendRedirect(request.getContextPath() + "/main.jsp");
2.上面定向到main.jsp页面后,user_info数据存在。
3.然后我在此页面中写入如下请求servlet代码后,
function addFlowCard() {
window.self.location = "<%=basePath%>servlet/FlowCardServlet?command=${showAdd}";
}
4.在servlet里面取得的值却为null,,代码如下
@Override
protected final void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
command = request.getParameter("command");
user = (User) request.getSession().getAttribute("user_info");
super.service(request, response);
}
5.上面request.getSession().getAttribute("user_info")取得的值为null。
6.请各位看看哪里有问题??
问题补充:谢谢各位了,问题解决了!
1.问题主要内容,因为window.self.location = "<%=basePath%>servlet/FlowCardServlet?command=${showAdd}";调用过去后session为null,request.getSession()新建了一个新的session,所以之前setAttribute()的参数,均为null
2.问题原因:经过长时排查,发现问题,为 <%basePath%>的取值有问题,原来有问题的写法是:
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ "/" + path + "/";
解析结果为:window.self.location = "http://localhost:8080//yourApp
改正后的写法:
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
解析结果为:window.self.location = "http://localhost:8081/yourApp
可以看出,在path前面多了一个"/",,然后。。。
3.谢谢各位
相关推荐
request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString...
4. **会话管理**:`HttpSession`接口用于处理用户会话,通过`request.getSession()`创建或获取会话,可以使用`setAttribute()`和`getAttribute()`方法在会话范围内存储和检索对象。 5. **编码设置**:除了对请求和...
2. **读取(Read)**:JSP通常用于展示数据,通过内联Java代码或者JSP表达式从Servlet传递的数据进行渲染。 ```jsp <%= item.getName() %> <!-- JSP表达式显示数据 --> ``` 3. **更新(Update)**:Servlet接收...
本文详细介绍了 Servlet 的基本概念、工作原理以及常见应用场景,包括编译和安装、通过 JSP 调用、共享变量、使用 `HttpServlet` 类、文件读写、数据库访问和会话管理等内容。Servlet 作为 Java Web 开发的核心技术...
实例化servlet类 - 正确,JSP转换后的Servlet类会被实例化。 - A和B涉及的是Servlet生命周期的方法,而不是转换阶段。 - E. 加载servlet类 - 这是在Servlet容器启动时发生的。 8. 从session中获取对象应使用`...
* forward() 方法的调用者与被调用者之间共享相同的 request 对象和 response 对象,而 sendRedirect() 方法调用者和被调用者使用各自的 request 对象和 response 对象,它们属于两个独立的请求和响应过程。...
通过JSP页面调用Servlet 在实际开发中,经常需要从JSP页面跳转到Servlet来处理业务逻辑。可以通过以下方式实现: - 在JSP页面中使用`<form>`标签提交表单数据到Servlet。 - 使用`<a>`标签或JavaScript发起AJAX...
另外,还可以直接调用 `request.getSession()` 方法,这等同于调用 `request.getSession(true)`。 ##### 使用 在 `javax.servlet.http.HttpSession` 接口中定义了一系列方法,用于操作会话数据: - `void ...
JavaBean在JSP和Servlet之间的传递技术是Java Web开发中的核心概念,主要用于数据的封装和共享。以下将详细解析这个技术要点。 一、初始化JavaBean 1. 在JSP中: 当在JSP中使用`<jsp:useBean>`标签时,会根据`...
- **获取Session**:通过`HttpSession session = request.getSession(true);`可以获取到当前用户的Session。如果参数为`true`且当前没有Session,则会创建一个新的Session;如果是`false`且当前没有Session,则返回`...
在JSP页面中,我们可以使用`<img>`标签来调用Servlet显示验证码图像。同时,设置表单以便用户输入验证码。 ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> 登录 用户名:...
HttpSession session = request.getSession(); session.setAttribute("username", "John"); ``` 6.Application对象类:ServletContext Application对象代表整个Web应用,用于在整个应用范围内共享数据。设置和获取...
2. **执行**:Web服务器通过Servlet容器(如Tomcat)来调用Servlet的`service()`方法。这个方法是Servlet处理请求的主要入口点。在这里,Servlet可以获取请求参数,处理业务逻辑,并准备响应内容。 3. **应答**:...
通过以上步骤,你可以在JSP应用中利用Servlet和Session对象实现页面间的数据通信。在实际开发中,结合JBuilder的工具支持,可以更加高效地完成这一任务。不断实践和学习,你将更深入地掌握这些核心技术,提升Web开发...
- Session:HttpSession接口用于跟踪用户会话,通过request.getSession()获取,使用setAttribute()和getAttribute()管理会话数据。 - Cookie:持久化用户会话数据,创建并设置Cookie,通过response.addCookie()...
- **Session(HttpSession)**:通过`request.getSession()`创建,用于跨多个请求跟踪用户状态。 - **Cookie**:创建Cookie并设置超时时间,通过`response.addCookie()`发送到客户端,使用`request.getCookies()`...
欢迎((User) request.getSession().getAttribute("user")).getUsername() %>回来! <a href="<%=request.getContextPath()%>/LogoutServlet">退出 ``` 验证码的验证也可以利用session。在`ValiImageServlet`中...
在Java Web应用中,过滤器(Filter)是一种特殊的组件,它可以在请求到达目标资源(如Servlet或JSP页面)之前拦截这些请求,并在请求完成之后返回给客户端前再次拦截响应。过滤器通常用于执行一些预处理工作,比如...
- 初始化:通过调用init()方法,仅在Servlet首次被请求时执行。 - 服务:处理每个客户端请求,调用doGet()或doPost()方法。 - 销毁:当Web应用停止或Servlet不再使用时,调用destroy()方法。 5. **请求处理** -...