(Struts2)登录失败跳转到index.jsp

转载 2015年07月10日 12:12:38

登录成功,登录到login.jsp

登录失败,重定向到index.jsp

  • 忙了老长时间,登录失败一直没有进去index.jsp
    <package name="default" namespace="/login" extends="struts-default">

        <action name="login" class="net.qbzhong.action.LoginAction"
            method="execute">
            <result name="success">../login.jsp</result>
            <result name="fail" type="redirectAction">tologin</result>
        </action>

        <action name="tologin" class="net.qbzhong.action.ToLoginAction"
            method="execute">
            <result name="success" type="redirect">/index.jsp</result>
        </action>

    </package>
  • 最后发现,是
    这里写图片描述
    这里当时,我也没有写type类型,所以默认的是dispatcher类型。由于新手,就查了几个简单常用的类型:

dispatcher

  • dispatcher主要用于返回JSP,HTML等以页面为基础的View视图,这个也是Struts2默认的Result类型。在使用dispatcher时,唯一需要指定的,是JSP或者HTML页面的设置,这个位置将被用于定位返回的页面。

  • Struts2本身也没有对dispatcher做出什么特殊的处理,只是简单的使用Servlet API进行forward。

  • 如果你在Action执行完毕后,希望执行另一个Action,有2种方式可供选择。一种是forward,另外一种是redirect。在Struts2中,分别对应这两种方式的Result,就是chain和redirect。

  • redirect,既然是重定向,那么源地址与目标地址之间是2个不同的HttpServletRequest。所以目标地址将无法通过ValueStack等Struts2的特性来获取源Action中的数据。如果你需要对目标地址传递参数,那么需要在目标地址url或者配置文件中指出:
<!--   
   The redirect-action url generated will be :   
   /genReport/generateReport.jsp?reportType=pie&width=100&height=100 
   --> 
   <action name="gatherReportInfo" class="..."> 
      <result name="showReportResult" type="redirect"> 
         <param name="location">generateReport.jsp</param> 
         <param name="namespace">/genReport</param> 
         <param name="reportType">pie</param> 
         <param name="width">${width}</param> 
         <param name="height">${height}</param> 
      </result> 
   </action> 
  • 同时,Redirect的Result支持在配置文件中,读取并解析源Action中ValueStack的值,并成为参数传递到Redirect的地址中。上面给出的例子中,width和height就是ValueStack中的值。

chain

  • chain,之前提到,chain其实只是在一个action执行完毕之后,forward到另外一个action,所以他们之间是共享HttpServletRequest的。在使用chain作为Result时,往往会配合使用ChainingInterceptor。

  • ChainingInterceptor的作用是在Action直接传递数据。事实上,源Action中ValueStack的数据会被做一次Copy,这样,2个Action中的数据都在ValueStack中,使得对于前台来说,通过ValueStack来取数据,是透明而共享的。

  • 比如说,一张页面中,你可能有许多数据要显示,而某些数据的获取方式可能被很多不同的页面共享(典型来说,“推荐文章”这个小栏目的数据获取,可能会被很多页面所共享)。这种情况下,可以把这部分逻辑抽取到一个独立Action中,并使用chain,将这个Action与主Action串联起来。这样,最后到达页面的时候,页面始终可以得到每个Action中的数据。

stream

  • StreamResult等价于在Servlet中直接输出Stream流。这种Result被经常使用于输出图片、文档等二进制流到客户端。通过使用StreamResult,我们只需要在Action中准备好需要输出的InputStream即可。
<result name="success" type="stream"> 
    <param name="contentType">image/jpeg</param> 
    <param name="inputName">imageStream</param> 
    <param name="contentDisposition">filename="document.pdf"</param> 
    <param name="bufferSize">1024</param> 
</result> 

  • 使用type=“redirectAction”时,结果就只能写Action的配置名,不能带有后缀:“.action”
<action name="Login" class="steven.actions.LoginAction">    
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>    
</action>  
<action name="Login" class="steven.actions.LoginAction">  
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>  
</action> 
<action name="Login" class="steven.actions.LoginAction">   
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>   
</action>  
<action name="Login" class="steven.actions.LoginAction">  
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>  
</action>
  • 使用type=“redirect”时,结果应是action配置名+后缀名
<action name="Login" class="steven.actions.LoginAction">    
<result name="success" type="redirect">User.action?u_id=${loginBean.u_id}</result>    
</action> 
<action name="Login" class="steven.actions.LoginAction">   
<result name="success" type="redirect">User.action?u_id=${loginBean.u_id}</result>   
</action>

  • redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。

  • redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失。

  • chain:action处理完后转发到一个action,请求参数全部丢失,action处理结果不会丢失。

Struts2实现登录流程

本节将演示一个基本的登录流程,在登录界面中若输入正确的用户名和密码,跳转到登录成功界面;否则路转到登录失败界面。   1 建立一个名为LoginDemo的动态Web项目   2 按照上节介绍的流程添加...
  • haishu_zheng
  • haishu_zheng
  • 2016年03月22日 23:07
  • 11907

(Struts2)登录失败跳转到index.jsp

登录成功,登录到login.jsp登录失败,重定向到index.jsp 忙了老长时间,登录失败一直没有进去index.jsp ...
  • qwdafedv
  • qwdafedv
  • 2015年07月10日 12:12
  • 1014

struts2标签在jsp不显示问题(不经过action跳转)

今天终于发现这个问题是怎么回事了 首先,看看myeclipse自动生成的web.xml struts2 org.apache.struts2.dispatcher.ng.filt...
  • qq_32768743
  • qq_32768743
  • 2016年04月12日 22:58
  • 1318

默认页面index.jsp跳转到*.action

默认页面跳转到action
  • deepquiet
  • deepquiet
  • 2017年04月10日 15:23
  • 734

springmvc 如何跳转到根目录下的index.jsp页面

@RequestMapping(value = "/logout") public String logout(HttpSession session ) { session.inval...
  • u012307002
  • u012307002
  • 2014年10月10日 22:09
  • 5016

如何在struts2中登录后跳转到前置页面

我们定义一个拦截器,拦截器的功能:判断SESSION中是否存在用户登录信息,如果存在,直接执行该请求,如果不存在,则在SESSION中保存该次请求的URL地址,如果我们请求的是一个ACTION,使用r...
  • oyjqdlp364356378
  • oyjqdlp364356378
  • 2010年07月06日 10:00
  • 3455

jsp struts2页面跳转

/JZAccount/login.action"  method="post">
  • kaixinbingju
  • kaixinbingju
  • 2012年08月06日 10:36
  • 1370

Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】

应用情形:在web项目中,经常会遇到用户未登录或SESSION失效时用户发出非法的权限操作,如新闻的评论、文件的下载等等,在此我们可以使用struts拦截器对该用户发出的请求进行拦截,拦截后判断用户是...
  • toto1297488504
  • toto1297488504
  • 2014年01月21日 13:17
  • 1985

struts2请求跳转到外部链接

当使用搜索引擎搜索Struts2如何跳转到外部链接的时候,大多数答案是: ${externalUrl} 这种方式实际不会达到跳转到外部链接的效果。 在struts2中可以使用301、302的...
  • SJZYLC
  • SJZYLC
  • 2016年04月02日 09:41
  • 1118

在Struts2中实现登陆后跳转到登录前页面

很常见的一个应用就是访问某个页面,因为权限不够,进入登陆页面。人性化的设计是能够在登陆之后,系统跳转到用户原本需要访问的页面。这可以借助拦截器来实现。 在我们验证用户登陆的拦截器里面获取请求地址,并...
  • jingquanliang
  • jingquanliang
  • 2013年11月30日 16:11
  • 610
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(Struts2)登录失败跳转到index.jsp
举报原因:
原因补充:

(最多只允许输入30个字)