zoukankan      html  css  js  c++  java
  • Struts2工作流程

    原理概述:

    1、浏览器发起请求,经过一系列过滤器,到达核心过滤器StrutsPrepareAndExecuteFilter
    2、通过actionMapper将请求交给Action代理,查询配置文件中需要调用的action,在调用前后会执行相关拦截器(登陆判断,用户权限)
    3、创建一个actionInvocation实例,执行业务逻辑,返回结果集呈现给用户
    缺点: 
      1、struts1的核心是个servlet ,与servlet API严重耦合,难于测试,而且还是单例,就造成了一定的限制。资源必须为线程安全或者同步
        而struts2的核心是个过滤器,为每一个请求实例化一个对象,所以没有线程安全的问题。
      2、struts1的Action类依赖于servlet API 属于侵入式设计 。struts2的Action与容器无关
      3、struts1整合Jstl标签,所以就使用JSTL表达语言。struts2使用JSTL,也支持更灵活的OGNL
      4、struts1用ActionForm对象来获取输入,并且还有验证功能。
        struts2 Action属性作为输入属性,就减少了第二个输入对象的需要

    详解:

    1、在浏览器中输入http://localhost:8080/Self/LoginAction?account=123,就会向服务器端(tomcat)发送一个请求

    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
            <init-param>
                <param-name>actionPackages</param-name>
                <param-value>com.selfpackage.action</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    2、tomcat会解析URL,在web.xml文件找到filter标签,过滤url-pattern中的地址

    @Namespace("/")
    @Action(value = "LoginAction", results = {
                // 成功跳转到主页面main.jsp
                @Result(name = "success", location = "main/main.jsp"),
                //@Result(name = "success", type="chain", location="preselectgroupAction"),
                // 失败跳转到登陆页面login.jsp
                @Result(name = "input", type = "chain", location = "nav_login")})
    public String login() throws Exception {
      ……
      return success;
    }

    3、在struts.xml中的package标签中的namespace中得到它的值,这里通过注解实现

    4、根据返回的String字符串(success),在result中找到name属性值为返回的String字符串的标签

    5、最后jsp反馈到客户端

    博客园:http://www.cnblogs.com/zhuziyu/
    Copyright ©2018 不是植物
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    机器学习算法最深刻的讲解,包含海量数据处理算法
    从海量数据中寻找出topK的最优算法代码
    转载:基于 Hive 的文件格式:RCFile 简介及其应用---推酷
    原创:自定义三叉树(二)--基于搜索推荐系统根据用户搜索频率(热搜)排序
    原创:协同过滤之ALS
    AT2705 Yes or No(组合数学)
    LUOGU P4609 [FJOI2016]建筑师(第一类斯特林数)
    BZOJ 4710: [Jsoi2011]分特产(容斥)
    51nod 1518 稳定多米诺覆盖(容斥+二项式反演+状压dp)
    BZOJ 3944: Sum(杜教筛)
  • 原文地址:https://www.cnblogs.com/zhuziyu/p/8563241.html
Copyright © 2011-2022 走看看