request和response
l HttpServletRequest
l 请求转发
l HttpServletResponse
l 请求重定向
- 请求流程
每次请求service(),都会由容器创建一个新的对象。
首先用户向Servlet发出请求,然后由tomcat服务器创建request和response两个对象,然后将两个新对象传递给servlet,然后servlet用response返回响应,浏览器解析response响应。
- Servlet对象的比较
① request和response在每一次访问时都被创建,由tomcat服务器创建
② servlet只会被创建一次
③ ServletConfig会为每一个servlet创建一个Config对象,且由servlet维护。ServletConfig属于成员变量
④ ServletContext对象,是这个web项目就有一个此变量,属于全局变量,整个项目都可以被访问到
- HTTPServletRequest
是ServletRequest的子接口,用于封装HTTP请求消息。
- Request功能
① 功能
l 接收用户的参数
l 接收用户的所有请求头信息
l 转发、包含
l 作为域对象也可以存放数据
② 方法
² getParameter(String)方法:根据名字获取一个参数,返回值类型为String
² getParameterValues(String)方法:根据名字获取一组相关数据,返回类型为String[]
- 请求转发
① 转发:是将请求在服务器内部叫个另一个组件再去执行,同时共享request中的数据,其特点有:
l 地址栏不会发生改变
l 在最终servlet中,request对象和中转的request对象是同一个对象,数据不会发生改变
l 请求转发:“/”代表当前web应用根目录即http://localhost:8080/Servlet1115
② 请求域属性
存储在ServletRequest对象中的属性称之为请求域属性,属于同一个请求的多个处理模块之间可以通过请求域属性来传递对象数据。
相关方法有:
l setAttribute()方法
l getAttribute()方法
l removeAttribute()方法
- HTTPServletResponse
是ServletResponse接口的子接口,专门用于http协议,用于封装http响应消息
- Response功能
① 功能
l 设置响应内容:给用户输出html数据
l 设置响应头
l 重定向
② 方法
用于字符流输出,方法:resp.getWriter()
PrintWriter out = response.getWriter();
out.write("名称:" + name);
- 重定向
n 指的是一个web资源受到客户端请求后,通知客户端取访问另一个web资源(例如百度)
n “/”代表当前web应用站点http://localhost:8080
n 浏览器会向服务器发送两次请求,即有两个request/response
n 浏览器地址会发生变化
n 不会共享request中的数据
n 执行重定向的代码为302
- 重定向与转发的区别
①请求转发只转发到当前web应用下,请求重定向转发到另一个web站点;
②请求转发只发送了一次请求,重定向发送了两次请求。请求转发的地址栏还是初次请求的地址栏,重定向的地址栏是第二次请求的地址栏,与之同理,重定向的request不是同一次request;
- 获取参数时出现乱码问题
n 解决方法一
n 解决方法二