2024-09-12 13:21:05
表示不明白你在说什么。。。
<body>
<%=request.getAttribute("numberip")%>
<!--上面是取request域中numberip的值-->
</body>
上面的应该是jsp页面的代码吧。
request.setAttribute("numberip",numberip); //在request域里面放入:numberip变量
request.getRequestDispatcher("project.jsp").forward(req,resp);//将当前的请求转给project.jsp 页面。
上面java的servlet代码
看了上面的注释了吧,流程应该明白了吧。
在servlet中放入值,转发到jsp页面,jsp页面显示servlet中放入的值。
所以和你说的完全相反:浏览器地址栏输入的应该是servlet的地址,然后实际显示的是jsp页面。因为request.getRequestDispatcher("project.jsp").forward(req,resp)将你请求servlet的信息都转发到jsp页面了。
===============纠正完你的用词了
说代码的问题:
request.getRequestDispatcher("project.jsp").forward(req,resp)
^^^^^^^^^这里明明是request,为什么为什么为什么到了^^^^^^这里却成了req了。。。。。
forward的参数必须是原封不动的 servlet中的request,response对象!!!
===================
另外:request.setAttr.....这个方法,是设置request域的,这个request只是存在在当前请求中。
你只打开jsp页面,这个请求的request生命从你的url到服务器再到页面(这个时候request就已经死了,在也找不到了,你再打开,又是一个新的请求,新的request了)。而在这个请求过程中,根本没有经过servlet,也没有代码给numberip设置值。所以是null。
谢谢,你说的很清楚,req和resp只是两个变量HttpServletRequest类和HttpServletResponse类的···前面有定义没发出来···