@WebServlet( urlPatterns ={"/player"}, name = "testServlet") public class testServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = "wb"; request.setAttribute("wb",name); request.getRequestDispatcher("/welcome.jsp").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }
<html> <head> <title>Title</title> </head> <body> <% String name = (String)request.getAttribute("wb"); System.out.println(name); %> </body> </html>
最后得到的值为空,这是什么情况各位大神?
你的这个写法没有问题,可是你运行的时候不能直接运行welcome.jsp页面。因为你根本就没有写到servlet的跳转,你随便加个页面在上面写<jsp:forward page="/player"/>就可以了,都没跳转等于servlet代码没运行,当然输出也是空的了。不想加页面的话直接跑servlet也可以的。
没有采纳吗?
@饥饿前行者: 抱歉,现在才回复。之后反应回来了,谢谢,谢谢!
打断点调试;
你要想在jsp页面输出变量
用<%=request.getAttbute("wb")%>
或者
el表达式${wb}在页面输出
谢谢!我知道错误在哪了! 谢谢!
题主没有访问到后台,建议先访问后台。你直接访问页面的话后台根本没走当然返回是空了。
你这个流程如果URL首先访问###/player ,然后容器进入你的jsp页面返回到浏览器进行渲染,这个Attribute是可以取到的
forward这个方法是同一个请求,因此肯定可以取到【此时你浏览器看到的是player这个地址,而不是welcome.jsp这个地址】
如果你在浏览其中直接访问welcome.jsp,那是肯定没有值的
发现了,发现了。谢谢!