当两个Web组件之间为转发关系时,转发源会将要共享 request范围内的数据先用setAttribute将数据放入到HttpServletRequest对象中,然后转发目标通过 getAttribute方法来取得要共享的数据。而MVC中用的就是Web组件之间的转发啊!
下面整理一下getParameter和getAttribute的区别和各自的使用范围。
(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法
(2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数,例如假定welcome.jsp和authenticate.jsp之间为链接关系,welcome.jsp中有以下代码:
<a href="authenticate.jsp?username=wolf">authenticate.jsp </a>
或者:
<form name="form1" method="post" action="authenticate.jsp">
请输入用户姓名:<input type="text" name="username">
<input type="submit" name="Submit" value="提交">
</form>
在authenticate.jsp中通过request.getParameter("username")方法来获得请求参数username:
<% String username=request.getParameter("username"); %>
(3)当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。
假定 authenticate.jsp和hello.jsp之间为转发关系。authenticate.jsp希望向hello.jsp传递当前的用户名字, 如何传递这一数据呢?先在authenticate.jsp中调用setAttribute()方法:
<%
String username=request.getParameter("username");
request.setAttribute("username",username);
%>
<jsp:forward page="hello.jsp" />
在hello.jsp中通过getAttribute()方法获得用户名字:
<% String username=(String)request.getAttribute("username"); %>
Hello: <%=username %>
从更深的层次考虑,request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。
request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。
request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据。
request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。
getAttribute是返回对象,getParameter返回字符串
总的来说:request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。
分享到:
相关推荐
request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString...
request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。即request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取...
在后台通过Request取值为null,是因为只设置了id属性,而取值候用的是name属性,问题就出现在这里
request.getRequestDispatcher("index.jsp").forward(request, resposne); 外部跳转: response.sendRedirect("index.jsp"); 内部跳转是一次请求和一次响应 外部跳转是两次请求和两次响应 ServletContext:Servlet上...
int uId=Integer.parseInt(request.getParameter("uId")); int boardId=Integer.parseInt(request.getParameter("boardId")); int topicId=Integer.parseInt(request.getParameter("topicId")); int replyId=...
//得到书号和书本对象 int bookid =Integer.parseInt(request.getParameter("id")); Map, Book> books = (Map, Book>)request.... request.getRequestDispatcher("listcart.jsp").forward(request, response);
String url = request.getParameter("url"); URLEncoder.encode(URLDecoder.decode(url,"iso-8859-1"), "iso-8859-1"); session.setAttribute("redirectUrl",url); } else{ session.setAttribute(...
JSP Login.jsp <br> <br>;charset=GB2312" %> <br><html><br><head><br><title>CH5 - Login.jsp</title><br></head><br><body><br> <h2>javax.servlet.http.HttpSession - session 对象</h2> ...
RequestDispatcher view = request.getRequestDispatcher("login.jsp"); view.forward(request, response); } if(c==1){ RequestDispatcher view = request.getRequestDispatcher("sucess.jsp"); ...
UserAccessToken token = (UserAccessToken) request.getSession().getAttribute("UserAccessToken"); if(null==token){ token = util.getAccessToken3(Constants.APPID, Constants.SECRET,code); ...
String code = request.getParameter("code"); //取出生成的验证码(系统生成的) HttpSession session = request.getSession(); String rancode = (String)session.getAttribute("random"); if(code.equals(rancode))...
二者之间有什么区别? ......................................................................................................................................... 24 34、String 和 StringBuffer 的区别 .....
JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这换个ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后,服务器端该客户的Session对象才取消,并且和客户的...
session.setAttribute("accessid",request.getParameter("adminid")) ; session.setMaxInactiveInterval(1800) ; response.sendRedirect("newslist.jsp") ; }else response.sendRedirect("wrong.jsp") ; } %> ...
JSP页面中的6个基本元素包括指令、 、 表达式、动作标签和注释。 4. 和 是Servlet处理完数据后进行跳转的两种方式。 5. 在JavaScript中根据变量的作用域可以分为:全局变量和 两种。 6. 表格的 和 属性用于水平和...
网上购物系统设计和实现课程设计 四、程序关键代码及效果图 1、过滤器代码:[只要doFilter()方法] (1)adminfilter.java: HttpServletRequest requ=(HttpServletRequest)req; res.setCharacterEncoding("gb18030...
表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型...
if (request.getParameter("currentPage") == null||request.getParameter("currentPage").equals("")) { pageContext.setAttribute("currentPage", new Integer(0)); } else { pageContext....