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
,

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 无穷小分析理论_无穷小是一个过程

    无穷小分析理论_无穷小是一个过程一般读者对无穷小微积分只是略知一二,其实这是不够的。现将有关文章引用如下,供读者参考。袁萌 12月23日非标准分析概念又可称为实无穷小分析)(英语:Non-standardanalysis)是一个数学分支,它用严格定义的无穷小的数(infinitesimalnumber)的概念来构建数学分析大厦。1历史2动机2.1历史上的原因2.2教学上的原因2.3技术上的原因3无穷小分析的各种建立

  • mysql的慢查询日志怎么查看_mysql慢查询优化

    mysql的慢查询日志怎么查看_mysql慢查询优化MySQL数据库,慢查询日志

  • 本我、自我与超我_自我本我超我论文

    本我、自我与超我_自我本我超我论文本我、自我与超我

    2022年10月31日
  • opengrok使用教程之单工程(上)

    opengrok使用教程之单工程(上)OpenGrok简介有些情况下,我们需要在GB级别甚至几十GB级别且随时不断更新的大型代码(比如Android源码)里面搜索阅读源码,那么我们自然而然会有以下一些基本的需求:能够快速搜索代码代码可存放于本地/服务器代码之间可以跳转跨平台易于维护…显然SourceInsight、ctags、grep等工具在这些场景下就不太适合,于是有了OpenGrok这类代码搜索引擎。先看看维…

  • tlb表项_谷物对人体的好处

    tlb表项_谷物对人体的好处TLB:TranslationLookasideBuffer.根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内存地址,而CPU寻址时会优先在TLB中进行寻址。处理器的性能就和寻址的命中率有很大的关系。映射机制必须使一个程序能断言某个地址在其自己的进程空间或地址空间

  • MySQL 改动用户password及重置rootpassword「建议收藏」

    MySQL 改动用户password及重置rootpassword

发表回复

您的电子邮箱地址不会被公开。

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