日期:2014-05-17  浏览次数:20816 次

求助 ,jsp 通过超链接传值给servlet ,接不到值
<%String str = (String)request.getSession().getAttribute("username"); %>
<%if(str!=null){ %>
<li><a href="GrzxServlet?name=<%=str%>" >个人中心</a>
<%}else{%>
<li><a href="../webpage/vip.jsp">个人中心</a>
<% }%>

上面是超链接那块代码。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletExceptionIOException {

        System.out.println( request.getAttribute("name"));
这是get方法里接收,是不是get方法接不了参数?

再点击超链接时,在网页下面已经看到 所要跳转的地址和带的参数的值了 ,不是为空。在get方法里输出的是null 。

------解决方案--------------------
request.getParameter("name") 不是 getAttribute()
------解决方案--------------------
引用:
request.getParameter("name") 不是 getAttribute()

+1

HttpServletRequest类既有getAttribute()方法,也由getParameter()方法,这两个方法有以下区别: 

(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 

从更深的层次考虑,request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。 

request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。 


------解决方案--------------------
引用:
引用:request.getParameter("name") 不是 getAttribute()
+1
XML/HTML code?1234567HttpServletRequest类既有getAttribute()方法,也由getParameter()方法,这两个方法有以下区别:  (1)HttpServletRequest类有set……

正解
一般在后台接受前台传递的参数时候用request.getParameter("name");多个参数使用request.getParameterValues;
而request.getAttribute("name");用于前台接受后台request.setAttribute("name",name);设置的共享属性。