ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HttpServletResponse接口和HttpServleRequest接口

2019-09-16 21:38:04  阅读:248  来源: 互联网

标签:请求 响应 对象 request HttpServletResponse 接口 HttpServleRequest response 重定向


HttpServletResponse对象

每一个Servlet创建好之后都有一个请求对象和一个响应对象,Tomcat将这两个封装好的对象,传到service的方法中去
HttpServletResponse封装的是响应对象
每一个响应对象都包含三个部分:响应行、响应头、响应体

在这里插入图片描述

响应行

响应行包含了协议、协议的版本、状态码、描述

响应行的设置:
  • response.setStatus(304);:正常情况下状态码设置,页面无对应状态处理
    在这里插入图片描述
  • response.sendError(404);:异常情况下状态码的设置,页面会直接处理响应的状态
    在这里插入图片描述
  • response.sendError(400, “请看清楚你的路径”);:可以设置提示信息
    在这里插入图片描述
关于响应相关的状态码
  • 100–199:表示请求到达服务器但是没有处理完成,如果需要完成全部操作需要再次请求
  • 200–299:表示服务器已经处理完成请求(正常200)
  • 300–399:表示服务器将这个资源转移(页面重定向 304)
  • 400–499:表示资源无法找到(找不到指定的资源或文档不存在 404)
  • 500–599:服务器内部错误(Java代码出现异常 空指针 500)

响应头

响应头的设置
  • setHeader(param1, param2):设置响应头中的key-value,当有多个相同的key设置时,只会保存最后一对
  • addHeader(param1, param2):设置响应头中的key-value,当有多个相同的key设置时,不会覆盖前面的

(关于参数以后详解)

响应体

响应体就是response对象在返回具体数据到浏览器时需要的数据传递媒介

  • 字符流的响应:response.getWriter().println()

  • 字节流的响应:response.getOutPutStream().write(“字节流”)

注意
1、使用字节流可以传输文件、图片常用的文档内容传输既使用字符流
2、可用同时使用多个字节流或者字符流的代码
3、不能字节流和字符流同时使用

HttpServleRequest对象

HttpServleRequest封装的是请求对象
每个请求对象也分为请求行,请求头,请求体
在这里插入图片描述

请求行

作用:后台需要操作一些项目名称才能进行下一步操作的时候

请求行的操作
  • getMethod():获取请求方式
  • getRequestURI():获取请求资源的路径
  • getRequestURL():获取比较全的路径
  • getContextPath():获取到项目路径
  • getLocalAddr():服务器的IP地址
//获取请求行参数
//获取请求方式
String method = request.getMethod();
System.out.println("method:"+method);//method:GET

//获取请求资源的路径 
String requestURI = request.getRequestURI();
System.out.println("requestURI:"+requestURI);//requestURI:/day14/servletDemo01

//获取比较全的路径
StringBuffer requestURL = request.getRequestURL();
System.out.println("requestURL:"+requestURL);//requestURL:http://localhost:8081/day14/servletDemo01

//获取到项目路径
String contextPath = request.getContextPath();
System.out.println("contextPath:"+contextPath);//contextPath:/day14

//服务器的IP地址
String localAddr = request.getLocalAddr();
System.out.println("localAddr:"+localAddr);

请求头

操作

getHeader(param):获取请求头信息

请求体

操作
  • getParameter(参数):获取提交过来的数据
  • getParameterValues(参数):根据参数名,获取参数值,返回数组
  • getParameterMap() :获取所有的参数封装成map集合
使用BeanUtils工具类来操作map集合

需导包:commons-beanutils和commons-logging
在这里插入图片描述

request域对象

request域对象操作方法

  • request.setAttribute(String , object):向作用域中添加数据
  • request.getAttribute(String ):获取作用域数据
  • request.removeAttribute(String):移除作用域数据
生命周期

从请求开始到响应结束-----一次完整的请求
ServletConfig对象是Servlet生命周期结束后消失(使用范围是自己的Servlet)
ServletContext对象,Tomcat创建出来之后就是针对全局的,Tomcat服务器停止时才会消失(或资源重新加载时)

转发与重定向

重定向

响应时通过response对象跳转新的页面
在这里插入图片描述

response.setStatus(302);
//重定向地址
//response.setHeader("location", "/day14/ServletDemo05");		

//重定向合成了一个步骤
response.sendRedirect("/day14/ServletDemo05");

总结
1、重定向地址栏地址会发生改变,显式最后一次重定向访问的地址
2、重定向是多次请求多次响应
3、重定向页面显式的内容为最后一次响应的内容

请求转发

请求时希望跳转另一个页面,并回传时携带信息,使用request对象

在这里插入图片描述

 request.getRequestDispatcher("servlet").forward(request,response);

总结
1、浏览器地址栏没有发生改变
2、一次请求一次响应,跳转是在服务器内部进行的
3、浏览器页面显式的是 转发的最后的路径给出的响应

注意:请求转发使用的是相对路径重定向使用的是绝对路径
重定向和转发都可以进行页面的跳转:当需要使用request域对象传递参数时,使用请求转发,否则使用重定向

关于中文乱码问题

请求对象转码

request.setCharacterEncoding("utf-8");

响应的时候转码

//告诉服务器,要以UTF-8的形式向浏览器传输响应内容
response.setCharacterEncoding("utf-8");
//告诉浏览器,以utf-8的形式进行解析
response.setHeader("Content-Type", "text/html;charset=utf-8");

//以上两步可以合成一步
response.setContentType("text/html;charset=utf-8");

标签:请求,响应,对象,request,HttpServletResponse,接口,HttpServleRequest,response,重定向
来源: https://blog.csdn.net/weixin_45583017/article/details/100899765

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有