[英]Session attribute is null at first load
我有以下servlet
:
@WebServlet(name = "Placeholder",urlPatterns = {"/foo"})
public class Placeholder extends HttpServlet {
public static int numbers=5;
HttpSession session;
public void doGet (HttpServletRequest _req, HttpServletResponse _res) throws ServletException, IOException {
/* Refresh session attributes */
session = _req.getSession();
session.setAttribute("wee","ok");
}
}
使用以下JSP
:
<%@page language="java" contentType="text/html"%>
<%@page import="java.util.*, java.io.*"%>
<%@page import="main.java.Placeholder.*" %>
<html>
<body>
<b><% out.println("wee, printing from java");%></b>
<% out.println("<br/>Your IP address is " + request.getRemoteAddr());
String value = (String) session.getAttribute("wee");
out.println(value);%>
</body>
</html>
我肯定在某處缺少該點,因為屬性wee
解析為null
,這是我第一次加載頁面時的結果。 如果我去/foo
我得到空的頁面,之后我回來並重新加載的根頁servlet
, wee
實際上得到它的價值。
我的目標是將servlet
變量簡單地打印到視圖中,而不需要路由。 不知道這里是否需要urlPatterns
,但是如果沒有這個小技巧,它目前無法使用。
UPD。 好的,所以我弄清楚了無論我采用哪種路由,都需要在瀏覽器中添加一些字符,返回並重新加載頁面。 因此,根目錄為0.0.0.0:8080/webapp
我需要訪問,例如0.0.0.0:8080/webapp/qwerty
,回到/webapp
並刷新頁面。
如何僅通過/ webapp實例化會話? 為什么我在訪問一些不存在的隨機路由/webapp/randomstuff
沒有404或500?
首先在web.xml
中將servlet配置為歡迎文件。 如果不存在web.xml
,則在WEB-INF文件夾中手動創建它,並將其放在內容下面。
<welcome-file-list>
<welcome-file>foo</welcome-file>
</welcome-file-list>
而不是向jsp發出servlet的請求中,可以說您的jsp名稱是index.jsp
而servlet代碼看起來像這樣:
@WebServlet(name = "Placeholder",urlPatterns = {"/foo"})
public class Placeholder extends HttpServlet {
public static int numbers=5;
public void doGet (HttpServletRequest _req, HttpServletResponse _res) throws ServletException, IOException {
HttpSession session = _req.getSession();
session.setAttribute("wee","ok");
_res.sendRedirect("index.jsp");
}
}
現在運行您的servlet,您將看到輸出。 希望這能解決您的問題!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.