request中的那些方法到底是干什么的?
最近做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提交过来的数据
request中的那些方法到底是干什么的?的更多相关文章
- Request中的各种方法
前言 Request中方法众多,对于Java Web程序员来说,种种方法都会在工作中常常用到.Request由于不是JDK的一部分,这些方法的用法也没有专门的API可以查,所以在工作中遇到Reques ...
- spinner中的onNothingSelected方法到底什么时候调用?
这个东东大家在开发中可能不太能用到,所以总是容易被忽略,由于工作原因,我最近琢磨了一下onNothingSelected方法的调用时机问题,其实很简单,只要我们稍微看一下源码就明白了: /** * C ...
- java.lang.String中的replace方法到底替换了一个还是全部替换了。
你没有看错我说的就是那个最常用的java.lang.String,String可以说在Java中使用量最广泛的类了. 但是我却发现我弄错了他的一个API(也可以说是两个API),这个API是关于字符串 ...
- nginx 自动忽略request中header name包含下划线参数的解决方法
使用nginx过程中遇到了个问题,就是request中的header name中如果包含下划线会自动忽略掉,导致服务器接收不到该字段的内容,以下为解决方法: nginx默认request的header ...
- Java--获取request中所有参数的方法
我们通常用到request获取某个参数的方法: String value=request.getparameter("key"); 如果想要获取request中所有的参数呢? re ...
- Spring中获取request的几种方法,及其线程安全性分析
前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...
- laravel中请求用例$request可用的一些方法小结
laravel中$request可用的一些方法小结 1,请求方法的获取 $method = $request->method(); 2,检测请求方法 $res = $request->is ...
- [No000016E]Spring 中获取 request 的几种方法,及其线程安全性分析
前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...
- Spring中获取request的几种方法,及其线程安全性分析(山东数漫江湖)
前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...
随机推荐
- centos6.3 配置防火墙,开启80端口、3306端口
vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火 ...
- C#测试程序运行时间的方法
C#测试程序运行时间的三种方法如下: (1)Datetime DateTime dtBegin = System.DateTime.Now;... DateTime dtEnnd = System.D ...
- 如何修改eclipse的web项目默认浏览器
- msfconsole 控制台使用和操作
msfconsole 参数 Msfconsole提供了一个一体化的集中控制台.通过msfconsole,你可以访问和使用所有的metasploit的插件,payload,利用模块,post模块等等.M ...
- Day1 了解web前端
Day1 了解web前端 一.职业发展路线: 前端页面制作.前端开发.前端架构师 二.1)前端工程师主要职责: 利用HTML/CSS/JavaScript等各种Web技术进行客户端产品的开发.完 ...
- 【起航计划 015】2015 起航计划 Android APIDemo的魔鬼步伐 14 App->Activity->Translucent Blur 模糊背景
这个例子和Translucent不同的一点是Blur,也就是显示在当前Activit背后的其它Activity以模糊方式显示. 这是通过window对象Flag来设置的. // Have the sy ...
- 使用COCOStudio中各种资源
UI Editor: 先把项目导出的json和资源文件放到TestGame项目的Resource目录中 1. 在HelloWorldScene.cpp顶部添加引用#include "coco ...
- Eclipse JSP 页面设置 charset=UTF-8
windows —> Preferences —> 搜索框中输入:JSP,设置如下:
- senium
http://webdriver.googlecode.com 所以CTRL属于Modifier Key,需要这样写: Actions actionObject = new Actions(drive ...
- C#多线程Thread
在项目中经常用到线程Thread,先做个简单记录,后面再完善下,方便以后参考.本人技术有限,如有不同见解之处,欢迎博友批评指正. 执行的线程Thread分无参数的,一个参数,多个参数的.直接看代码吧. ...