Javaweb (二)

HttpServletRequest请求对象、HttpServletResponse响应对象、响应内容类型Content-Type、请求转发、重定向、ServletContext对象

01 HttpServletRequest

  • 概念:HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息

  • 特点:客户端(前端)发来的全部信息都可以从HttpServletRequest中得到

  • 优点:可以利用各种封装好的方法处理并得到数据

  • 一个完整的HTTP请求包括三个部分:请求行、请求头、请求体

  • 【开发者工具】-【Network】-【Name】-【Headers】中看到请求信息。

获取请求行信息:

(获取文件的路径和请求方式的方法)

  • 方法名 说明 示例结果

    getMethod()

    获取请求方式。 GET getRequestURL()

    获取完整路径。 http://localhost:8080/web/test getRequestURI()

    获取除了域名或者IP部分的路径。/web/test getServletPath()

    获取Servlet路径。 /test getContextPath()

    获取虚拟目录。 /web getQueryString() 获取参数,键=值,即?号 后面的部分。 name=%E5%BC%A0%E4%B8%89&age=18 getProtocol()

    获取协议及版本。 HTTP/1.1 getRemoteAddr()

    返回IP地址。 0:0:0:0:0:0:0:1(属于ipv6,服务器和客户端都 在同一台电脑上会出现)

  • 其中getServletPath()和getContextPath()最为常用

    //判断req的路径,当为/login.html和/login时放行
    if (req.getServletPath().equals("/login.html")||req.getServletPath().equals("/login")){
        filterChain.doFilter(servletRequest,servletResponse);
        return;
    ​
    }
获取请求头信息:

(一般用于通过服务器的限制)

  • 方法名 说明 String getHeader(String name)

    • 根据请求头名字获取对应的请求头值。

  • Enumeration getHeaderNames()

    • 获取所有的请求头名字。

String accept = req.getHeader("Accept");
Enumeration<String> headerNames = request.getHeaderNames();
    while (headerNames.hasMoreElements()) {
      String name = headerNames.nextElement();
      String value = request.getHeader(name);
      System.out.println(value);
    }
获取请求体信息:
  • 概念:请求体主要包含前端发送给后端的数据(参数)

  • 特点:

    • 1.对于GET请求, 一般不需要请求体, 因为GET参数直接体现在URI上。 2.对于POST请求, 需要请求体, 请求体里保存POST参数

  • 优点:可以存放更多数据且不会让URL过长

  • 方法名 说明

    • 1.BufferedReader getReader()

    获取字符输入流,只能操作字符数据。

    • 2.ServletInputStream getInputStream() 获取字节输入流,可以操作所有类型的数据(文件上传)。

    • 3.String getParameter(String name)

    根据参数名获取参数值,get、post通用。

请求转发:(服务器内部资源跳转,servlet之间)
/*
    1.通过request请求对象获取请求转发器对象。
    2.通过RequestDispatcher对象进行转发
*/
request.getRequestDispatcher("转发路径").forward(request, response);
/*
1.浏览器地址路径不发生变化。
2.转发是一次请求。
3.只能转发到服务器内部资源
/*不常用
//基于转发的共享数据
/*
    1.setAttribute(String name, Object object) // 存储数据
    2.getAttribute(String name) // 通过键获取数据
    3.removeAttribute(String name) // 通过键移除数据
*/

02 HttpServletResponse

  • 概念:服务器(后端)要给客户端(前端)的响应信息

  • 特点:需要设置文件类型和编码格式

  • 优点:前端只需要按照规范就能取出数据

/*核心方法:
1.void setStatus(int sc)
设置响应状态码
2.void setHeader(String name,String value)
设置一个带有给定的名称和值的 Header ,如果 name 已经存在,则覆盖旧的值
3.void setContentType(Stringtype)
设置被发送到客户端的响应的内容类型
4.PrintWriter getWriter()
用于往 body 中写入文本格式数据
*/
​
/*响应状态码:服务器告诉客户端浏览器本次请求响应的一个状态,都是三位数。
1. 1xx:服务器接收客户端消息,但是没有接收完成,等待一段时间后,发送1xx状态码
2. 2xx:成功,200
3. 3xx:重定向。302重定向,304访问缓存
4. 4xx:客户端错误。404找不到后台地址
5. 5xx:服务器端错误。500服务器内部错误
*/
​
/*重定向
特点:
1. 地址栏发生变化。
2. 重定向是两次请求,不能使用request对象来共享数据。
3. 重定向可以访问其他站点的资源
*/

03 ServletContext

 /*
概念:全局应用程序共享对象
特点:所有同项目的servlet都可以使用ServletContext的数据
优点:不会有request的限制,实现全局共享
获取方式
​
1. request.getServletContext() 虽然从request中引出,但不依赖request
2. this.getServletContext()
   核心方法
   1.setAttribute(name, value) 添加数据
   2.getArrtibute(name) 获取数据
   3.removeAttribute(name) 删除数据
   */
​
/* 获取MIME类型
1.概念:在互联网通信过程中定义的一种文件数据类型
*/
        String filename = "a.jpg";
        String mimeType = context.getMimeType(filename);
        System.out.println(mimeType);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宣布无人罪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值