Servlet(处理乱码,重定向与转发的区别)

//处理请求乱码

req.setCharacterEncoding("utf-8");

//处理响应乱码

resp.setContentType("text/html;charset=utf-8");

 

1. 转发 携带数据

          1 地址栏不变;

          2 服务器内部跳转,浏览器不知道

          3 公用一个request,所以可以在request作用域中存储数据

          4  A接到用户请求,帮助用户找到B

          5 只能跳转到当前项目下

            代码实现:req.getRequestDispatcher(URI).forward(req, resp);

2. 重定向 不携带数据

         1 地址栏改变

         2 浏览器发送新的请求

         3 不共享一个request

         4  A接到用户的请求,告诉用户,你去找B

         5 可以到跳转到其它项目下

         代码实现:resp.sendRedirect(URI);

      如果需要传递数据 就使用转发         如果不需要传递数据,可以使用重定向

request 转发

         获取前端数据:    req.getParameter("username")

         设置数据到request作用域: req.setAttribute(key , Value);

         前台EL表达式取值:${requestScope.Key}

         转发:req.getRequestDispatcher(URI).forward(req, resp);

         内部跳转,URI只能当前项目下,故不需要加项目名

esponse 重定向

         重定向:resp.sendRedirect(URI);

         可以跳转到外部项目,URI前需要加项目名

         获取当前项目名:req.getContextPath()

你可能感兴趣的:(Servlet(处理乱码,重定向与转发的区别))