最近做Java Web项目,在.jsp页面和servlet之间request和response还是有些混淆,查阅了一些资料,总结如下,方便以后使用:

首先,servlet接口是最基本的,提供的五个方法也不多说了,关键是了解清楚什么是request,什么事response。

 void destroy() 
          Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
 ServletConfig getServletConfig() 
          Returns a ServletConfig object, which contains initialization and startup parameters for this servlet.
java.lang.String getServletInfo() 
          Returns information about the servlet, such as author, version, and copyright.
 void init(ServletConfig config) 
          Called by the servlet container to indicate to a servlet that the servlet is being placed into service.
 void service(ServletRequest req, ServletResponse res) 
          Called by the servlet container to allow the servlet to respond to a request.

简单来说:

request对象是服务器对浏览器请求的封装,而response是服务器对服务器响应的封装。

request用来取出请求信息,而response则用来添加要返回给浏览器的信息。

从常用的途径来说:

request 是请求的载体,它附带着,请求的参数,ip,cookie,session,表单,字符编码,或者上传文件。你可以通过request去获得你所需要的信息。

response是响应的载体,你可以设置,表头,报文,响应文件类型,字符编码,response,自带一个输出流,当你需要将一个页面或者一个文件传到客户端时,你可以通过这个流来进行操作。

说到这里,我们不得不提一下request中最常用的几个方法(可能是我项目经验少,用到的不多),

java.lang.Object getAttribute(java.lang.String name) 
          Returns the value of the named attribute as an Object, or null if no attribute of the given name exists.
 java.lang.String getParameter(java.lang.String name) 
          Returns the value of a request parameter as a String, or null if the parameter does not exist.
 void setAttribute(java.lang.String name, java.lang.Object o) 
          Stores an attribute in this request.

很奇怪,有getAttributes()和setAttributes(),有getParameter()却没有setParameter()?那什么时候用getAttributes()什么时候用getParameter()呢?

1. 好,首先来看getParameter(),getParameter()用来去post或者get提交表单时候,获得表单里的数据,或者是url上的参数,

什么是表单里的数据呢?看这段代码:

<form action="HelloFormServlet" method="GET">
网址名:<input type="text" name="name">
<br />
网址:<input type="text" name="url" />
<input type="submit" value="提交" />
</form>

HTML 表单和提交按钮传递两个值。我们将使用HelloFormServlet 来处理输入

在Servlet中:

String name =new String(request.getParameter("name");
String url = new String(request.getParameter("url"));

那什么是url上的参数呢?比如这样的:

<a href="/ControlCenterServlet?NewTopic.jsp&BoardID=1">××</a>

获取方式也是通过getParameter():

request.getParameter("BoardID");

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

2.而setAttributes()和getAttribute()发生在,当两个Web组件之间为转发关系时,转发目标组件通过setAttributes(),getAttribute()方法来和转发源组件共享request范围内的数据。

假定a.jsp和b.jsp之间为转发关系

a.jsp希望向b.jsp传递当前的用户名字,如何传递这一数据呢?先在a.jsp中调用setAttribute()方法:

<%
String username=request.getParameter("username");
request.setAttribute("username",username);
%>
<!-- 转发到b.jsp -->
<jsp:forward page="b.jsp" />

在b.jsp中通过getAttribute()方法获得用户名字:

<% String username=(String)request.getAttribute("username"); %>
username: <%= username %>

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

这篇博客将上述三个方法概括为:

http://blog.csdn.net/zkflame/article/details/51096836

request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据。
request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。
getAttribute是返回对象,getParameter返回字符串
总的来说:
request.getAttribute()方法返回reques,sessiont范围内存在的对象
request.getParameter()方法是获取http提交过来的数据

最新文章

  1. [转] 给ubuntu中的软件设置desktop快捷方式(以android studio为例)
  2. Java_新浪微博SDK_jar包下载
  3. [ACM_几何] Pipe
  4. 为Apple Push开发的PHP PEAR 包:Services_Apple_PushNotification
  5. js-变量、作用域和内存问题,引用类型
  6. ES6 fetch函数与后台交互
  7. mrp功能分类
  8. C# gridview分頁導出excel
  9. 【HDOJ】1406 Ferry Loading III
  10. JSP中页面定时刷新
  11. Cmake ,Out of Source Build
  12. web测试 结果存储类型为“Database”,但尚未指定结果储存库连接字符串
  13. SQL Server 远程链接服务器详细配置
  14. JavaScript 基本类型值-Undefined、Null、Boolean
  15. springboot数据库连接池使用策略
  16. [Swift]LeetCode709. 转换成小写字母 | To Lower Case
  17. Ubuntu 16.04 LTS 安装 miniconda
  18. JS封装动画框架,网易轮播图,旋转轮播图
  19. P1290 欧几里德的游戏
  20. Linux下安装maven(mvn命令)

热门文章

  1. java实现汉字转为拼音
  2. 【第一篇笔记】C# 全局容错,全局异常
  3. grep和管道
  4. Oracle 内置函数
  5. DBCP数据库连接池原理分析
  6. spring 类注入失败,解决之道
  7. intellijidea课程 intellijidea神器使用技巧2-2 精准搜索
  8. JSP 里 的 basePath
  9. mysql:数据库保存时间的类型——int和datetime的区别
  10. Git学习环境搭建和git对用户的增删改查命令