struts2

*struts2如何配置拦截器
	1.新建类(该拦截器用户计算执行action的时间)
		package net.sxif.vote.interceptor;
		import com.opensymphony.xwork2.ActionInvocation;
		import com.opensymphony.xwork2.interceptor.AbstractInterceptor;


		@SuppressWarnings("serial")
		public class MyTimeInterceptor extends AbstractInterceptor {


		@Override
		public String intercept(ActionInvocation invocation) throws Exception {
			long startTime=System.currentTimeMillis();
			String result=invocation.invoke();
			long executionTime=System.currentTimeMillis()-startTime;
			System.out.println("The interval time is"+executionTime+"millisecond");
			return result;
		}
	}
	2.struts.xml中配置interceptor
	<?xml version="1.0" encoding="UTF-8" ?>
	<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
	<struts>
	
	<package name="default" extends="struts-default">
		<!-- 定义拦截器 -->
		<interceptors>
			<!-- 定义myTime拦截器 -->
			<interceptor name="myTime" class="net.sxif.vote.interceptor.MyTimeInterceptor">
			</interceptor>
			<!-- 定义拦截器栈 -->
			<interceptor-stack name="myStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="myTime"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 定义默认拦截器 -->
		<default-interceptor-ref name="myStack"></default-interceptor-ref>

*拦截器实现身份验证
	1.设计类
		package net.sxif.vote.interceptor;
		import java.util.Map;
		import net.sxif.vote.entity.User;
		import net.sxif.vote.util.AllKeys;
		import com.opensymphony.xwork2.ActionInvocation;
		import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
		@SuppressWarnings("serial")
		public class AuthorizationInterceptor extends AbstractInterceptor {


			@SuppressWarnings("unchecked")
			@Override
			public String intercept(ActionInvocation invocation) throws Exception {
				//如果请求的action是login登陆的话不执行下面的拦截器
				String theName=invocation.getInvocationContext().getName();
				if(theName.equals("loginAction")){
					return invocation.invoke();
				}
				Map session=invocation.getInvocationContext().getSession();
				User user=(User)session.get(AllKeys.SESSION_USER_KEY);
				if(user==null){
					return "toLogin_success";
				}
				return invocation.invoke();
			}
		}
	2.配置xml文件
		<?xml version="1.0" encoding="UTF-8" ?>
		<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
		<struts>
		<package name="default" extends="struts-default">
		<!-- 定义拦截器 -->
		<interceptors>
			<interceptor name="author" class="net.sxif.vote.interceptor.AuthorizationInterceptor"></interceptor>
			<!-- 定义拦截器栈 -->
			<interceptor-stack name="myStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="author"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 定义默认拦截器 -->
		<default-interceptor-ref name="myStack"></default-interceptor-ref>


		
		
		
		***action中如何获取session
	public String login(){
		Map session=ActionContext.getContext().getSession();//获取session
		User u=(User)userBiz.login(user.getName(),user.getPassword());
		if(u!=null){
			session.put(AllKeys.CURRENTUSER, u);
		}
		return null;
	}


*Struts2中可以通过三种方式实现Dynamic Method Invocation
	1.method属性
	第一种:在struts.xml的<action/>中指定method属性
	如果将<action/>中的method属性设置为method="abc"的话,具体执行过程如下
	如果一个<s:form action="login">,那么就会生成LoginAction类的一个实例
	接着就会由abc()方法来进行处理表单的请求,而不会自动的调用execute()方法了


	2.页面中指定
	第二种:在页面中指定调用Action类中的具体的方法
	在前台页面中设定成<s:form action="login!hello.action">
	在struts.xml中为<action name="login" class="com.jadyer.action.LoginAction">
	这样当发送请求时,就会自动跳转到LoginAction中,然后执行里面的hello()方法
	这种方式的作用与第一种设定method属性的方式,最终实现的效果都是一样的


	3.使用通配符 
	第三种:使用通配符通过模糊匹配的方式调用Action的方法
	符号有三种,分别为  *    **    /  
	在struts.xml中设定为<action name="*User" class="...UserAction" method="{1}">
	假设在前台页面中设定成<s:form action="addUser">

 *struts2中配置编码,配置默认action,配置全局结果
	<?xml version="1.0" encoding="UTF-8" ?>
	<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
	<struts>
	<!-- 设置编码 -->
	<constant name="stuts-il8n-encoding" value="utf-8"></constant>
	<package name="default" extends="struts-default">
		<!-- 定义默认的action -->
		<default-action-ref name="defaultAction"></default-action-ref>
		<!-- 定义全局结果,如果出现错误跳转至该页 -->
		<global-results>
			<result name="error" type="redirect">error.html</result>
		</global-results>
		<action name="defaultAction">
			<result>/fileNotFound.html</result>
		</action>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值