`

Struts2登陆拦截器

阅读更多
package com.nantian.surveypark.struts2.action;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.nantian.surveypark.domain.Survey;
import com.nantian.surveypark.domain.User;
import com.nantian.surveypark.service.SurveyService;

/**
*
*/
@Controller
@Scope("prototype")
public class SurveyAction extends BaseAction<Survey> implements UserAware {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Resource
	private SurveyService surveyService;
	// 接受session的user对象
	private User user;
	private List<Survey> mySurveys;

	public List<Survey> getMySurveys() {
		return mySurveys;
	}

	public void setMySurveys(List<Survey> mySurveys) {
		this.mySurveys = mySurveys;
	}

	/*
	 * 新建调查
	 */
	public String newSurvey() {
		this.model = surveyService.newSurvey(user);
		return "designSurveyPage";
	}

	/**
	 * 查询我的调查
	 */
	public String mySurveys() {
		this.mySurveys = surveyService.findMySurveys(user);
		return "mySurveyListPage";
	}

	// 注入user对象
	public void setUser(User user) {
		this.user = user;
	}

}

 

package com.nantian.surveypark.struts2.action;

import com.nantian.surveypark.domain.User;

/**
 * 用户关注接口
 */
public interface UserAware {
	public void setUser(User user);
}

 

package com.nantian.surveypark.struts2.interceptor;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.nantian.surveypark.domain.User;
import com.nantian.surveypark.struts2.action.BaseAction;
import com.nantian.surveypark.struts2.action.LoginAction;
import com.nantian.surveypark.struts2.action.RegAction;
import com.nantian.surveypark.struts2.action.UserAware;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/**
 * LoginInterceptor
 */
public class LoginInterceptor implements Interceptor {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2780249243216901184L;

	public void destroy() {

	}

	public void init() {

	}

	@SuppressWarnings("rawtypes")
	public String intercept(ActionInvocation invocation) throws Exception {
		BaseAction action = (BaseAction) invocation.getAction();
		if (action instanceof LoginAction || action instanceof RegAction) {
			return invocation.invoke();
		}
		// 登录判断
		else {
			HttpSession s = ServletActionContext.getRequest().getSession();
			User user = (User) s.getAttribute("user");
			if (user == null) {
				return "login";
			} else {
				// 处理action的user注入问题
				if (action instanceof UserAware) {
					((UserAware) action).setUser(user);
				}
				return invocation.invoke();
			}
		}
	}

}

 

<?xml version="1.0"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<!-- 简单主题 -->
	<constant name="struts.ui.theme" value="simple" />
	<!-- 开发模式 -->
	<constant name="struts.devMode" value="true" />
	<package name="surveyParkPkg" namespace="/" extends="struts-default">
		<interceptors>
			<!-- 注册自定义登录拦截器 -->
			<interceptor name="loginInterceptor" class="com.nantian.surveypark.struts2.interceptor.LoginInterceptor" />
			<!-- 自定义拦截器栈 -->
			<interceptor-stack name="surveyparkStack">
				<interceptor-ref name="loginInterceptor" />
				<interceptor-ref name="defaultStack">
					<param name="modelDriven.refreshModelBeforeResult">true</param>
				</interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 定义默认栈 -->
		<default-interceptor-ref name="surveyparkStack" />
		<!-- 定义全局结果 -->
		<global-results>
			<result name="login">/index.jsp</result>
		</global-results>
		<!-- regAction -->
		<action name="RegAction_*" class="regAction" method="{1}">
			<result name="regPage">/reg.jsp</result>
			<result name="success">/index.jsp</result>
			<result name="input">/reg.jsp</result>
		</action>
		<!-- loginAction -->
		<action name="LoginAction_*" class="loginAction" method="{1}">
			<result name="loginPage">/index.jsp</result>
			<result name="success">/index.jsp</result>
			<result name="input">/index.jsp</result>
		</action>
		<!-- SurveyAction -->
		<action name="SurveyAction_*" class="surveyAction" method="{1}">
			<result name="designSurveyPage">/designSurvey.jsp</result>
			<result name="mySurveyListPage">/mySurveyList.jsp</result>
		</action>
	</package>
</struts>

 

分享到:
评论

相关推荐

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

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

    Struts2 配置登陆拦截器

    在Struts2中,拦截器是实现业务逻辑控制和处理流程的重要组件,它们可以添加额外的功能,如日志记录、权限检查、事务管理等,而不干扰实际的业务操作。本篇文章将详细介绍如何配置Struts2的登录拦截器,以及其背后的...

    Struts拦截器案例——登陆

    总结起来,这个"Struts拦截器案例——登陆"涵盖了Struts2拦截器的基本使用、登录验证、数据库操作以及异常处理等多个方面。通过学习这个案例,开发者可以更好地理解和掌握Struts2框架中的拦截器机制,从而在实际项目...

    Struts2 拦截器 手动验证 或 自动验证 后台登录验证 源码

    2. 注册拦截器:在Struts2的配置文件(如struts.xml)中,将这个拦截器添加到默认栈或者自定义拦截器栈中。 3. 检查登录状态:在`intercept()`方法中,可以通过Session或者其他方式检查用户是否已登录,未登录则返回...

    struts2实现的简单登陆 附加拦截器防止重复提交

    在这个"struts2实现的简单登陆 附加拦截器防止重复提交"的项目中,我们将深入探讨Struts2如何处理用户登录以及如何通过拦截器来防止重复提交的问题。 首先,我们来理解一下Struts2的核心概念。Struts2框架基于...

    struts2上传文件及拦截器

    struts2上传单个文件及多个文件,strus2拦截器的使用,里面有个user用户,先执行user.jsp即登陆,可以执行上传文件的操作,反之,不能,有个exit.jsp,退出之后不能执行。里面含有jar文件,导入myeclipse可以执行...

    使用Struts2的拦截器实现权限控制

    Struts2 框架是Java Web开发中的一个强大MVC框架,它的核心特性之一是拦截器(Interceptor),它允许开发者在Action执行前后插入自定义的处理逻辑,从而实现诸如日志、权限控制、事务管理等多种功能。在这个场景中,...

    struts2 登陆注册 以及验证

    在Struts2中,我们还可以利用拦截器(Interceptor)增强功能,如登录拦截器可以检查用户是否已经登录,未登录时重定向到登录页面。日志拦截器可以记录请求信息,帮助调试和监控。 文件"hello_struts2"可能包含了...

    struts2 登陆注册

    3. **拦截器**:Struts2的拦截器可以进行全局性的操作,比如登录检查、权限验证等。在登录注册中,我们可能会用到`Params`拦截器来处理表单参数,`Validation`拦截器来进行数据验证。 4. **结果类型(Result)**:...

    struts2登陆例子

    3. **拦截器(Interceptors)**:Struts2的核心特性之一是拦截器,它们可以插入到Action调用链中,执行额外的任务,如日志记录、权限检查等。在登录场景中,可能有一个验证用户凭据的拦截器。 4. **结果(Results)...

    struts2登陆案例

    Struts2框架通过拦截器处理请求,拦截器链可以实现诸如参数绑定、类型转换、异常处理等功能。在登录案例中,Struts2会自动将表单数据绑定到Action类的属性上,无需手动获取请求参数。 总结一下,Struts2登录案例...

    tab标签页和struts2登陆.rar

    此外,Struts2支持拦截器(Interceptor),这些拦截器可以插入到Action执行流程中,提供额外的功能,如登录检查。你可以创建一个自定义拦截器,确保只有已登录的用户才能访问特定的Action。在Struts2配置文件中,将...

    struts2登陆验证

    4. **拦截器(Interceptor)**:Struts2的拦截器可以用来增强Action执行前后的功能,比如登录验证。可以创建自定义的拦截器来检查Session中是否有已登录的用户,或者直接在Action中进行验证。 5. **数据验证**:在...

    Struts拦截器实现拦截未登陆用户实例解析

    Struts拦截器实现拦截未登陆用户实例解析 Struts拦截器是Struts2框架中的一个重要组件,它可以在Action执行之前或之后进行拦截,实现一些公共的逻辑操作。今天,我们将讲解如何使用Struts拦截器来实现拦截未登陆...

    struts拦截器防止未登陆访问内部系统

    本文深入探讨如何利用Struts2的拦截器特性实现有效的登录验证,包括超时后的跳转处理。 #### 一、拦截器的概念 拦截器(Interceptor)是Struts2框架中的关键组件之一,用于在执行Action之前或之后进行一系列的...

    struts2简单的登陆验证

    4. **拦截器(Interceptor)**:Struts2的拦截器机制允许在Action执行前后插入自定义逻辑,如登陆验证。通常,一个名为`validation`的拦截器会检查Action的输入是否有效,而`login`拦截器则处理实际的登陆验证。 5....

    Struts2登陆页面项目.zip_java_myeclipse_struts2

    此外,Struts2使用配置文件(如struts.xml)来管理Action、结果和拦截器,使得整个应用的结构清晰可维护。 在MyEclipse中,开发者通常会创建一个Struts2项目,包含src目录、WebContent目录等。源代码通常分布在src...

    struts2登陆代码

    2. **配置文件**:Struts2的配置文件(通常是`struts.xml`或`struts-default.xml`)定义了Action类和Action方法之间的映射关系,以及拦截器的配置。在登录场景下,我们需要配置`LoginAction`及其相关操作的结果。 `...

    Struts2登陆简例

    4. **拦截器(Interceptor)**:Struts2的拦截器机制允许在Action执行前后插入额外的处理逻辑。在登录场景中,可以使用`params`拦截器来处理表单参数,`validation`拦截器进行表单验证,以及可能的`login`自定义拦截...

    简单的struts 2的登陆界面

    5. **Interceptor(拦截器)**:Struts 2的拦截器机制允许我们在Action执行前后添加自定义逻辑,如验证、日志等。对于登录,我们可以使用预定义的`params`拦截器来处理表单参数,以及自定义的`validation`拦截器进行...

Global site tag (gtag.js) - Google Analytics