JavaWeb(四) 请求(request)与响应(response)

1.请求响应流程图

Request: 请求对象: tomcat服务器为我们创建, 使用这个对象获取请求相关的数据

                父接口: ServletRequest, 子接口: HttpServletRequest

Response: 响应对象: tomcat服务器为我们创建, 使用这个对象给客户端响应数据

                 父接口: ServletResponse: 子接口: HttpServletResponse

2 Request对象

功能:

  • 获取请求头

  • 获取请求参数

  • 域功能 实现数据传递

  • 请求转发 实现页面之间跳转

请求: 分为请求头(一堆的key/value键值对),请求体(get请求没有请求体, post请求才有请求体)

2.1请求头, 不重要

1. String getHeader(String name) //根据请求头name获取请求头的value 
​
2.Enumeration<String> getHeaderNames()  //获取所有的请求头属性name
​
​
3.Enumeration<String> getHeaders(String name)  //根据请求头name获取请求头的value,但是value是多个值
​
​
4. int getIntHeader(String name)   //根据请求头name获取请求头的value,但是value是整数,可以省略数据类型转换
​
​

2.2获取请求参数 重要

使用boostrap前端ui框架:

官网: Bootstrap v3 中文文档 · Bootstrap 是最受欢迎的 HTML、CSS 和 JavaScript 框架,用于开发响应式布局、移动设备优先的 WEB 项目。 | Bootstrap 中文网

使用步骤:

  1. 下载bootstrap

  2. 把bootstrap.css font文件, bootstrap.js拷贝到你项目

  3. 引入jquery.js

  1. 在你的页面引入boostrap.css和boostrap.js 以及jquery.js

     <!--
        ./boostrap/css/bootstrap.css: 相对路径
        /项目名/boostrap/css/bootstrap.css: 绝对路径  /boostrap/css/bootstrap.css
​
      -->
      <link rel="stylesheet" type="text/css" href="./boostrap/css/bootstrap.css">
      <script type="text/javascript" src="./jquery/jquery-2.1.0.min.js"></script>
      <script type="text/javascript" src="./boostrap/js/bootstrap.js"></script>

request获取请求参数的方法:

1. String getParameter(String name) //根据请求参数名获取请求参数值
//注意: 
   // 1) 前端传递这个请求参数, 得到请求参数value
       // 2) 前端传递这个请求参数,username=,得到""
       // 3) 前端传递没有这个请求参数, 得到null
2. String[] getParameterValues(String name) //根据请求参数名获取请求参数值(一个name对应多个value)
3. Enumeration<String> getParameterNames() //获取所有的请求参数名
4. Map<String,String[]> getParameterMap() //获取所有的请求参数, 并且把请求参数保存到map集合

如果表单没有name属性, 该表单无法传递到后端

2.3域对象功能 request域

request域中的数据,只能同一次请求内有效

void setAttribute(String name, Object o)//往域中保存数据
​
Object getAttribute(String name) //从域中获取数据
​
void removeAttribute(String name) //从域中删除数据

2.4请求转发

服务器内部跳转

方法:

RequestDispatcher getRequestDispatcher(String path) //得到转发器RequestDispatcher  path转发的资源路径

RequestDispatcher:方法

void forward(ServletRequest request,
      ServletResponse response)
        throws ServletException,
               IOException //转发

2.5 GET请求和POST请求的区别:

  • GET请求:

    • 请求参数会在浏览器的地址栏中显示,所以不安全;

    • 请求参数长度限制长度在1K之内;

    • GET请求没有请求体,无法通过request.setCharacterEncoding()来设置参数的编码;

  • POST请求:

    • 请求参数不会显示浏览器的地址栏,相对安全;

    • 请求参数长度没有限制;

3

3 response 对象

response对象的功能分为以下四种:

  • 设置响应头信息;

  • 发送状态码;

  • 设置响应正文;

  • 重定向;

3.1Response响应对象

request: 请求对象, 封装了客户端给服务器的相关的数据

  • 请求头 getHeader()

  • 请求参数

  • 域功能

  • 请求转发

3.2响应正文

通过输出流, 通过Response得到网络输出流

ServletOutputStream getOutputStream() //得到响应字节输出流, 万能流
//输出中文,出错
​
PrintWriter getWriter() //得到响应字符输出流, 输出字符

注意:

这个两个流不能同时使用

Response的输出流默认使用的编码: ISO-8859-1, 这种编码不支持中文,

使用Response的

void setCharacterEncoding(String charset)

设置输出流的编码,但是这个方法无法设置页面的编码, 页面编码不是UTF-8, GBK, 输出流的编码:UTF-8,

解决编码问题:

  1. 设置输出流编码

  2. 设置页面的编码

void setContentType(String type) //设置响应头contentType: 
  response.setContentType("text/html;charset=UTF-8");    

设置页面的类型以及编码,还会帮我们设置输出流的编码

3.3设置响应头

可以使用response对象的setHeader()方法来设置响应头!使用该方法设置的响应头最终会发送给客户端浏览器!

  • response.setHeader(“content-type”, “text/html;charset=utf-8”):设置content-type响应头,该头的作用是告诉浏览器响应内容为html类型,编码为utf-8。而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”);

    简写的方式:

    response.setContentType("text/html;charset=UTF-8");
  • response.setHeader("Refresh","5; URL=百度一下,你就知道"):5秒后自动跳转到百度主页。

  • response.setStatus(200):设置状态码;

  • response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。

3.4重定向

代码:

Response的

void sendRedirect(String location)

重定向与转发区别:

  1. 重定向是两次请求, 转发是一次请求

  2. 重定向的客户端的地址栏发生变化, 转发客户端地址栏不发生变化

  3. 重定向是客户端的跳转, 转发是服务器内部的跳转

重定向资源可以是服务器的资源,也可以是服务器之外的资源

转发的资源只能是服务器内部的资源

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

在下张仙人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值