how2j.cn


工具版本兼容问题
页面跳转是开发一个web应用经常会发生的事情。

比如登录成功或是失败后,分别会跳转到不同的页面。

跳转的方式有两种,服务端跳转和客户端跳转

步骤 1 : 首先准备两个页面 success.html fail.html   
步骤 2 : 服务端跳转   
步骤 3 : 客户端跳转   
步骤 4 : 服务端跳转与客户端跳转图示   

步骤 1 :

首先准备两个页面 success.html fail.html

首先在web目录下准备两个页面 success.html,fail.html
分别用于显示登录成功 或者登录失败

如果登录成功了,就服务端跳转到success.html

如果登录失败了,就客户端跳转到fail.html
首先准备两个页面 success.html fail.html
<div style="color:green">login success</div>
<div style="color:green">login success</div>
<div style="color:red">login fail</div>

<div style="color:red">login fail</div>
步骤 2 :

服务端跳转

在Servlet中进行服务端跳转的方式:


request.getRequestDispatcher("success.html").forward(request, response);


服务端跳转可以看到浏览器的地址依然是/login 路径,并不会变成success.html
服务端跳转
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String password = request.getParameter("password"); if ("admin".equals(name) && "123".equals(password)) { request.getRequestDispatcher("success.html").forward(request, response); } } }
步骤 3 :

客户端跳转

在Servlet中进行客户端跳转的方式:

response.sendRedirect("fail.html");


可以观察到,浏览器地址发生了变化
客户端跳转
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String password = request.getParameter("password"); if ("admin".equals(name) && "123".equals(password)) { request.getRequestDispatcher("success.html").forward(request, response); } else{ response.sendRedirect("fail.html"); } } }
步骤 4 :

服务端跳转与客户端跳转图示

服务端跳转与客户端跳转图示


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-01-14 这是区别,学到了MVC那一块,就能理解的更加深刻了!
我叫小威
关于 J2EE-Servlet-跳转 的提问
客户端的跳转:跳转之后地址栏的信息是会变的,变为跳转之后的地址信息 服务器端的跳转:跳转之后的地址栏的信息不会发生任何的改变 (1).而且在使用request属性范围时,只有服务器端跳转才能将request范围的属性保存到跳转页面;而如果是客户端的跳转,则无法进行request属性的传递 (2).另外,如果是服务器端的跳转,则执行跳转语句时立刻进行跳转;如果使用的是客户端跳转,则是整个页面执行完之后才执行跳转的。 (3).在Servlet中如果想要进行客户端的跳转,直接使用HttpServletResponse接口的SendRedirect()即可,但是需要注意的是,此跳转只能传递session以及application范围的属性,而无法传递request范围的属性








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-11-27 为什么正确与错误信息回访页面不一样
直到世界尽头
关于 J2EE-Servlet-跳转 的提问
当name=admin,password=123的时候返回的页面是http://localhost:8080/login/login,而错误的信息的时候返回的是http://localhost:8080/login/fail.html








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-10-26 总感觉少了点什么??
2017-10-26 这里的utf-8
2017-10-26 Servlet跳转后把表单数据显示在jsp为什么我这个总是失败
2017-09-19 绝对路径与相对路径跳转
2017-09-14 文件放的位置问题
2017-08-25 前台js可以提供跳转为什么要用后台跳转
2017-07-12 弱弱问一问跳转问题
2017-06-24 什么时候用服务端跳转 什么时候用客户端跳转
2017-05-18 .forward(request, response)方法的作用?
2017-04-18 跳转,传值
2017-01-25 跳转的区别
2016-10-18 无法进行正常跳转




提问之前请登陆
关于 J2EE-Servlet-跳转 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图