- 浏览: 122931 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (131)
- J2EE (5)
- 系统配置 (2)
- eclipse (3)
- MySQL (3)
- 数据库 (1)
- log4j (2)
- hibernate (5)
- JBOSS (3)
- https (2)
- Struts2 (7)
- javascript (2)
- CSS (4)
- HTTP (2)
- J2SE (1)
- apache (6)
- XML (1)
- android (3)
- session (3)
- Spring (3)
- 前端优化 (2)
- Drools (2)
- java笔试题 (8)
- SVN (2)
- linux (19)
- linux命令 (3)
- memcache (1)
- Servlet (2)
- Java RMI (1)
- 领域模型 (1)
- LVS (4)
- Linux shell (2)
- WEB (1)
- F5 (2)
- WinRAR (1)
- TCP (1)
- MQ (2)
- weblogic (1)
- winxp安装FTP (1)
- WebLogic和Tomcat (1)
- 虚拟机 (1)
- nexus-maven (1)
- jstl (1)
- jvm (1)
- Redis (2)
- mongodb (3)
- JAVA (2)
- mybatis (1)
- SQLserver (1)
- GC (1)
- zabbix (1)
- node (1)
最新评论
-
huosange:
简单明了,通俗易懂
JAVA为什么只允许单继承
Struts2使用拦截器完成权限控制示例
文章分类:Java编程
示例需求:
要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源;否则,系统直接转入登陆页面。
一、页面部分
1、登陆页面代码(login.jsp)
2、登陆成功页面(welcome.jsp)
3、登陆失败页面(error.jsp)
4、和权限有关的几个显示页面
(add.jsp)
(show.jsp)
(qurey.jsp)
二、Action部分(LoginAction.java)
三、拦截器部分(AuthorityInterceptor.java)
四、配置文件部分
(struts.xml)
(web.xml)
Java代码
五、国际化资源文件(messageResouce.properties)
文章分类: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!
发表评论
-
Struts1与Struts2的特点与比较
2013-04-12 11:17 1029Struts1与Struts2的特点与 ... -
struts2整合jasper模版生成PDF导出下载<四>
2012-08-18 14:57 2646(2)先生成pdf文件,然后通过strut2下载: resp ... -
struts2整合jasper模版生成PDF导出下载<三>
2012-08-18 14:34 1481三,编写java程序,生成pdf文件 此处有多钟方式:也可以 ... -
struts2整合jasper模版生成PDF导出下载<二>
2012-08-18 14:24 1087jasperreport模版制作过程可参见: http://w ... -
struts2整合jasper模版生成PDF导出下载<一>
2012-08-18 14:14 1324被这个问题困扰了好几天,今天终于解决。现在我将呈现如何用Str ... -
struts2弹出下载页面
2012-07-30 15:25 807有时候配置struts2的action时:少了<para ...
相关推荐
这个“Struts2实例3源码”压缩包很可能是为了帮助开发者理解并实践Struts2框架的用法,通过具体的代码示例来学习其核心概念和功能。 Struts2的核心特性包括: 1. **Action和Result**:在Struts2中,Action是处理...
Struts2是一个强大的MVC(Model-View-Controller)框架,它是Apache...以上就是Struts2实例工程中涉及的关键知识点,通过学习和实践这些内容,开发者可以更好地理解和运用Struts2框架来开发高效、稳定的Java web应用。
本实例“Struts2实例4”旨在深入探讨和展示Struts2框架的实际应用,帮助开发者理解如何在项目中有效地利用其功能。 在Struts2框架中,我们首先需要了解的是其核心概念——Action类。Action类是业务逻辑的载体,负责...
在本实例中,我们将深入探讨如何使用Java来编写一个Struts2应用。 首先,让我们了解Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑通常由Action类执行。Action类是Java类,它实现了`...
本实例“Struts2实例5”旨在深入理解和应用Struts2的核心特性,帮助开发者更加熟练地使用该框架进行项目开发。下面我们将详细探讨Struts2的相关知识点。 1. **Struts2框架基础** Struts2是Apache软件基金会的一个...
这个“Struts2实例代码”压缩包提供了具体的实现示例,帮助开发者理解并掌握Struts2框架的使用。 在实际应用中,Struts2框架提供了一种组织应用程序结构的方式,它简化了HTTP请求与业务逻辑之间的映射,使得开发者...
在这个实例中,我们将深入探讨Struts2的核心概念、配置以及如何创建一个简单的应用程序。 首先,理解Struts2的核心理念至关重要。Struts2框架通过提供一系列拦截器(Interceptor)来处理HTTP请求,这些拦截器按照预...
这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...
### Struts2 实例 HelloWorld 知识点解析 #### 一、概述 在学习Struts2框架时,通常会从最简单的“Hello World”实例开始。这种实例不仅可以帮助初学者快速上手,还能让大家对Struts2的工作原理有一个基本的理解。...
在这个“Struts2实例3”的主题中,我们将深入探讨Struts2的核心特性、工作原理以及如何通过实际操作来应用这些概念。下面,我们将详细讨论Struts2的关键知识点。 1. **Struts2架构**: Struts2框架基于拦截器...
Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-...文档“struts2struts2实例和详细介绍.doc”应该会提供更详细的指导和示例代码,帮助你深入理解和运用Struts2框架。
通过深入研究这个“struts2实例源码2”,开发者不仅可以理解Struts2框架的基本工作原理,还能学习到如何在实际项目中应用这些概念,提高开发效率和代码质量。同时,这也为进一步探索其他高级特性,如AOP(面向切面...
这个"struts2实例源码1"可能是为了演示如何在实际项目中使用Struts2框架。 在Struts2中,以下是一些核心概念和关键知识点: 1. **Action类**:Action类是处理用户请求的核心组件。每个Action类通常对应于一个特定...
在这个“Struts2实例小程序1”中,你将开始接触并理解Struts2的基本概念和工作流程,这对于初学者来说是一个很好的起点。 1. **Struts2入门**: - **MVC模式**:Struts2遵循MVC设计模式,将业务逻辑、数据和展示...
这个"struts2实例.zip"压缩包包含了Struts2框架的实际应用代码,旨在帮助开发者理解和掌握Struts2的核心功能和工作原理。下面将详细阐述Struts2的关键特性以及在实际开发中的应用。 1. **MVC架构**:Struts2基于...
在本实例"Struts2实例 BBS"中,我们将深入探讨如何使用Struts2实现一个基本的论坛系统,该系统具备增删改查(CRUD)功能,且不包含冗余或无效代码。以下是对这一实例的详细分析: 首先,我们来看看Struts2框架的...
struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例struts2简单应用实例
在这个"PageOffice MVC Struts2实例"中,我们将探讨如何利用PageOffice控件在Struts2框架下实现Office文档的在线编辑与保存功能。 PageOffice是一款强大的Java办公组件,它可以无缝集成到各种Java应用中,支持用户...