struts2重点知识点总结

1、首先strtus配置文件,这里我也就不做详细介绍了,反正是模板,也就给一个模板把

	<constant name="struts.ui.theme" value="simple"></constant>
	<constant name="struts.devMode" value="true"/>
	<constant name="struts.action.extension" value="do"></constant>
	
	<package name="members" namespace="/ld" extends="json-default">
	
	<global-results>
			<result name="close">/close.jsp</result>
			<result name="errorMsg">/errorMsg.jsp</result>
			<result name="404">/notFound.jsp</result>
	</global-results>
	<!-- 页面报错 -->
	<global-exception-mappings>
			<exception-mapping result="errorMsg" exception="java.lang.Exception"></exception-mapping>
	</global-exception-mappings>
		<action name="membersAction_*"  class="membersAction" method="{1}">
</package>
</struts>
struts拦截器

这里有两种拦截器配置方式,一种全局,一种局部。

	<div> <struts>
	<constant name="struts.devMode" value="true"></constant>
	<package name="mydefaultpackage" extends="struts-default">
		<interceptors>
			<!-- 定义拦截器 -->
			<interceptor name="demo1Interceptor" class="com.itheima.interceptors.Demo1Interceptor"/>
			<interceptor name="loginCheckInterceptor" class="com.itheima.action.LoginCheckInterceptor"/>
			<interceptor name="loginCheck1Interceptor" class="com.itheima.action.LoginCheck1Interceptor"/>
			<interceptor name="costTimeInterceptor" class="com.itheima.action.CostTimeInterceptor"/>
			
			<!-- 定义一个小组: 拦截器栈-->
			<interceptor-stack name="mydefault">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="costTimeInterceptor"></interceptor-ref>
			</interceptor-stack>
			
		</interceptors>
		<!-- 覆盖默认的拦截器栈 -->
		<default-interceptor-ref name="mydefault"></default-interceptor-ref>
	</package>
	<package name="p1" extends="mydefaultpackage">
		<action name="demo1" class="com.itheima.action.Demo1Action" method="m1">
			<result>/1.jsp</result>
		</action>
		<action name="*" class="com.itheima.action.Demo2Action" method="{1}">
			<!-- 一旦只认拦截器,默认拦截器将不起作用。
			<interceptor-ref name="loginCheck1Interceptor">
				 注入参数:参数值可以用逗号分隔
				<param name="excludeMethods">query</param>
			</interceptor-ref>
			 -->
			<result name="login">/login.jsp</result>
		</action>
	</package>
</struts>
</div>


那么如何编写拦截器呢,看下面的列子就有了。

 public class Demo1Interceptor extends AbstractInterceptor {
//返回值:最终目标的返回值。就是一个结果逻辑视图。对应struts.xml中的result
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("拦截前");
String rtValue = invocation.invoke();//放行
System.out.println("拦截后");
return rtValue;
}

}

注意:也许在这里你只看到了你ActionInvocation 类只有放行的方法,其实不然,它的功能强大着呢,具体看国家电网权限管理项目。

首先存取地点分为两个一个是value stack ,contextMap
如何把值放到value stack中呢
ServletActionContext.getContext().getValueStack().push(object);
还有一种方式request中的值是contextmap中的
我感觉值栈 与 value stack的主要区别在于value stack比值栈少了一寸,通过去值栈中的值要用#号,



contextmap中的数据

key

value

备注

application

ServeltContext中的所有属性attributes

相当于EL的内置对象applicationScope

session

HttpSession中的所有属性attributes

相当于EL的内置对象sessionScope

value stack(根)

他是一个List

 

action

动作类

 

request

ServletRequest中的所有属性

相当于EL的内置对象requestScope

parameters

Map map= request.getParameterMap()

相当于EL的内置对象paramValues

attr

从四大域范围中搜索

${}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值