【Struts2四】利用拦截器对登陆进行拦截的小案例

需求:访问index.jsp页面需要登陆,该页面是由IndexAction来转发!故使用拦截器拦截来拦截IndexAction,判断session域中是否有user,有就正常访问,没有就跳转到登陆页面!

如果不适用拦截器,可以直接在地址栏中输入http://localhost/logindemo/indexAction_index.action,为了控制在没有登陆的情况下,不能访问index.jsp,所以需要使用拦截器。


1.login.jsp
    
     <form action=" ${pageContext.request.contextPath}/loginAction_login.action" method= "post">
     用户名:  <input type= "text"  name ="username"/>
     密码:  <input type= "password"  name ="password"/>
      < input  type="submit" value= "提交">
     </form >

2.LoginAction
public  class LoginAction extends ActionSupport {
     
      public  String login(){
          String username=ServletActionContext.getRequest().getParameter(  "username");
          String password=ServletActionContext.getRequest().getParameter(  "password");
          
          User user=  new User();
          user.setPassword(password);
          user.setUsername(username);
          ServletActionContext. getRequest().getSession().setAttribute( "user" , user);
          
          System.  out.println("login........" );
            return SUCCESS ;
     }

}

3.IndexAction:
public  class IndexAction extends ActionSupport {
     
      public  String index(){
          
            return "index" ;
     }

}


4.struts.xml:
将loginAction和indexAction分别放于两个包中,indexAction的package继承具有拦截器的aa包,拦截器对在包内的action起作用,对其他的不起作用!

<? xml  version= "1.0" encoding ="UTF-8" ?>
<! DOCTYPE  struts PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     "http://struts.apache.org/dtds/struts-2.0.dtd">

< struts >
      < package  name="aa" namespace="/" extends="struts-default" >
            <interceptors>
                <interceptor name= "loginInterceptor" class="com.oterman.interceptor.LoginInterceptor" >
                </interceptor>
                <interceptor-stack name="myInterceptorStack" >
                     <interceptor-ref name="loginInterceptor" ></interceptor-ref>
                     <interceptor-ref name="defaultStack" ></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            <default-interceptor-ref name="myInterceptorStack" ></default-interceptor-ref>  
      </ package  >

      <!-- 访问loginAction时,不用拦截 -->
      < package  name="login" namespace="/" extends="struts-default" >
            <action name= "loginAction_*" method ="{1}"
                 class= "com.oterman.struts.action.LoginAction" >
                <result type= "redirectAction" >indexAction_index.action</ result>
              
            </action>
          
      </ package  >

      <!-- 访问index.jsp时,需要拦截,故需要继承声明拦截器的包 -->
      < package  name="index" namespace="/" extends="aa">
            <action name= "indexAction_*"  method ="{1}"  class="com.oterman.struts.action.IndexAction" >
                <result name="index" >/login/index.jsp </result>
                <result  name="login" >/login/login.jsp </result>
            </action>
      </ package  >
     
</ struts >







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值