求助 ,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
ServletException,
IOException {
System.out.println( request.getAttribute("name"));
这是get方法里接收,是不是get方法接不了参数?
再点击超链接时,在网页下面已经看到 所要跳转的地址和带的参数的值了 ,不是为空。在get方法里输出的是null 。
------解决方案--------------------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");多个参数使用request.getParameterValues;
而request.getAttribute("name");用于前台接受后台request.setAttribute("name",name);设置的共享属性。