zoukankan      html  css  js  c++  java
  • Struts2自定义拦截器实例—登陆权限验证

    版本:struts2.1.6

    此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面。

    代码如下:

    一、页面

    login.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>  
        <title>yuewei'Login</title> 
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
        -->
      </head>
      
      <body>
      <form action="login.action" method="post">
      User:<input type="text" name="username"><br>
      Passoword:<input type="password" name="password"><br>
      <input type="submit" value="submit">
      </form>
       
    </body>
    </html>

    welcome.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
       
        <title> yuewei's Welcome</title>
        
     <!--
     <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
     -->
    
      </head>
      
      <body>
      <h1>登录成功后显示此页面</h1>
      <a href="show.action" mce_href="show.action">show</a>
      </body>
    </html>

    show.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        
        <title>yuewei's Show</title>
        
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
        -->
    
      </head>
      
      <body>
        Show This Page 
            登录后执行此页面<br>
      </body>
    </html>

    二、Action

    LoginFormAction

    package com.ywjava.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginFormAction extends ActionSupport {
        public String exexcute() {
            return "success";
        }
    }

    LoginAction

    package com.ywjava.action;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.ywjava.utils.Constants;
    
    public class LoginAction extends  ActionSupport{
    private String username;
    private String password;
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    
    private boolean isInvalid(String value) {   
        return (value == null || value.length() == 0);   
    }   
    public String execute(){
            System.out.println(username);
            System.out.println(password);
            
             if (isInvalid(getUsername()))   
                    return INPUT;   
          
                if (isInvalid(getPassword()))   
                    return INPUT;   
          
    
        if(this.getUsername().equals("yuewei")&& this.getPassword().equals("yuewei")){
            ActionContext.getContext().getSession().put(Constants.USER_SESSION,getUsername());
            ActionContext.getContext().getSession().put(Constants.PASS,getPassword());
            return "success";
        }
        return "error";
    }
    }

    ShowAction

    package com.ywjava.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class ShowAction extends ActionSupport {
     public String execute() {
      return "success";
     }
    }

    三、拦截器

    package com.ywjava.interceptot;
    
    import java.util.Map;
    
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
    import com.ywjava.utils.Constants;
    
    public class LoginInterceptor extends AbstractInterceptor {
    
        @Override
        public String intercept(ActionInvocation invocation) throws Exception {
    
            // 取得请求相关的ActionContext实例
            ActionContext ctx = invocation.getInvocationContext();
            Map session = ctx.getSession();
            String user = (String) session.get(Constants.USER_SESSION);
    
            // 如果没有登陆,或者登陆所有的用户名不是yuewei,都返回重新登陆
    
            if (user != null && user.equals("yuewei")) {
                System.out.println("test");
                return invocation.invoke();
            }
    
            ctx.put("tip", "你还没有登录");
            return Action.LOGIN;
    
        }
    
    }

    四 struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
        "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
        <package name="authority" extends="struts-default">
        
            <!-- 定义一个拦截器 -->
            <interceptors>
                <interceptor name="authority"
                    class="com.ywjava.interceptot.LoginInterceptor">
                </interceptor>
                <!-- 拦截器栈 -->
                <interceptor-stack name="mydefault">
                    <interceptor-ref name="defaultStack" />
                    <interceptor-ref name="authority" />
                </interceptor-stack>
            </interceptors>
    
            <!-- 定义全局Result -->
            <global-results>
                <!-- 当返回login视图名时,转入/login.jsp页面 -->
                <result name="login">/login.jsp</result>
            </global-results>
    
            <action name="loginform"
                class="com.ywjava.action.LoginFormAction">
                <result name="success">/login.jsp</result>
            </action>
            
            <action name="login" class="com.ywjava.action.LoginAction">
                <result name="success">/welcome.jsp</result>
                <result name="error">/login.jsp</result>
                <result name="input">/login.jsp</result>
            </action>
    
            <action name="show" class="com.ywjava.action.ShowAction">
                <result name="success">/show.jsp</result>
                <!-- 使用此拦截器 -->
                <interceptor-ref name="mydefault" />
            </action>
            
        </package>
    </struts>
  • 相关阅读:
    scala学习笔记(8)
    mysql复习(1)基本CRUD操作
    sql获得表主键信息
    C#缓存-依赖 CacheHelper
    MVC过滤器实现用户登录验证
    MVC过滤器
    MVC页面和表单
    在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token
    MVC DbContext
    MVC数据注解
  • 原文地址:https://www.cnblogs.com/sandea/p/3754076.html
Copyright © 2011-2022 走看看