在 JSP 中使用 Java HttpSession 变量
Use a Java HttpSession variable in JSP
我是 Java 网络开发的新手。我读了很多 post 与这个问题相关的内容,已经讨论了很多...但我不知道如何让它对我有用...所以请善待 :o)
我有一个可以提交的简单表格。默认情况下,我希望表单显示今天的日期。
这是我的 servlet 代码片段:
@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 doGet\n-----------------------------------------");
}
/**
* @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 doPost\n-----------------------------------------");
}
}
eclipse 控制台中的跟踪显示正确的值。
但在我的JSP中我不知道如何显示它。我试过了
<p>${date}</p>
这个给出一个空白段落。
和
<%= session.getAttribute("date");%>
这个给出了服务器端的执行错误。
有人可以解释一下我的代码有什么问题吗?不仅仅是论坛上我已经阅读但不理解的 link ;o)
谢谢
A JSP 表达式不使用 ";" 来结束表达式。而不是:
<%= session.getAttribute("date");%>
尝试
<%= session.getAttribute("date") %>
此外,servlet 通常处理并发请求,因此它需要是无状态的。将 date
移动为局部方法变量而不是 class 变量,因此它是线程安全的。
您可以在 jsp 个页面中按如下方式访问会话属性,
在 <p>
标签中使用 ${sessionScope.date}
而不是 ${date}
。
通过在页面顶部添加 <%@ page session="true" %>
确保 jsp 允许访问会话。
我是 Java 网络开发的新手。我读了很多 post 与这个问题相关的内容,已经讨论了很多...但我不知道如何让它对我有用...所以请善待 :o)
我有一个可以提交的简单表格。默认情况下,我希望表单显示今天的日期。
这是我的 servlet 代码片段:
@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 doGet\n-----------------------------------------");
}
/**
* @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 doPost\n-----------------------------------------");
}
}
eclipse 控制台中的跟踪显示正确的值。
但在我的JSP中我不知道如何显示它。我试过了
<p>${date}</p>
这个给出一个空白段落。 和
<%= session.getAttribute("date");%>
这个给出了服务器端的执行错误。
有人可以解释一下我的代码有什么问题吗?不仅仅是论坛上我已经阅读但不理解的 link ;o)
谢谢
A JSP 表达式不使用 ";" 来结束表达式。而不是:
<%= session.getAttribute("date");%>
尝试
<%= session.getAttribute("date") %>
此外,servlet 通常处理并发请求,因此它需要是无状态的。将 date
移动为局部方法变量而不是 class 变量,因此它是线程安全的。
您可以在 jsp 个页面中按如下方式访问会话属性,
在 <p>
标签中使用 ${sessionScope.date}
而不是 ${date}
。
通过在页面顶部添加 <%@ page session="true" %>
确保 jsp 允许访问会话。