1、HttpServletRequest是ServletRequest的子接口(主要封装http请求)
功能:
接受用户的参数;接受用户的所有请求头信息(所以请求转发时re、rs都转);转发;作为域对象也可以存放数据
常要方法
getParameter(String)方法,根据名字获取一个参数,返回String类型
getParamterValue(String)方法:根据名字获取一组相关的数据,返回类型String[]
(出现乱码时先确定浏览器的编码格式与java类的编码格式,和数据库的编码格式
如果这三种都是utf-8,那么问题在tomcat的编码格式)
设置请求编码格式
request.setCharacterEncoding(“utf-8”);
2、HttpServletReponse是ServletReponse的子接口(主要响应http请求)
常用方法
rsponse.setContentType();设置响应格式
getWriter();输出到浏览器
响应前先设置响应编码格式
response.setContentType(“text/html;charset=utf-8”);
3、请求转发和重定向
请求转发:将请求再服务器内部交给另一个servlet(组件)帮我执行,同时共享request中的数据
**重定向:**指的是一个web资源受到客户端请求后,通知客户端去访问另外一个web资源
**二者区别:**本质区别:请求转发只发送了一次请求,重定向发送了两次
(1)请求转发:地址栏还是第一次请求的地址
重定向:最后一次请求的地址
(2)请求转发:在最终的servlet中,request对象和中转的request是同一个
重定向:不是同一个请求
(3)请求转发:只能转发到内部资源(同一项目)
重定向:可以重定向到外部资源
(4)请求转发:加上/ 代表的是当前web应用的根目录http://localhost:8080/servlet02; 只要加上 /他就是一个绝对路径
重定向:代表当前站点(localhost:8080)
请求转发(可以用servletrequest绑定数据,只有同一个请求才可以获取被绑定的数据)
//向request域对象里面存值
request.setAttribute("name","zhangsan");
String name=(String)request.getAttribute("name");
System.out.println(name);
//请求转发:把获取的请求转发给别的页面帮我处理
//1.定义一个请求转发的地址
String path=request.getContextPath()+"/testServlet";//这就是一个绝对路径
//2.通过request对象调用getRequestDispatcher方法,需要传入一个转发的地址,
//并且把获取到的请求对象响应对象转发过去
request.getRequestDispatcher(path).forward(request,response);
重定向(请求转发和重定向都是通过get方法传递请求和响应,一般只有表单类才post提交)
request.setAttribute("name","zhangsan");
String name=(String)request.getAttribute("name");
System.out.println(name);
//1.重定向的地址
String path=request.getContextPath()+"/testServlet";//绝对路径
//2.进行重定向
response.sendRedirect(path);