`
tjukk
  • 浏览: 45341 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Struts2 权限控制

阅读更多
一、页面部分

1、登陆页面代码(login.jsp)



<%@ page language="java" contentType="text/html; charset=GBK"%>       

<%@taglib prefix="s" uri="/struts-tags"%>       

<html>       

        <head>       

                <title><s:text name="loginPage" /></title>       

        </head>       

        <body>       

                <!-- 使用form标签生成表单元素 -->       

                <s:form action="login">       

                        <s:textfield name="username" label="%{getText('user')}" />       

                        <s:textfield name="password" label="%{getText('pass')}" />       

                        <s:submit value="%{getText('login')}" />       

                </s:form>       

        </body>       

</html>   

2、登陆成功页面(welcome.jsp)

<%@ page language="java" contentType="text/html; charset=GBK"%>       

<%@taglib prefix="s" uri="/struts-tags"%>       

<html>       

        <head>       

                <title><s:text name="succPage" /></title>       

                <s:head />       

        </head>       

        <body>       

                <s:text name="succTip" />       

                <br />       

                <!-- 欢迎,${sessionScope.user},您已经登录!       

                ${sessionScope.pass}-->       

                <p />       

                <s:a href="show.action">show</s:a>       

                <p />       

                <s:a href="add.action">add</s:a>       

                <p />       

                <s:a href="qurey.action">qurey</s:a>       

        </body>       

</html>   



3、登陆失败页面(error.jsp)

<%@ page language="java" contentType="text/html; charset=GBK"%>       

<%@taglib prefix="s" uri="/struts-tags"%>       

<html>       

        <head>       

                <title><s:text name="errorPage" /></title>       

        </head>       

        <body>       

                <s:text name="failTip" />       

                <p />       

                <s:a href="login.jsp">return</s:a>       

        </body>       

</html>



4、和权限有关的几个显示页面

(add.jsp)

<%@ page language="java" contentType="text/html; charset=GBK"%>       

<%@taglib prefix="s" uri="/struts-tags"%>       

<html>       

        <head>       

                <title><s:text name="addPage"/></title>       

        </head>       

        <body>       

                <s:text name="addTip"/>       

                <p />       

                <s:a href="login.jsp">return login</s:a>       

        </body>       

</html>   



(show.jsp)

<%@ page language="java" contentType="text/html; charset=GBK"%>       

<%@taglib prefix="s" uri="/struts-tags"%>       

<html>       

        <head>       

                <title><s:text name="showPage"/></title>       

        </head>       

        <body>       

                <s:text name="showTip"/>       

                <p />       

                <s:a href="login.jsp">return login</s:a>       

        </body>       

</html>   



(qurey.jsp)

<%@ page language="java" contentType="text/html; charset=GBK"%>       

<%@taglib prefix="s" uri="/struts-tags"%>       

<html>       

        <head>       

                <title><s:text name="qureyPage"/></title>       

        </head>       

        <body>       

                <s:text name="qureyTip"/>       

                <p />       

                <s:a href="login.jsp">return login</s:a>       

        </body>       

</html>



二、Action部分(LoginAction.java)

public class LoginAction extends ActionSupport {       

        private static final long serialVersionUID = 1030294046920869257L;       

        private String username;       

        private String password;       

   

        // 处理用户请求的execute方法       

        public String execute() throws Exception {       

                if (isInvalid(getUsername()))       

                        return INPUT;       

   

                if (isInvalid(getPassword()))       

                        return INPUT;       

   

                if ((getUsername().equals("mm") || getUsername().equals("aumy"))       

                                && getPassword().equals("111")) {       

                        // 通过ActionContext对象访问Web应用的Session       

                        ActionContext.getContext().getSession().put("user", getUsername());       

                        ActionContext.getContext().getSession().put("pass", getPassword());       

                        System.out.println(getUsername() + "----" + getPassword());       

                        return SUCCESS;       

                } else {       

                        System.out.println(getUsername() + "----" + getPassword());       

                        return ERROR;       

                }       

        }       

   

        private boolean isInvalid(String value) {       

                return (value == null || value.length() == 0);       

        }       

   

        public String add() {       

                return SUCCESS;       

        }       

   

        public String show() {       

                return SUCCESS;       

        }       

   

        public String qurey() {       

                return SUCCESS;       

        }       

   

        public String getUsername() {       

                return username;       

        }       

   

        public void setUsername(String username) {       

                this.username = username;       

        }       

   

        public String getPassword() {       

                return password;       

        }       

   

        public void setPassword(String password) {       

                this.password = password;       

        }       

}   



三、拦截器部分(AuthorityInterceptor.java)



public class AuthorityInterceptor extends AbstractInterceptor {       

        private static final long serialVersionUID = 1358600090729208361L;       

   

        //拦截Action处理的拦截方法       

        public String intercept(ActionInvocation invocation) throws Exception {       

                // 取得请求相关的ActionContext实例       

                ActionContext ctx=invocation.getInvocationContext();       

                Map session=ctx.getSession();       

                //取出名为user的session属性       

                String user=(String)session.get("user");       

                //如果没有登陆,或者登陆所有的用户名不是aumy,都返回重新登陆       

                if(user!=null && user.equals("aumy")){       

                        return invocation.invoke();       

                }       

                //没有登陆,将服务器提示设置成一个HttpServletRequest属性       

                ctx.put("tip","您还没有登录,请登陆系统");       

                return Action.LOGIN;                       

        }       

}   



四、配置文件部分

(struts.xml)



<!DOCTYPE struts PUBLIC       

                "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   

                "http://struts.apache.org/dtds/struts-2.0.dtd">       

<struts>       

        <include file="struts-default.xml"/>       

        <!--不受权限控制的Action请求配置-->       

        <package name="non-authority" extends="struts-default" >                   

                <action name="login" class="com.aumy.struts.example.LoginAction">       

                        <result name="input">/login.jsp</result>       

                        <result name="error">/error.jsp</result>       

                        <result name="success">/welcome.jsp</result>       

                </action>               

                <action name="qurey" class="com.aumy.struts.example.LoginAction" method="qurey">       

                        <result name="success">/qurey.jsp</result>       

                </action>       

   

        </package>       

               

        <!--受权限控制的Action请求配置-->       

        <package name="authority" extends="struts-default">       

                <interceptors>       

                        <!--定义一个名为authority的拦截器-->       

                        <interceptor       

                                class="com.aumy.struts.example.intercepter.AuthorityInterceptor"   

                                name="authority"/>       

                        <!--定义一个包含权限检查的拦截器栈-->       

                        <interceptor-stack name="mydefault">       

                                <!--配置内建默认拦截器-->       

                                <interceptor-ref name="defaultStack"/>       

                                <!--配置自定义的拦截器-->       

                                <interceptor-ref name="authority"/>       

                        </interceptor-stack>       

                </interceptors>       

                       

                <default-interceptor-ref name="mydefault" />       

                <!--定义全局Result-->       

                <global-results>       

                        <result name="login">/login.jsp</result>       

                </global-results>       

                       

                <action name="show" class="com.aumy.struts.example.LoginAction"   

                        method="show">       

                        <result name="success">/show.jsp</result>       

                </action>       

                       

                <action name="add" class="com.aumy.struts.example.LoginAction"   

                        method="add">       

                        <result name="success">/add.jsp</result>       

                </action>       

                       

        </package>       

</struts>   



(struts.properties)

struts.custom.i18n.resources=message.messageResouce   



(web.xml)

<?xml version="1.0" encoding="UTF-8"?>       

<web-app version="2.4"       

        xmlns="http://java.sun.com/xml/ns/j2ee"       

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee       

        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">       

        <display-name>Struts test</display-name>       

   

        <filter>       

                <filter-name>struts2</filter-name>       

                <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>       

        </filter>       

   

        <filter-mapping>       

                <filter-name>struts2</filter-name>       

                <url-pattern>/*</url-pattern>       

        </filter-mapping>       

   

   

        <welcome-file-list>       

                <welcome-file>login.jsp</welcome-file>       

        </welcome-file-list>       

</web-app>   
分享到:
评论

相关推荐

    Struts2权限控制

    本知识点主要聚焦于如何利用Struts2的拦截器进行权限控制。 **一、Struts2拦截器原理** 在Struts2中,拦截器是基于Java的动态代理机制实现的。当一个请求到达时,Struts2会按照配置的顺序依次调用拦截器链中的每个...

    Struts2框架的权限控制研究

    ### Struts2框架的权限控制研究 #### 一、引言 随着Web技术的不断发展,Struts框架作为最早的Java Web开发框架之一,在实际项目中逐渐暴露出一些问题,如复杂性高、不易维护等。因此,为了更好地满足现代Web应用...

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    struts2登录权限

    Struts2是一个流行的Java ...综上所述,实现Struts2的登录权限控制涉及前端页面设计、后端Action处理、session管理以及配置拦截器来实现权限检查。开发者需要确保每个环节都能正确无误地工作,以提供安全的用户体验。

    struts2权限管理系统

    它主要利用Struts2作为MVC框架,结合其他组件如Hibernate进行数据持久化,Spring进行依赖注入,以及Apache Shiro或Spring Security等进行权限控制,为企业提供了一种高效、灵活的权限管理解决方案。 首先,Struts2...

    struts2拦截器实现权限控制

    这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...

    反射和注解的妙用-struts2权限的控制

    ### 反射与注解在Struts2中的应用——实现精细权限控制 #### 一、引言 在软件开发过程中,权限控制是一项重要的安全措施,它确保系统的不同部分只能被授权用户访问。对于大型管理系统(MIS)而言,基于方法级别的...

    基于角色的权限管理 struts2

    Struts2作为Java Web开发中的一个热门MVC框架,它允许开发者实现复杂的业务逻辑和用户权限控制。本项目"基于角色的权限管理 Struts2"提供了一个实用的示例,适用于教学或实际项目的需求。 在RBAC模型中,系统中的...

    Struts的权限实现

    ### Struts的权限实现 #### 一、概念介绍 ...通过对框架核心类的扩展以及自定义配置文件,可以灵活地控制用户对系统资源的访问权限。这种设计不仅增强了系统的安全性,也为复杂的应用场景提供了强大的支持。

    Struts2利用拦截器实现权限控制

    Struts2是一个强大的Java web框架,它为开发者提供了一种优雅的方式来组织和构建应用程序。在Struts2中,拦截器是实现业务逻辑控制...通过深入理解和实践这些代码,可以更好地掌握在Struts2框架中进行权限控制的方法。

    struts2-scan_struts2-scan_struts2scan_scan_struts2漏洞_

    在使用"struts2-scan.py"这个Python脚本时,你需要确保你有相应的环境支持Python运行,并且对目标Struts2应用有一定的访问权限。通常,这个脚本会遍历一系列的漏洞测试用例,针对每个可能的漏洞进行探测。扫描完成后...

    struts2+spring+hibernate权限系统

    同时,Spring Security(原名Acegi)是其安全模块,提供了用户认证和授权的功能,可以实现角色级别的权限控制,支持基于URL、方法或特定业务规则的访问控制。 3. **Hibernate框架**:Hibernate是Java领域的一个ORM...

    struts2登录权限验证(带数据库)

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。在"struts2登录权限验证(带数据库)"这个主题中,...通过这个实例,开发者可以学习到如何在实际项目中实现安全的用户登录和权限控制机制。

    struts2jar包

    拦截器是Struts2的一大特色,可以实现如日志、权限检查、事务控制等功能。 总的来说,Struts2是一个功能强大且成熟的MVC框架,其jar包的引入是搭建Struts2应用的第一步。正确理解和使用这些jar包以及框架的核心概念...

    Struts2视频教程

    - **权限控制**:利用拦截器实现细粒度的权限控制,确保只有授权用户才能访问敏感资源。 #### 六、Struts2源码分析 - **深入源码**:针对某些重要知识点,比如Action的执行流程、拦截器的工作原理等,本教程还会...

    struts2权限管理

    本文将深入探讨如何利用Struts2的拦截器(Interceptor)机制来实现权限控制,并通过`LimitInterceptor.java`这个具体的文件名,推测这是一个自定义的拦截器类,用于限制用户访问特定的Action或者资源。 首先,让...

    基于Struts2的用户权限管理

    在"基于Struts2的用户权限管理"项目中,它被用来处理用户的登录、权限控制以及不同角色间的差异化访问。这个系统的核心目标是实现安全、高效的角色与权限分配,以确保不同级别的用户只能访问他们被授权的页面和功能...

    使用struts2拦截器对登陆权限验证

    在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...

    权限控制(struts2+hibernate+spring+struts-menu+valuelist)

    本项目以"权限控制(struts2+hibernate+spring+struts-menu+valuelist)"为主题,采用一系列成熟的技术栈来实现这一目标。下面我们将深入探讨这些技术及其在项目中的应用。 首先,Struts2作为MVC框架,负责处理HTTP...

    struts2小程序 struts2代码

    Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...

Global site tag (gtag.js) - Google Analytics