request
获得请求参数的值(客户端发送过来的数据)
String getParameter(String name)
String[] getParameterValues(String name)
在服务器内部传递数据
void **setAttribute(String key, Object value)**
Object类型 **getAttribute(String key)**
转发
setAttribute(“要显示的参数名”,“要显示的参数内容”)
**getRequestDispatcher(设置要跳转的url).forward(request,response);**
只能访问服务器内的资源网站(url),不能访问服务器外的网站
设置请求参数的编码
setCharacterEncoding(“utf-8”);
response:响应对象
response定义
public interface HttpServletResponse extends ServletResponse
描述一个返回到客户端的HTTP回应对象。
返回数据到客户端
//将消息返回给客户端
//先设置编译再写入消息
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();//获得响应流
out.println(msg);//换行打印
// out.print();//不换行打印
获得响应流
PrintWriter getWriter()
PrintWriter out = resp.getWrite();
重定向
sendRedirect(设置要跳转的url); 可以访问服务器外的网站
url需要加上虚拟路径(项目虚拟路径)
设置响应的编码方式,编码的值是固定的
setCharacterEncoding(“utf-8”);
setContentType("text/html;charset=utf-8);
转发与重定向
概述
-
转发(需要之前的数据):需要将当前servlet的数据传输给下一个请求的地址
使用场景:如果多个请求之间需要共享数据时
-
重定向(不需要之前的数据):通知浏览器重新发送新的请求给web服务器。
使用场景:如果多个请求之间不需要共享数据
转发与重定向的区别
-
转发第一次请求的url不会改变[页面会跳转回原来的url路径所在的页面(跳回原来的页面)]
req.setAttribute(String key,Object value)[key=“参数名”,value=“参数内容”]
req.getRequestDispatcher(“要参数内容显示的跳转页面”).forward(req,resp);
重定向:在地址栏会显示重定向后的url地址[会直接跳转到指定的url地址的页面(可以访问服务器外资源网站)]
resp.sendRedirect(“指定跳转页面的url”)
url需要加上虚拟路径(项目虚拟路径)
-
从速度上来说
转发是一次请求/响应的过程中跳转1到多个url
重定向是通知浏览器发出了第二次请求,所以从速度上来说,重定向是相对慢的。
使用场景
request的方法
返回值 | 方法 | 描述 |
---|---|---|
void | setAttribute(String name,Object value) | 在request的作用内设置键值对的值 |
Object | getAttribute(String name) | 根据key取值 |
RequestDispatcher | getRequestDispatcher(String url) | 设置要转发的url |
response
返回值 | 方法 | 描述 |
---|---|---|
sendRedirect(String url) | 重定向到指定的url | |