Java Request、Response

一,请求消息数据的格式

  1. 请求行

    1. 请求方式:post、get

    2. 请求的地址:http://localhost/request_test.html,如果是以get方式提交,请求的数据会拼接在地址后:http://localhost/test?name=123

  2. 请求头:由若干个键值对组成

    每个键值对的格式:请求头的名称:请求头的值

    请求头是客户端在向服务器发起请求时,告知服务器的信息

    常见的请求头:

    1. user-agent:客户端告知服务器当前浏览器的版本信息,用于解决浏览器的兼容性问题

    2. referer:客户端告知服务器当前的请求是从哪里发来的,常用于防盗链

    3. cookie

  3. 请求体:封装了以post方式提交的请求数据,以get方式提交,提交的数据不会封装在请求体中

二,HttpServletRequest

2.1 获取请求消息

2.1.1 获取请求行相关

  1. getMethod():获取请求方式

  2. getRequestURI()

  3. getRequestURL()

  4. *getContextPath():获取请求的虚拟路径

  5. getQueryString():获取以get方式提交的数据

注:

  1. uri:统一资源标识符,getRequestURI()获取访问的资源在服务器中的相对路径

  2. url:统一资源定位符,getRequestURL()获取访问资源的绝对路径

2.1.2 获取请求头相关

  1. getHeader(String name):通过请求头的名称获取对应值

2.1.3 获取请求体相关

  1. getReader()

  2. getInputStream()

注:只能获取以post方式提交的数据

2.2 获取请求参数的通用方法

无论是以get还是post方式提交都可以通过以下方法获取请求的数据:

  1. getParameter(String name)

  2. getParameterValues(String name):返回String数组

注:中文乱码问题

原因:tomcat服务器的默认编码格式是iso8859-1,这种编码格式不支持中文,所以提交中文时会有乱码

  1. get

    // tomcat8及以上版本不会出现乱码
    // 如果是7版本,必须通过以下方法:
    String name = req.getParameter("name");
    name = new String(name.getBytes("iso8859-1"),"utf-8");
  2. post

    // 在接收到数据之前,使用:
    req.setCharacterEncoding("utf-8");

2.3 请求转发

请求转发是一种在服务器内部实现资源跳转的方式

步骤:

  1. 通过request对象获取请求转发器,同时指定要跳转到的目标地址

    RequestDispatcher rd = req.getRequestDispatcher("地址");
  2. 执行转发

    rd.forward(req,resp);

注:

  1. 请求转发后地址栏不变

  2. 请求转发只执行了一次请求

2.4 共享数据

域对象:一个有作用范围的对象,它可以在指定的范围内实现数据的共享

request:只能在一次请求中共享数据

域对象的通用方法:

  1. setAttribute(String key,Object obj)

  2. getAttribute(String key)

  3. removeAttribute(String key)

三,响应消息数据的格式

  1. 响应行

    1. 协议/版本(HTTP/1.1)、响应状态码

    2. 响应状态码:服务器告知浏览器本次请求的响应状态

      1. 状态码都是3位数字

      2. 分类:

        1. 1xx:服务器接收到了客户端的消息,但是消息没未处理完

        2. 2xx:表示成功

        3. 3xx:302重定向、304访问缓存

        4. 4xx:客户端错误,404找不到资源、405没有对应的doXxx()方法

        5. 5xx:服务器错误,500服务器内部发生异常

  2. 响应头:由若干个键值对组成

    每个键值对的格式:响应头的名称:响应头的值

    服务器告知客户端的消息

    常见的响应头:

    1. content-type:解决响应时的中文乱码问题,服务器告知客户端以何种编码格式来解析响应的数据

    2. content-disposition:服务器告知客户端当前文件的打开方式

    3. location:重定向时明确跳转的目标地址

  3. 响应体:服务器传输给客户端的数据

四,HttpServletResponse

4.1 设置响应消息

4.1.1 设置响应行

resp.setStatus(int code):设置响应状态码

4.1.2 设置响应头

resp.setHeader(String name,String value)

重定向:是一种实现资源跳转的方式

resp.setStatus(302);
resp.setHeader("location",目标地址);
​
// 简化写法
resp.sendRedirect("目标地址");

修改编码格式:

resp.setHeader("content-type","text/html;charset=utf-8");
​
// 简化写法
resp.setContentType("text/html;charset=utf-8");

4.1.3 设置响应体

  1. getWriter()

  2. getOutputStream()

4.2 重定向和请求转发

请求转发的特点:

  1. 地址栏不变

  2. 只执行了一次请求

  3. 不能访问其他服务器中的资源

重定向的特点:

  1. 地址栏变化

  2. 执行了两次请求

  3. 可以访问其他服务器中的资源

区别:

  1. 请求次数

  2. 地址栏

  3. 访问其他服务器

  4. 请求转发的性能优于重定向

注:如果使用的是request域对象来存储数据,那么携带数据跳转要选择请求转发

五,ServletContext

ServletContext对象是当前整个web应用的对象,这个对象有且只有一个,该对象在项目部署到服务器后,随着服务器的启动而创建,随着服务器的关闭而销毁。

ServletContext对象的获取方式:

  1. this.getServletContext()

  2. req.getServletContext()

5.1 共享数据

SevletContext也是一个域对象,它的作用范围是整个web应用

域对象的通用方法:

  1. setAttribute(String key,Object obj)

  2. getAttribute(String key)

  3. removeAttribute(String key)

5.2 获取全局初始化参数

步骤:

  1. 配置web.xml

    <context-param>
        <param-name>name</param-name>
        <param-value>zs</param-value>
    </context-param>
  2. 获取

    context.getInitParameter(String name);

5.3 获取服务器中资源的绝对路径

getRealPath():通过资源在项目中的相对路径获取它在服务器中的绝对路径

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值