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对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...
随机推荐
- struts2的常量
常量名 常量值 说明 struts.i18n.encoding UTF-8 应用中使用的编码 struts.objectFactory.spring.autoWire name 和spring框架整合 ...
- Java设计模式—模板方法模式
模板方法模式仅仅使用了Java的继承机制,但它是一个应用非常广泛的模式. 1.定义: 一个操作中的算法的框架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重定义该 ...
- Linux 学习 三, linux 文件结构
linux 的文件结构 linux 下的bin 目录,包含了常用的命令应用程序 /bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat.cp.dmesg.gzip.kill.l ...
- ListView中CheckBox错乱解决
思路: ListView在复用的时候会出现很多问题,CheckBox状态会出现错乱,解决思路: 1.使用Map集合的键值对的形式来存放position位置上CheckBox的状态 2.监听CheckB ...
- [topcoder]TheGridDivTwo
http://community.topcoder.com/stat?c=problem_statement&pm=13628&rd=16278 标程是BFS,我用DFS,都可解. 这 ...
- Properties的使用以及配置文件值的获取
一.项目的部署如下,现在要获取SystemGlobals.properties中的值 二.代码如下: package com.util; import java.io.IOException; imp ...
- MySQL的四种主要存储引擎
在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库.而在设计表的时候,我们都会关注一个问题,使用什么存储引擎.等一下,存储引擎?什么是存储引擎? 什么是存储引擎? ...
- org.apache.xmlbeans.XmlException: error: does not close tag
使用myeclipse的jax自动生成webservice , 或者serviceImpl通过@webservice来实现webservice时, 使用soap UI (我测试使用的版本 5.2.1) ...
- Python-Django框架学习笔记——第一课:Hello World
Python Django 有诗云: 孤山寺北贾亭西,水面初平云脚低. 几处早莺争暖树,谁家新燕啄春泥. 乱花渐欲迷人眼,浅草才能没马蹄. 最爱湖东行不足,绿杨阴里白沙堤. 今天在信阳游玩,有幸来到信 ...
- 1.3配置存储单元(nbu重删池)
1.3配置存储单元 在备份或归档操作时,NetBackup将数据通过存储单元写到物理介质上,NetBackup支持三种类型的存储单元.即: 介质管理器.磁盘和NDMP. 1.3.1介质管理存储单元配置 ...