您的位置:首页 > 其它

网页跳转,请求转发与请求重定向学习

2018-02-07 00:09 330 查看
请求转发(站内跳转):

请求转发以request实现,未使用response,未产生响应对象,所以request继续存在.

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
//转发时传值将值存储到request中,以键值对存储
request.setAttribute("username", username);
//转发,请求地址直接写servlet时不带"/"即可
request.getRequestDispatcher("MainServlet").forward(request, response) ;
}

站内跳转显示页面:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//取得request中信息的方法,取出后是Object的,需要强转
String username = (String)request.getAttribute("username");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" 欢迎,登陆成功! 你好:"+username);
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

请求重定向(站外跳转):

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
String username = req.getParameter("username");
//可将页面跳转到新的url上,此例子路径为目录webroot文件夹下html文件夹下的main.html页
resp.sendRedirect("/MyWebProject/html/main.html");
//也可直接跳转到站外页面
resp.sendRedirect("http://www.google.com");
//url跳转附带信息,但信息会显示在url上.可以直接跳转servlet实现动态网页
//跳转地址为"/工程名/配置文件中servlet的url-pattern"
resp.sendRedirect("/MyWebProject/MainServlet?username="+username);
}


请求重定向与请求转发的区别:

1.请求转发不产生response,request不销毁,所以可以通过request将值带入到下一个页面.

   请求重定向产生response,request销毁了,不可通过request传值.需要传值时使用URL传值.

2.请求转发的URL不发生改变,客户端请求A , A将请求转发给B , B做处理,但是URL依然显示A.

   请求重定向URL发生改变,客户端请求A , A将请求转发给B , URL显示是B.

3.请求转发又称为站内跳转,只能跳转到网站内部的URL.无法跳出工程.

   请求重定向又被成为站外跳转,可以跳转到网站外的URL资源上.

4.请求转发在服务器内部进行URL改变,速度要快于请求重定向.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: