Struts2开发笔记三

xiaoxiao2021-02-28  83

Struts2的工作原理

客户端向服务器端提交请求,容器初始化HttpServletRequest请求对象。

请求对象被一系列的Servlet过滤器过滤,Struts2中的过滤器有三种。

FilterDispatcher过滤器调用ActionMapper,决定该请求是否需要调用某个Action。

如果请求需要调用某个Action,ActionMapper将通知FilterDispatcher过滤器把请求的对象交给ActionProxy来处理。

ActionProxy通过Configuration Manager 解析框架的配置文件struts.xml,找到需要调用的Action类。

ActionProxy创建一个ActionInvocation实例。

ActionInvocation实例使用命令模式回调Action中的execute()方法,Action调用业务逻辑类完成业务逻辑处理。在调用Action的前后,将调用该Action实际的相关拦截器(Interceptor)。

Action执行完毕,ActionInvocation根据struts.xml中的配置找到相应的返回结果(成为Result)。

自定义拦截器

用户请求

购物车 订单 后台管理 onClick(); (所有非login,必须某个操作之后才进行的操作)

第一步:创建拦截器

自定义过滤器继承 AbstractInterceptor public class LoginInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { User user = (User) ServletActionContext.getRequest().getSession() .getAttribute("user"); if (user != null) { // 继续调用下边的过滤器 return invocation.invoke(); } else { return "login"; } } }

第二步:配置过滤器

<!-- 配置登陆拦截的过滤器 --> <interceptors> <interceptor name="loginIntercepter" class="com.example.validate.demo7.LoginInterceptor"> </interceptor> </interceptors>

第三步:配置某些action的拦截效果

<!-- 对需要拦截的action添加过滤器 ,先添加默认的过滤器,再添加自定义过滤器--> <action name="good_*" class="com.example.validate.demo7.GoodAction" method="{1}"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginIntercepter"></interceptor-ref> <result name="login"> /login.jsp</result> </action>

设置默认的拦截器

<interceptors> <!-- 配置登陆拦截的过滤器 --> <interceptor name="loginIntercepter" class="com.example.validate.demo7.LoginInterceptor"> </interceptor> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginIntercepter"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="mydefault"></default-interceptor-ref>

ssh框架相关jar包和api,json,jquery,ajax

转载请注明原文地址: https://www.6miu.com/read-78120.html

最新回复(0)