Request对象的用法「建议收藏」

Request对象的用法「建议收藏」request对象,是浏览器访问服务器的一次请求对象,封装了http协议请求头和请求正文数据                         是一次请求,数据于多次请求是不共享的,但是请求的对象是同一个System.out.println(request); if(request.getAttribute(“name”)==null){ request.setAttribute

大家好,又见面了,我是你们的朋友全栈君。

request对象,是浏览器访问服务器的一次请求对象,封装了http协议请求头和请求正文数据

                          是一次请求,数据于多次请求是不共享的,但是请求的对象是同一个

System.out.println(request);
		if(request.getAttribute("name")==null){
			request.setAttribute("name", "jack");
			System.out.println("no");
		}else{
			System.out.println(request.getAttribute("name"));
		}

结果:

org.apache.catalina.connector.RequestFacade@574a7ff6
no
org.apache.catalina.connector.RequestFacade@574a7ff6
no
org.apache.catalina.connector.RequestFacade@574a7ff6
no

发现请求对象虽是同一个,但是数据是不共享的,可以看做每次请求都是独立的request对象

note:在转发时。request对象是共享的,数据能共享

request中的函数:

定义

public interface ServletRequest

定义一个Servlet引擎产生的对象,通过这个对象,Servlet可以获得客户端请求的数据。这个对象通过读取请求体的数据提供包括参数的名称、值和属性以及输入流的所有数据。

方法

1、getAttribute

public Object getAttribute(String name);

返回请求中指定属性的值,如果这个属性不存在,就返回一个空值。这个方法允许访问一些不提供给这个接口中其他方法的请求信息以及其他Servlet放置在这个请求对象内的数据。

2、getAttributeNames

public Enumeration getAttributeNames();

返回包含在这个请求中的所有属性名的列表。

3、getCharacterEncoding

public String getCharacterEncoding();

返回请求中输入内容的字符编码类型,如果没有定义字符编码类型就返回空值。

4、getContentLength

public int getContentLength();

请求内容的长度,如果长度未知就返回-1。

5、getContentType

public String getContentType();

返回请求数据体的MIME类型,如果类型未知返回空值。get方式返回null,post方式返回application/…….请求协议头

6、getInputStream

public ServletInputStream getInputStream() throws IOException;

返回一个输入流用来从请求体读取二进制数据。如果在此之前已经通过getReader方法获得了要读取的结果,这个方法会抛出一个IllegalStateException。

7、getParameter

public String getParameter(String name);

以一个String返回指定的参数的值,如果这个参数不存在返回空值。例如,在一个HTTP Servlet中,这个方法会返回一个指定的查询语句产生的参数的值或一个被提交的表单中的参数值。如果一个参数名对应着几个参数值,这个方法只能返回通过getParameterValues方法返回的数组中的第一个值。因此,如果这个参数有(或者可能有)多个值,你只能使用getParameterValues方法。

8、getParameterNames

public Enumeration getParameterNames();

返回所有参数名的String对象列表,如果没有输入参数,该方法返回一个空值。

9、getParameterValues

public String[] getParameterValues(String name);

通过一个String对象的数组返回指定参数的值,如果这个参数不存在,该方法返回一个空值。

10、getProtocol

public String getProtocol();

返回这个请求所用的协议,其形式是协议/主版本号.次版本号。例如对于一个HTTP1.0的请求,该方法返回HTTP/1.0。

11、getReader

public BufferedReader getReader() throws IOException;

这个方法返回一个buffered reader用来读取请求体的实体,其编码方式依照请求数据的编码方式。如果这个请求的输入流已经被getInputStream调用获得,这个方法会抛出一个IllegalStateException。

12、getRemoteAddr

public String getRemoteAddr();

返回发送请求者的IP地址。

13、getRemoteHost

public String getRemoteHost();

返回发送请求者的主机名称。如果引擎不能或者选择不解析主机名(为了改善性能),这个方法会直接返回IP地址。

14、getScheme

public String getScheme();

返回请求所使用的URL的模式。例如,对于一个HTTP请求,这个模式就是http。

15、getServerName

public String getServerName();

返回接收请求的服务器的主机名。

16、getServerPort

public int getServerPort();

返回接收请求的端口号。

17、setAttribute

public void setAttribute(String name, Object object);

这个方法在请求中添加一个属性,这个属性可以被其他可以访问这个请求对象的对象(例如一个嵌套的Servlet)使用。

18丶getLocale();

      获取客户端的国际化信息—浏览器Internet选项中设置的语言环境

        Locale loc = request.getLocale();


注:以下方法将被取消

getRealPath

public String getRealPath(String path);

返回与虚拟路径相对应的真实路径,如果因为某种原因,这一过程不能进行,该方法将返回一个空值。

这个方法和ServletContext接口中的getRealPath方法重复。在2.1版中,ServletContext接口将阐明一个 Servlet所能用的所有的路径的映射。该方法执行的结果将会与ServletContext中getRealPath方法的结果完全一样

演示参数接受的多种方式:

<span style="color:#000000;"><form action="RequestServlet" method="post">
      Name:<input type="text" name="name"/><br/>
      Age:<input type="text" name="age"/><br/>
            爱好:
       <input type="checkbox" name="hoby" value="MUSIC"/>音乐   
       <input type="checkbox" name="hoby" value="MTV"/>电视  
       <input type="checkbox" name="hoby" value="driver"/>开车<br/>
             性别:
       <input type="radio" name="sex" value="0" checked="checked"/>男 
       <input type="radio" name="sex" value="1"/>女
      <input type="submit" value="提交"/>
    </form></span>


后台接受:

<span style="color:#000000;">public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		//明确知道单一值的参数名:(文本/密码框/单选按钮/选择下拉框)
		String name=request.getParameter("name");
		String age=request.getParameter("age");
		String radio=request.getParameter("sex");
		System.out.print(name+","+age+","+radio+",");
		//明确知道多值的参数名:(复选框)
		String[] hoby=request.getParameterValues("hoby");
		for(String value:hoby){
			System.out.print(value+",");
		}
		System.out.println("-------------------");
		//不明确单一值参数名和参数值Enumeration<String>遍历
		Enumeration<String> en=request.getParameterNames();
		while(en.hasMoreElements()){
			String paramName=en.nextElement();
			System.out.print(paramName+":");
			//单一值
			//String paramValue=request.getParameter(paramName);
			//多值
			//String paramValue=request.getParameterValues(paramName);
			//混合
			String[] paramValue=request.getParameterValues(paramName);
			for(String value:paramValue){
				System.out.print(value+",");
			}
			System.out.println();
		}
		System.out.println("------------------");
		//不明确参数名和参数值Map<String, String[]>,利用Iterator(迭代器)遍历
		Map<String, String[]> map=request.getParameterMap();
		Iterator<Entry<String, String[]>> it=map.entrySet().iterator();
		while(it.hasNext()){
			Entry<String, String[]> e=it.next();
			String paramName=e.getKey();
			System.out.print(paramName+":");
			String[] paramValue=e.getValue();
			for(String value:paramValue){
				System.out.print(value+",");
			}
			System.out.println();
		}
	}</span>


结果:

李四,12,1,MUSIC,driver,——————-
sex:1,
age:12,
name:李四,
hoby:MUSIC,driver,
——————
sex:1,
name:李四,
age:12,
hoby:MUSIC,driver
,

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133379.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 试题 H: 人物相关性分析 第十届蓝桥杯

    试题 H: 人物相关性分析 第十届蓝桥杯

    2021年7月4日
    70
  • quartus ii安装教程9.0激活成功教程教程_quartus ii 13.1安装教程

    quartus ii安装教程9.0激活成功教程教程_quartus ii 13.1安装教程一、首先是QuartusII13.0.1软件的下载如果你没有那么高的要求,用个低版本的QuartusII就足够了,而且低版本的软件比较稳定,为了免去大家找安装文件版本号不匹配的情况,我在这里把我所用的QuartusII13.0.1版本的源安装文件、激活成功教程文件和器件库(Cyclone,CycloneII,CycloneIII,CycloneIVdevices…

    2022年10月15日
    3
  • 数据恢复案例之Linux服务器数据恢复成功案例

    数据恢复案例之Linux服务器数据恢复成功案例一、服务器数据恢复故障描述介绍数据恢复案例前照例先介绍故障服务器的物理状况。本次数据恢复的服务器是linux操作系统,某品牌730系列服务器,MD3200系列存储。导致数据丢失的原因是机房意外断电导致系统无法正常启动,客户管理员对无法访问的服务器进行了修复操作后进入系统查看数据,服务器部分文件已经丢失。于是客户管理员联系了数据恢复中心进行服务器数据恢复。二、服务器数据恢复故障分析1.备…

    2022年5月9日
    55
  • SpringBoot2.0集成WebSocket,实现后台向前端推送信息

    SpringBoot2.0集成WebSocket,实现后台向前端推送信息什么是WebSocket?-初次接触WebSocket的人,都会问同样的问题:我们已经有了HTTP协议,为什么还需要另一个协议?它能带来什么好处?-答案很简单,因为HTTP协议有一个缺陷:***通信只能由客户端发起***,HTTP协议做不到服务器主动向客户端推送信息。https://github.com/moshowgame/spring-cloud-study/tree/master/spring-cloud-study-websocket

    2022年5月3日
    50
  • 用Xshell连接虚拟机Linux「建议收藏」

    用Xshell连接虚拟机Linux「建议收藏」首先,要将虚拟机中的Linux系统设置为桥接模式。然后进一步确认虚拟机的ip地址跟本机地址在同一个网段(要ping的通)。具体操作如下:1、查看我本机的IP地址是:10.253.0.512、继续查看虚拟机中linux系统的IP地址是:10.253.0.91然后在windows上ping一下:可见完全是ping的通的。3、接下来配置Linux的

    2022年9月22日
    1
  • jmap使用详解_jmap作用

    jmap使用详解_jmap作用1. jmap-heappid     查看Java 堆(heap)使用情况       usingthread-localobjectallocation.       ParallelGCwith4thread(s)         //GC方式        HeapConfiguration:      //堆内存初始化配置      …

    2025年7月23日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号