我想让servlet给jsp传值结果servlet页面变成了我要传的那个值,jsp变成null了,这是什么原因?

我现在要在地址栏输入jsp的那个地址时显示从servlet传过来的值,而不是地址栏打开servlet页面
javascript代码

<body>
<%=request.getAttribute("numberip")%>
</body>
servlet代码
request.setAttribute("numberip",numberip);
request.getRequestDispatcher("project.jsp").forward(req,resp);
最新回答
甜度超标。

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类的···前面有定义没发出来···