Servlet入门(二)Request

本文主要介绍了ServletRequest,特别是HttpServletRequest对象在处理HTTP请求时的角色。我们探讨了如何通过Request对象获取请求行、请求头、请求参数等信息,并讨论了Request作为域对象的作用,如请求转发,以及其在Servlet间数据共享的应用。
摘要由CSDN通过智能技术生成

1.ServletRequest

ServletRequest由Servlet容器来管理,当客户请求到来时,容器创建一个ServletRequest对象,封装请求数据,同时创建一个ServletResponse对象,封装响应数据。这两个对象将被容器作为service()方法的参数传递给Servlet,Servlet利用ServletRequest对象获取客户端发来的请求数据,利用ServletResponse对象发送响应数据。

2.HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息;

  • 通过Request对象进行的常用操作:
  1. 获取客户机信息
  2. 获取请求头信息
  3. 获取请求参数
  4. 利用请求域传递对象
  • request对象继承体系结构:
    ServletRequest – 接口
    | 继承
    HttpServletRequest – 接口
    | 实现
    org.apache.catalina.connector.RequestFacade 类(tomcat)

3.Request常用方法

1.获取请求行信息

String getMethod()  获取请求方式的类型
String getRequestURI()  获取请求行中的资源名部分:/项目名/资源名
StringBuffer getRequestURL()  获取客户端发出请求完整URL 如http://localhost:8080/项目名:资源名
    注:
    uri: 统一资源标识符,用来标识一个资源,资源路径(相当于身份证)
    url: 统一资源定位符,是一种具体的URI,可以用来标识一个资源.并且指明了如何定位一个资源(相当于身份证中的地址)
String getProtocol()  获取当前协议的名称和版本
String getRemoteAddr()  获取客户端的IP地址

例子:

        //1.String getMethod()  获取请求方式的类型
        String method = request.getMethod();//GET
        //2.String getRequestURI()  获取请求行中的资源名部分:/项目名/资源名
        String requestURI = request.getRequestURI();///demo//RequestDemo1
        //3.StringBuffer getRequestURL()  获取客户端发出请求完整URL 如http://localhost:8080/项目名:资源名
        StringBuffer requestURL = request.getRequestURL();//http://localhost:8080/demo//RequestDemo1
        //4.String getProtocol()  获取当前协议的名称和版本
        String protocol = request.getProtocol();//HTTP/1.1
        //5.String getRemoteAddr()  获取客户端的IP地址
        String remoteAddr = request.getRemoteAddr();//0:0:0:0:0:0:0:1

2.获取请求头信息

String getHeader(String name)  以String 的形式返回指定请求头的值
Enumeration getHeaderNames() 返回此请求包含的所有头名称的枚举

3.获取请求参数

String getParameter(String name)  根据表单的name属性 获取对应的值
String[] getParameterValues(String name)  获取name相同的所有value 如复选框
Map getParameterMap()  参数名作为key,参数值作为value,封装到map中
void setCharacterEncoding(String env)  设置请求体的编码
    注意:获取请求参数之后,调用setCharacterEncoding方法无效

4.其他作用

1.获取工程名字

String getContextPath()  获取工程名字

2.获取当前

String getServletPath()  获取获得客户端所请求的脚本文件的文件路径

3.作为域对象

域对象是一个容器,这种容器主要用于servlet与servlet之间的数据传输使用的;request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据。

void setAttribute(String name, Object o)  设置数据到request域
Object getAttribute(String name)  从request域获取数据
void removeAttribute(String name)  从request域移除数据

4.请求转发

一种在服务器内部的资源跳转方式

RequestDispatcher getRequestDispatcher(String path) 获取请求转发器(request对象方法)
void forward(ServletRequest request, ServletResponse response) 将请求转发到另一个资源(servlet)上(RequestDispatcher对象的方法)

使用步骤

  1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
  2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)

特点

  1. 浏览器地址栏路径不发生变化
  2. 只能转发到当前服务器内部资源中
  3. 转发是一次请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值