Servlet之间的跳转方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet之间的跳转方式相关的知识,希望对你有一定的参考价值。
参考技术A 因为在实现登陆验证的时候,需要进行跳转,所以对servlet的三种跳转方式又进行了学习跳转方式之一:forward跳转
forward跳转需要有RequestDispatcher对象,RequestDispatcher对象可以通过HttpServletRequest对象获得
通过RequestDispatcher对象,不仅可以跳转到jsp、另外一个servlet,还可以是其他文件,比如web.xml,不过这种方式好像使用场景比较少
举个例子:ForwardServlet.java
里面列举了三种跳转方式
注:getRequestDispatcher()方法的参数必须以"/"开始
跳转到其他servlet,getRequestDispatcher()参数为servlet的映射url,这里即为/login
当使用forward形式跳转servlet时,地址栏会显示跳转前的servlet访问地址,因为该跳转是在服务器实现的,客户端不知道该跳转方式
可以看到,地址栏跳转后没有发现变化,这个跳转对客户端是透明的,这也是forward跳转方式和其他跳转方式的不同点
跳转方式之二:redirect
通过HttpServletResponse的sendRedirection就能实现重定向
前面我们实现的登陆验证就是通过这种方式实现的,这里就不在举例子了。
说明一点:当使用redirect跳转方式时,跳转是在客户端实现的,地址栏会发生变化。并且客户端请求了两次服务器,第一次获得重定向状态码和重定向地址,第二次访问真实地址
可以看到地址栏的地址已经发生了变化
跳转方式之三:refresh
自动刷新可以实现在一段时间之后跳转到另外一个页面,还可以实现一段时间之后自动刷新此页面。通过HttpServletResponse的setHeader方法实现
举个例子:RefreshServlet.java
目前还没有想到好的例子,试着写了一个例子然而出现一点bug,在思考一下,morethink
页面之间的跳转问题
新做了一个忘记密码的功能:
分为三个页面,一个是校验用户名手机号的页面,一个修改密码的页面,还有一个修改成功页面
第一个页面有一个按钮是下一步,身份校验成功后,点击下一步,到修改密码页面:
这一步的跳转可以分为
俩种方式做:
第一种:将修改密码和校验身份合并成一个页面,然后通过隐藏和显示div,控制页面显示,点击通过ajax方法,如果校验成功刷新div
第二种:点击下一步后,直接通过表单提交的方式$(form).submit(),form中加上action地址,直接跳转到新页面。需要传一些值到新页面
第二个到第三个页面,就是通过上面第二种方式做的,主要是因为第三个页面没有操作,也没有需要显示时用到第二个页面的信息
补充:用ajax通过struts2返回jsp时,我们需要通过ajax函数返回的值,将返回的jsp动态刷新到某个div中,而不是ajax函数返回了,就会自动刷新成返回的jsp。
而通过form提交的方式,就可以直接跳转到struts返回的jsp中
以上是关于Servlet之间的跳转方式的主要内容,如果未能解决你的问题,请参考以下文章