Struts2开发笔记三

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值