struts2的拦截器的简单使用

login.jsp页面body中

<s:form action="user_login.action" method="post">
   		<s:textfield name="username" label="用户名"/>
   		<s:password name="password" label="密码"/>
   		<s:submit value="登陆"/>
 </s:form>

show.jsp页面body中

有权限登陆后的页面:<s:property value="username"/>---<s:property value="password"/>

只有用户名为admin和密码为admin时才能登陆显示show.jsp页面,否则都返回到login.jsp页面

LoginAction类是简单处理登陆的action

public class LoginAction extends ActionSupport{
	private String username;
	private String password;

	public String login(){
		System.out.println(username+"---"+password);
		return "login";
	}
	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;
	}

}

拦截器PermissionInteceptor

public class PermissionInterceptor extends AbstractInterceptor{

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		Map<String,Object> params = invocation.getInvocationContext().getParameters();
		String username = null;
		String password = null;
		for(Map.Entry<String, Object> ma : params.entrySet()){
			String key = ma.getKey();
			if(key.equals("username")){
				String[] values = (String[]) params.get(key);
				username = values[0];
			}
			if(key.equals("password")){
				String[] values = (String[]) params.get(key);
				password = values[0];
			}
		}
		if(username.equals("admin")&&password.equals("admin")){
			return invocation.invoke();
		}
		return "back_login";
	}

}

struts.xml的配置

<struts>
	<constant name="struts.devMode" value="true" />
	<package name="user" namespace="/" extends="struts-default">
		<interceptors>
			<interceptor name="permission" class="cn.axin.interceptor.PermissionInterceptor"/>
			<interceptor-stack name="permStack">
				<interceptor-ref name="defaultStack"/>
				<interceptor-ref name="permission"/>
			</interceptor-stack>
		</interceptors>

		<!-- 测试:http://localhost:8080/struts2_practice03/login.jsp -->
		<action name="user_*" class="cn.axin.action.LoginAction" method="{1}">
			<result name="login">/show.jsp</result>
			<result name="back_login">/login.jsp</result>
			<interceptor-ref name="permStack"/>
		</action>
	</package>
</struts>
时间: 2024-10-07 04:51:51

struts2的拦截器的简单使用的相关文章

Struts2中拦截器的简单实现

Struts2的拦截器和Servlet过滤器类似.在执行Action的execute方法之前,Struts2会首先执行struts.xml中引用 的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Action的execute方法.在Struts2的拦截器体系中, Struts2的内建拦截器完成了该框架的大部分操作,所以实际的开发过程中通常都是使用系统的拦截器而已.当然我们也可以开发自己的拦截器,类似于过滤器的开发. 原理: Struts2拦截器的实现原理相对简单,当请求Stru

struts2 在拦截器进行注入(根据Action是否实现自定义接口)

例如:常常在Action中都需要获取当前登录的User,就需要获取Session,然后从Session获取当前登录的User,因为这些步骤都是重复操作,可以想办法在拦截器中进行实现,可以自定义一个接口,只要你的Action实现了这个接口,就在自定义拦截器中进行注入.即从拦截器中获取Session,然后设置进行注入. 简单的例子: 一个自定义接口,只要Action实现这个接口,就在拦截器中进行注入 package com.atguigu.surveypark.struts2; import com

struts2 灵魂拦截器

此文还是小零食..我将会用最通俗易懂的方式 来解释 面向切面编程 AOP 话不多说上图 管理拦截器最好的解释 就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作. 这货还有一个说法 就是可插拔因为Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,所以你可以先他插入可以

谈谈 Struts2 的拦截器

套话 相信很多人都用过 Struts2 了,当然,对 Struts2 的原理也都比较了解.之前在一个项目中就已经用到了,当初的理解也仅仅是局限在应用的层面上,对于更深层次的原理.机制,了解的并不是很多.现在回过头来,再看 Struts2 的拦截器,相比之前的理解,又别有另一番滋味. 理解 Struts2 的拦截器,英文名为 Interceptor ,至于为什么中文要翻译为拦截器,我想这一定是有原因的,肯定不是一拍脑门,就叫拦截器了(它必定有什么含义在里边).从字面的意思,就是在发送请求的时候,有

【Struts2】拦截器

一.概述 二.在Struts2中使用拦截器 2.1 步骤 2.2 分析拦截器原理 2.3 关于interceptor与Filter区别: 三.案例 一.概述 介绍拦截器: struts2拦截器使用的是AOP(面向切面编程)思想.AOP的底层实现就是动态代理.拦截器采用责任链模式 ,在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.责任链每一个节点,都可以继续调用下一个节点,也可以阻止流程继续执行.struts2中在struts-default.xml文件中声明了所有的拦截器

【struts2】拦截器基础

1)拦截器是什么? 拦截器(Interceptor)是Struts2最强大的特性之一,它是一种可以让你在Action执行之前和Result执行之后进行一些功能处理的机制.来回顾一下官方给出的Struts2系统架构图中关于拦截器的部分,如下图所示: 这个图清晰的描述出了拦截器的运行地位,就是用来负责在Action执行之前和Result执行之后处理一些功能的类.也就是说,上图示意了有3个拦截器的类,分别是Interceptor1.Interceptor2和Interceptor3,它们分别执行不同的

Struts2自定义拦截器Interceptor以及拦截器登录实例

1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor{ private static final long serialVersionUID = 1L; public void destroy() { } public void init() {} public String intercept(ActionInvocation arg0) throws

struts2中拦截器和过滤器的比较

拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程(AOP)的就是在你的service或者一个方法前调用一个方法,或者在方法后调用

Struts2 自定义拦截器时Action无法接收到参数

问题:自定义拦截器,没有添加defaultStack导致Action无法接受到参数 解决办法: 方法一,添加defaultStack,然后在Action中引用 自定义的stack,其实defaultStack中也有细分如basicStack等 <interceptors> <interceptor name="checkUser" class="com.common.interceptor.UserInfoInterceptor"></