Request对象简介

1.1 HttpServletRequest对象

在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。HTTP请求消息分为请求行、请求头和请求消息体三部分。

1.1.1获取请求行信息的相关方法:

方法声明

功能描述

String getMethod()

获取请求方式(get/post)

String getContextPath()

获取当前项目名

String getRemoteAddr()

获取请求者的IP

String getProtocol()

获取请求协议和版本

String getRequestURI()

获取请求行的资源名称

String getQueryString

获取请求行的参数

(资源路径后面?后的所有内容)

String getServletPath()

获取Servlet的名称或所映射路径

String getRemoteHost()

获取请求者完整主机名,无法解析则返回IP

int getRemotePort()

获取请求者网络连接的端口号

String getLocalAddr()

获取web服务器接收当前请求者的IP

String getLocalName()

获取服务器接收当前请求者IP对应的主机名

int getLocalPort()

获取web服务器接收当前请求者的端口号

String getServerName()

获取当前请求指向的主机名,

Host头字段对应的主机名

int getServerPort()

获取当前请求所连接的服务器端口号,

Host头字段对应的端口号

String getScheme()

获取请求的协议名,例如http、https或ftp

StringBuffer getRequestURL()

获取客户端发出请求的完整URL,包括协议、服务器名、端口号、资源路径,不包括后面的参数

1.1.2获取请求消息头的相关方法

方法声明

功能描述

String getHeader(String name)

获取指定头字段的值,如果没有头字段则返回null,如果有多个头字段则返回第一个

Enumeration

getHeaders(String name)

返回Enumeration集合对象,该集合对象由请求消息中出现的某个指定名称的所有头字段值组成。一般一个头字段名出现一次。

Enumeration

getHeaderNames()

获取一个包含所有请求头字段的Enumeration集合对象

int getIntHeader(String name)

获取指定名称的头字段,将其值转成int类型。不存在指定头字段返回 -1,不能转成int型将发生NumberFormatException异常

Long getDateHeader(String name)

获取指定头字段的值,将其按GMT时间格式转成代表日期/时间的长整数,毫秒单位

常见的请求头:

user-agent:获取浏览器的内核信息

Referer:获取网页来源(若地址是直接在地址栏上敲的,返回null)

1.1.3操作请求体(获取post请求参数)(get没有请求体)

String getParameter(String name)

获取某个指定名称的参数值,如果请求消息中没有包含指定名称的参数,返回null;如果指定名称的参数存在但没有设置值,返回空字符串;如果请求消息中包含多个该指定名称的参数,返回第一个出现的参数值。

String[] getParameterValues(String name)

HTTP请求消息中可以有多个相同名称的参数(通常由一个包含有多个同名的字段元素(复选框,下拉列表)的form表单生成),如果要获得HTTP请求消息的同一个参数名所对应的所有参数值,就使用此方法。

Map getParameterMap()

将请求消息中的所有参数名和值装入一个Map对象中返回。

Enumeration getParameterNames()

返回一个包含请求消息中所有参数名的Enumeration对象,在此基础上,可以对请求消息中的所有参数进行遍历处理。

1.1.4 post请求参数的乱码解决

解决方式一:通用方法(针对get请求和post请求)

new String(数据.getBytes(“iso8859-1”),”utf-8”);

解决方式二:(只针对post请求)

request.setCharacterEncoding(“utf-8”);

通过指定的编码方式编码

URLEncoder的encode(String s, String charset);

通过指定的编码方式解码

URLDecoder的decode(String s, String charset);

 

1.2 BeanUtils

BeanUtils是Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。

需要导入的jar包:

commons-beanutils-1.8.3.jar

commons-logging-1.1.1.jar

BeanUtils工具常用工具类有两个:BeanUtils、ConvertUtils。BeanUtils用于封装数据,ConvertUtils用于处理类型转换。

BeanUtils的常用方法:

populate(Object bean, Map<String, String[]> properties)

将Map数据封装到指定JavaBean中,一般用于将表单的所有数据封装到JavaBean中。

ConvertUtils的常用方法:

register(Converter converter, Class clazz)

注册类型转换器。

 

1.3通过Request对象传递数据

Request对象不仅可以获取一系列数据,还可以通过属性传递数据。

void setAttribute()方法

将一个对象与一个名称关联后存储到ServletRequest对象中。

如果ServletRequest对象中已经存在指定名称的属性,此方法会先删除原先的属性,再添加新的属性。如果传递给此方法的属性值为null,则删除指定名称的属性,效果等同于removeAttribute()方法。

String getAttribute()方法

用于从ServletRequest对象中返回指定名称的属性对象。

void removeAttribute()方法

用于从ServletRequest对象中删除指定名称的属性。

Enumeration getAttributeNames()方法

用于返回一个包含ServletRequest对象中的所有属性名的Enumeration对象,在此基础上可以对ServletRequest对象中的所有属性进行遍历处理。

注意:只有属于同一个请求中的数据才可以通过ServletRequest对象传递数据。

 

1.4请求转发

在Servlet中,如果当前Web资源不想处理请求时,可以通过forward()方法将当前请求传递给其它Web资源处理,这种方式称为请求转发。

请求转发和重定向的区别:

(1)重定向的地址栏会发生变化,请求转发的地址栏不发生变化。

(2)重定向两次请求两次响应,请求转发一次请求一次响应。

(3)重定向的路径需要加工程名,请求转发的路径不能加工程名。

(4)重定向可以跳转到任意网站,请求转发只能在服务器内部进行转发。

(5)重定向不能用request的方法,请求转发可以用request的方法。

转载于:https://my.oschina.net/jinyeyaonitian/blog/824944

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值