`
Lewis·Lee
  • 浏览: 66079 次
  • 性别: Icon_minigender_1
  • 来自: 台州
社区版块
存档分类
最新评论

Struts 2 - 在 web.xml 中配置拦截器和前后台权限过滤器

阅读更多

现在只是为将来总结提示一下,以后再将运行流程详细解说并将源码添加到附件上,同时加深自己对 Struts 运行机制。

Architects Guide

Struts 2 框架架构图

Figure 1  Struts 2 Framework's Architecture

 

 

AuthorityFilter.java

 

package com.tucue.interceptor;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 文件名称:AuthorityFilter.java
 *
 * 版权信息:TD 实验室
 *
 * 创建日期:2010-6-24
 *
 * 修改历史:
 */

/*
 * 类的功能描述:登录权限过滤器
 * 
 * 作者:Li Huagang
 */
public class AuthorityFilter implements Filter {

	// @see javax.servlet.Filter#destroy()
	@Override
	public void destroy() {
	}

	// @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
	@Override
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) res;
		String uri = request.getRequestURI();
		// 过滤所有的 *.jsp 请求
		if (uri.contains("jsp") || uri.contains("html") || uri.contains("htm")) {
			HttpSession session = request.getSession();
			if (session.getAttribute(AuthorityInterceptor.LOGINED_FLAG) == null) {
				response.sendRedirect(request.getContextPath() + "/admin/jumpLoginPage.action");
				return ;
			}
		}
		chain.doFilter(req, res);

		return ;
	}

	// @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	@Override
	public void init(FilterConfig paramConfig) throws ServletException {
	}

}

 

AuthorityInterceptor.java

package com.tucue.interceptor;

import static com.opensymphony.xwork2.Action.ERROR;

import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
 * 文件名称:AuthorityInterceptor.java
 *
 * 版权信息:TD 实验室
 *
 * 创建日期:2010-4-22
 *
 * 修改历史:
 */

/*
 * 类的功能描述:登录权限拦截器
 * 
 * 作者:Li Huagang
 */
public class AuthorityInterceptor extends AbstractInterceptor {
	private static final long serialVersionUID = 1770471187955003755L;
	
	public static String LOGINED_FLAG = "logined";	// 判断用户是否已登录
	
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("text/html;charset=UTF-8");
		Map<?,?> session = invocation.getInvocationContext().getSession();
		Object logined = session.get(AuthorityInterceptor.LOGINED_FLAG);

		if (logined == null) {
			return ERROR;
		} else {
			return invocation.invoke();
		}
	}
}
 

 

 

  • 大小: 64.7 KB
分享到:
评论

相关推荐

    struts2-login校验.rar

    总的来说,"struts2-login校验.rar"中的内容展示了如何使用Struts2框架实现用户登录功能,包括Action配置、拦截器使用、登录验证、页面跳转等核心概念,同时涉及到Tomcat服务器的部署和运行。这是一个基础但重要的...

    struts2技巧,笔记.zip指定404,500页面 utf-8过滤器 防SQL注入 解决乱码

    在web.xml中添加此过滤器并配置为全局过滤器,可以确保所有请求都使用UTF-8编码,避免乱码问题。 5. **Struts2详解**: Struts2框架的核心包括Action、Interceptor(拦截器)、Result和Value Stack等组件。Action...

    struts2.2 项目搭建 以及与 struts2-json jquery 前后台进行交互

    - **配置web.xml**:在`WEB-INF`目录下的`web.xml`中配置Struts2的核心过滤器`&lt;filter&gt;`和`&lt;filter-mapping&gt;`。 - **创建Action类**:编写处理用户请求的Java类,继承自`ActionSupport`,并实现相应的方法。 - **...

    struts2简单实例

    - 项目结构:"Web2"目录可能包含WEB-INF下的`web.xml`文件,配置了Struts2的过滤器,以及其它Web应用所需的资源。 - 运行环境:这个实例需要在Tomcat或类似的Servlet容器中部署运行,用户通过浏览器发起HTTP请求,...

    struts2 源码绝对完整

    在这个版本中,我们可以深入理解Struts2的工作原理,学习如何实现控制器、拦截器、配置管理以及动作等核心概念。 Struts2的核心组件包括以下几个方面: 1. **Action**:Action是业务逻辑的载体,它是处理用户请求...

    struts拦截器介绍

    在Struts2中,拦截器(Interceptor)是一个至关重要的概念,它扮演着处理请求、增强功能和控制流程的角色。拦截器是在Action调用前后执行的一系列方法,它们按照特定的顺序组成一个链,可以对请求进行拦截、处理并...

    Struts2开发用户管理后台系统源代码

    用户管理后台系统的配置文件(struts.xml或类似的配置文件)定义了Action的映射、结果类型、拦截器链等。例如,这里可能会有UserManagerAction的配置,指定其处理的请求路径、执行的方法以及返回的结果页面。 4. *...

    Struts2_EasyUI_Spring3.1整合

    - 配置Struts2:创建`struts.xml`配置文件,定义Action、Result和拦截器栈。 - 配置Spring:创建`applicationContext.xml`,定义bean和依赖关系,如果使用Spring的AOP,还需配置切面。 - 配置web.xml:设置Struts...

    ssm easyui 后台权限管理系统

    SSM EasyUI 后台权限管理系统是一个基于Struts2、Spring和MyBatis三大主流Java Web框架,并结合EasyUI前端库构建的权限管理解决方案。它主要用于实现后台的用户权限控制,提供灵活的角色分配和资源权限管理,以确保...

    struts2_工作流程

    在Web应用的配置中,Struts2通过`StrutsPrepareAndExecuteFilter`过滤器注册,因此容器会将请求交给这个过滤器进行处理。 2. **过滤器查询ActionMapper**:过滤器会查询ActionMapper来确定请求是否对应于一个可执行...

    jqGrid与Struts2的结合应用

    1. **配置Struts2**:首先,需要在项目的`struts.xml`配置文件中添加jqGrid相关的Action,这些Action负责处理来自jqGrid的AJAX请求,获取或更新服务器端的数据。 2. **创建Grid**:在前端页面上,通过HTML和...

    ssh框架+extjs4.0grid实例

    - `web.xml`:Web应用的部署描述符,配置过滤器、监听器和Servlet。 这个实例展示了如何将SSH框架与ExtJS 4.0集成,实现数据的动态展示和操作。开发者可以通过此项目学习到如何使用Struts2 Action返回JSON数据,...

    投票系统基于struts2

    总结来说,"投票系统基于Struts2"是一个涵盖了用户管理、数据处理、安全控制、文件上传等多方面功能的项目,它充分利用了Struts2框架提供的工具和技术,展示了Struts2在构建复杂Web应用中的强大能力。

    struts_menu

    9. **部署配置**:如web.xml,是Web应用的部署描述符,可能包含了Struts2的初始化参数和过滤器配置。 总体来说,Struts_menu项目是一个使用Struts 2.3框架构建的菜单管理系统,通过Action、Interceptor和视图文件...

    struts2 + jasper report

    1. `struts.xml`:Struts2的核心配置文件,定义了Action和拦截器的配置,以及Action与视图的映射。 2. `jasperreports.xml`:JasperReport的配置文件,可能包含了报表模板的路径和输出设置。 3. `.jrxml`文件:报表...

    BBSStruct2在线论坛前后台管理系统

    总结来说,BBSStruct2在线论坛前后台管理系统是一个涵盖了Web开发基础知识、数据库设计、权限管理等多个领域的实践项目,对于提升Java Web开发者的技术水平具有很高的学习价值。通过深入研究并修复其中的错误,...

    strus的后台登陆系统

    5. **拦截器**:Struts2的拦截器允许我们在Action执行前后添加额外的功能,比如日志记录、权限检查等。在登录系统中,我们可能使用`ParamsInterceptor`来自动将表单参数绑定到Action属性,或者自定义拦截器来实现...

    java工作总结

    - 配置在`web.xml`或`struts.xml`中。 2. **过滤器** - 对特定URL后缀的请求进行过滤,例如`.html`或`.action`。 ### 四、接口开发 1. **接口文档** - 包括URL地址、输入参数、返回参数。 - 在SSH(Struts + ...

    jqgrid+struts2实现的增删改查

    1. **配置 Struts2**:首先,需要在项目的 `struts.xml` 配置文件中设置Action类及其对应的URL映射,以及指定使用的Result类型,通常是 `json` 或 `json-default`,以便返回JSON数据给jqGrid。 2. **创建Action类**...

Global site tag (gtag.js) - Google Analytics