`

struts2实例

 
阅读更多
Struts2使用拦截器完成权限控制示例
文章分类:Java编程
示例需求:
   要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源;否则,系统直接转入登陆页面。

一、页面部分
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>  


<%@ 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>  


<%@ 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>  


<%@ 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>  


<%@ 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>  


<%@ 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>  

<%@ 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;   
    }   
}  

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;           
    }   
}  

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>  

<!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  

struts.custom.i18n.resources=message.messageResouce



(web.xml)
Java代码
<?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>  

<?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>


五、国际化资源文件(messageResouce.properties)


loginPage=Login Page   
errorPage=Error Page   
succPage=Welcome Page   
failTip=Sorry,You can't log in!   
succTip=welcome,you has logged in!    
user=User Name   
pass=User Pass   
login=Login   
showPage=Show Page   
showTip=show a example!   
addPage=Add Page   
addTip=add a example!   
qureyPage=Qurey Page   
qureyTip=qurey a example!
分享到:
评论

相关推荐

    struts2实例3源码

    这个“Struts2实例3源码”压缩包很可能是为了帮助开发者理解并实践Struts2框架的用法,通过具体的代码示例来学习其核心概念和功能。 Struts2的核心特性包括: 1. **Action和Result**:在Struts2中,Action是处理...

    struts2实例工程

    Struts2是一个强大的MVC(Model-View-Controller)框架,它是Apache...以上就是Struts2实例工程中涉及的关键知识点,通过学习和实践这些内容,开发者可以更好地理解和运用Struts2框架来开发高效、稳定的Java web应用。

    Struts2实例4

    本实例“Struts2实例4”旨在深入探讨和展示Struts2框架的实际应用,帮助开发者理解如何在项目中有效地利用其功能。 在Struts2框架中,我们首先需要了解的是其核心概念——Action类。Action类是业务逻辑的载体,负责...

    java编写struts2实例

    在本实例中,我们将深入探讨如何使用Java来编写一个Struts2应用。 首先,让我们了解Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑通常由Action类执行。Action类是Java类,它实现了`...

    Struts2实例5

    本实例“Struts2实例5”旨在深入理解和应用Struts2的核心特性,帮助开发者更加熟练地使用该框架进行项目开发。下面我们将详细探讨Struts2的相关知识点。 1. **Struts2框架基础** Struts2是Apache软件基金会的一个...

    Struts2实例代码

    这个“Struts2实例代码”压缩包提供了具体的实现示例,帮助开发者理解并掌握Struts2框架的使用。 在实际应用中,Struts2框架提供了一种组织应用程序结构的方式,它简化了HTTP请求与业务逻辑之间的映射,使得开发者...

    struts2 的一个实例

    在这个实例中,我们将深入探讨Struts2的核心概念、配置以及如何创建一个简单的应用程序。 首先,理解Struts2的核心理念至关重要。Struts2框架通过提供一系列拦截器(Interceptor)来处理HTTP请求,这些拦截器按照预...

    Struts2实例 国际化 类型转换 struts标签

    这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...

    Struts2 实例 HelloWorld

    ### Struts2 实例 HelloWorld 知识点解析 #### 一、概述 在学习Struts2框架时,通常会从最简单的“Hello World”实例开始。这种实例不仅可以帮助初学者快速上手,还能让大家对Struts2的工作原理有一个基本的理解。...

    Struts2实例3

    在这个“Struts2实例3”的主题中,我们将深入探讨Struts2的核心特性、工作原理以及如何通过实际操作来应用这些概念。下面,我们将详细讨论Struts2的关键知识点。 1. **Struts2架构**: Struts2框架基于拦截器...

    struts2实例和详细介绍

    Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-...文档“struts2struts2实例和详细介绍.doc”应该会提供更详细的指导和示例代码,帮助你深入理解和运用Struts2框架。

    struts2实例源码2

    通过深入研究这个“struts2实例源码2”,开发者不仅可以理解Struts2框架的基本工作原理,还能学习到如何在实际项目中应用这些概念,提高开发效率和代码质量。同时,这也为进一步探索其他高级特性,如AOP(面向切面...

    struts2实例源码1

    这个"struts2实例源码1"可能是为了演示如何在实际项目中使用Struts2框架。 在Struts2中,以下是一些核心概念和关键知识点: 1. **Action类**:Action类是处理用户请求的核心组件。每个Action类通常对应于一个特定...

    struts2实例小程序1

    在这个“Struts2实例小程序1”中,你将开始接触并理解Struts2的基本概念和工作流程,这对于初学者来说是一个很好的起点。 1. **Struts2入门**: - **MVC模式**:Struts2遵循MVC设计模式,将业务逻辑、数据和展示...

    struts2实例.zip

    这个"struts2实例.zip"压缩包包含了Struts2框架的实际应用代码,旨在帮助开发者理解和掌握Struts2的核心功能和工作原理。下面将详细阐述Struts2的关键特性以及在实际开发中的应用。 1. **MVC架构**:Struts2基于...

    struts2实例 BBS

    在本实例"Struts2实例 BBS"中,我们将深入探讨如何使用Struts2实现一个基本的论坛系统,该系统具备增删改查(CRUD)功能,且不包含冗余或无效代码。以下是对这一实例的详细分析: 首先,我们来看看Struts2框架的...

    struts2实例项目

    struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例

    PageOffice MVC Struts2实例

    在这个"PageOffice MVC Struts2实例"中,我们将探讨如何利用PageOffice控件在Struts2框架下实现Office文档的在线编辑与保存功能。 PageOffice是一款强大的Java办公组件,它可以无缝集成到各种Java应用中,支持用户...

Global site tag (gtag.js) - Google Analytics