在JSP中使用Java HttpSession变量



我是Java Web开发的新手。我读了很多与这个问题相关的帖子,已经讨论了很多......但是我不知道如何让它为我工作...所以请善待:o(

我有一个简单的表格可以提交。默认情况下,我希望表单显示今天的日期。

这是我的servlets代码片段:

@WebServlet("/Main")
public class Main extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Main() {
super();
// TODO Auto-generated constructor stub
}
public String date;
public String getDate() {
return date;
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
*      response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
System.out.println("n-----------------------------------------nBegin doGet");
System.out.println("Date " + date);
HttpSession session = request.getSession();
// Date - Get today date to fill the welcome form
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("dd MMMM yyyy");
date = (String) ft.format(dNow);
session.setAttribute("date", date);
// Go to main page
this.getServletContext().getRequestDispatcher("/WEB-INF/main.jsp").forward(request, response);
System.out.println("nEnd doGetn-----------------------------------------");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
*      response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("n-----------------------------------------nBegin Post Session");
System.out.println("Date " + date);
HttpSession session = request.getSession();
this.getServletContext().getRequestDispatcher("/WEB-INF/main.jsp").forward(request, response);
System.out.println("nEnd doPostn-----------------------------------------");
}
}

日食控制台中的跟踪显示正确的值。

但是在我的 JSP 中我不知道如何显示它。我试过了

<p>${date}</p>

这个给出了一个空白段落。 和

<%= session.getAttribute("date");%>

这在服务器端给出了执行错误。

有人可以解释我的代码中出了什么问题吗?不仅仅是我已经阅读但不理解的论坛上的链接;o(

谢谢

您可以在 jsp 页面中按如下方式访问会话属性,

在标记中使用${sessionScope.date}而不是${date}<p>

通过在页面顶部添加<%@ page session="true" %>,确保 jsp 是允许访问会话。

JSP 表达式不使用";">来结束表达式。 而不是:

<%= session.getAttribute("date");%>

尝试

<%= session.getAttribute("date") %>

此外,servlet 通常处理并发请求,因此它必须是无状态的。 将date移动到局部方法变量而不是类变量,以便它是线程安全的。

相关内容

  • 没有找到相关文章

最新更新