我有以下内容servlet:
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:
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实际上会得到它的值。
wee
null
/foo
我的目标是从servlet视图中简单地打印变量,而不需要路由。不确定urlPatterns这里是否需要这些,但是如果没有这个小技巧,它暂时无法使用。
urlPatterns
UPD。 好的,所以我弄清楚了无论我采用哪种路由,都需要在浏览器中添加一些字符,返回并重新加载页面。所以,根是0.0.0.0:8080/webapp
0.0.0.0:8080/webapp
我需要访问说0.0.0.0:8080/webapp/qwerty,回到/webapp并刷新页面。
0.0.0.0:8080/webapp/qwerty
/webapp
如何仅通过/ webapp实例化会话?为什么在访问一些不存在的随机路由时没有404或500 /webapp/randomstuff?
/webapp/randomstuff
首先在中将servlet配置为欢迎文件web.xml。如果web.xml不存在,则在WEB-INF文件夹中手动创建它,并将其放在内容下面。
web.xml
<welcome-file-list> <welcome-file>foo</welcome-file> </welcome-file-list>
比在向jsp发出servlet的请求中,可以说您的jsp名称index.jsp比servlet代码看起来像:
index.jsp
@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,您将看到输出。希望这能解决您的问题!!!