1、struts2是什么

  struts2是用于企业级Web开发的框架,基于struts2开发Web应用程序,在开发效率、可扩展性、可维护性上都会大有提升。

2、struts2的优点

  struts2框架是典型的实现了MVC架构的框架,使用struts框架,通过struts2.xml文件配置非常容易的将数据层(模型)、控制层和视图展现层分离,开发出架构清晰的项目。

3、struts2的运行机制

  参见博客:http://www.cnblogs.com/tengpan-cn/p/5210155.html

4、struts2知识体系

  ① 如何搭建最简易的struts2程序

    结合struts2运行机制可知,首先在web.xml中配置struts2的过滤器;写struts2.xml文件(文件中可以include其他xml文件);写后台的action类(继承于ActionSupport类),类成员必须写get  set方法;编写前端展示页面即可;

  ② 关于struts.xml配置中的问题

  包(package):包的作用同Java中的包的作用是一样的,主要防止action的命名冲突,尤其是多个小组负责一个项目的时候;

    包可以继承,默认(必须在xml中写)继承 struts-default 包;

    namespace属性,值必须以“/”开头;对应客户端浏览器中的URL地址的一部分

  action标签:位于package标签里面,这个标签指定了后台逻辑,实现的是控制层;

    name属性对应的URL地址的一部分

    动态方法调用(通配符* 的应用)~~~~,此技术可以从客户端向服务器端的struts.xml文件中传递参数,实现动态配置;

    struts2是线程安全的,每次请求访问一个action 都会创建一个新的action对象。

    默认的action,可以为一个包配置一个默认的action,当找不到action的时候就会执行默认的action

  result标签,位于action标签里面,用于指定action执行完后,前台显示的内容,实现的是展示层;

    name属性默认值是success;

    type属性:可以设置为 dispatcher(服务器跳转到页面.jsp  .html等)、redirect(客户端跳转到页面)、chain(服务器端跳转到action)、redirectAction(客户端跳转到action) ;默认是dispatcher;

   关于struts中的路径:URL地址中的路径并不是文件的实际路径;也就是说,struts2寻找路径的方式不是按照文件保存路径去寻找的,而是根据package、action、result的这些对于关系找的。

   global-result标签:一个package对应一个global-result标签,这个标签内包含多个result标签,这个包内的所有action都可以使用这些result标签;

            其他包想要使用这些标签,可以继承这个包;

  

  前端与服务器端的数据交互

      前端向服务器端传递数据:通过get或者是post请求传递参数,在action中通过各种方式拿到request 请求即可     

      ①  ActionContext.getContext().get("request")  &  ActionContext.getContext().getSession()
      ②  ServletActionContext.getRequest();  
      ③  实现RequestAware、SessionAware接口(setRequest 与 setSession方法,入参是Map对象)(最常用)
      ④  实现ServerletRequestAware接口 
      或者是通过DOMmain(域模型) 直接赋值给action的属性。
      服务器端向前端传递参数:主要通过value stack 和 context stack,在服务器端通过request.setAttribute()  或者 session.setAttribute()将值放在值栈或者上下文栈中,然后通过ONGL表达式获取。《ONGL表达式》 
      也可以直接给action的属性赋值,在前端通过ONGL获取action的属性;
      关于传递中文乱码,解决方法有很多。推荐一种,就是自己写一个charsetEncoderFilter过滤器。具体参见《Encoding filter 编码过滤器
  动态结果集:在struts2.xml中获取action的属性值,这样产生动态结果集。获取方式${成员名};
  标签:
    <s:property value="ONGLExpression" default=""  />
    <s:set var="varName" value="varValue" />
    

    <s:bean var="dog" name="com.bjsxt.action.Dog" >
        <s:param name="name" value="'cacy'" />            <!-- cacy是Dog类的一个属性 -->
    </s:bean>
    这时候会将一个名字为dog的对象放在actionContext里面,类似于JSP的useBean
    

    

    控制标签:
      <s:if test="condition" ></s:if>
      <s:else if test="condition"></s:if>
      <s:else></s:else>
    

    

    遍历集合
      <iterator value="{1,2,3}" var="x"  status="status">
          <s:property />            //取出当前值 放在x变量中
          <s:property value="#status.count" />
        <s:property value="#status.index" />
      </iterator> 
 
   遍历Map
      <iterator value="#{1:'a', 2:'b' , 3:'c'}" var="x">
          <s:property value="key" /> |  <s:property value="value" />
          <s:property value="#x.key" /> |  <s:property value="#x.value" />    
      </iterator>
 
  <subset> 标签,截取集合
 
  关于% $ #的使用:
    %:配合{}使用,将字符串转化为ONGL表达式;
    #:相当于ActionContext. getContext(),可以用于访问context stack中的元素;用来构造Map  "#{"key1":"value1","key2":"value2"}"  (不太清楚为什么必须加#);用于过滤和投影;
    $: 在xml文件中取action的属性值。
 
 
                                    欢迎各位园友补充指正!!!

  

Struts2 知识体系的更多相关文章

  1. 学习Java的知识体系路线(详细完整版,附图加目录)

    将网上的Java学习路线图进行归纳囊括,方便以后学习时弥补自身所欠缺的知识点,也算是给自己一个明确的学习方向.至于第一阶段,即JavaSE的基础,这里不给出. 第二阶段 技术名称 技术内容 数据库技术 ...

  2. web前端知识体系总结

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

  3. 关于.NET知识体系结构图总结

    转载:关于.NET知识体系结构图总结-零度http://www.xcode.me/book/net-framework-maps 最近对.NET框架方面的知识进行了概要的总结,整理了一些知识体系结构图 ...

  4. Canvas 知识体系简单总结

    Canvas 知识体系简单总结 标签(空格分隔): HTML5 Canvas 本文原创,如需转载,请注明出处 前言 知识点零零散散,一个上午整理了一下,内容不多,方便记忆. 本文不是教程,如需教程移步 ...

  5. Atitit 图像处理知识点  知识体系 知识图谱v2

    Atitit 图像处理知识点  知识体系 知识图谱v2 霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像 ...

  6. Atitit 图像处理知识点  知识体系 知识图谱

    Atitit 图像处理知识点  知识体系 知识图谱 图像处理知识点 图像处理知识点体系 v2 qb24.xlsx 基本知识图像金字塔op膨胀叠加混合变暗识别与检测分类肤色检测other验证码生成 基本 ...

  7. Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview

    Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview   知识图谱的表示和在搜索中的展1 提升Google搜索效果3 1.找到最想要的信息.3 2.提供最全面的摘要.4 ...

  8. Java知识体系

    Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...

  9. 自己总结的web前端知识体系大全【欢迎补充】

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

随机推荐

  1. Spring的监听器ContextLoaderListener

    一.作用 ContextLoaderListener监听器的作用就是启动web容器时,自动装配ApplicationContext的配置信息.它实现了ServletContextListener接口, ...

  2. NodeJS学习指南

    七天学会NodeJS NodeJS基础 什么是NodeJS 有啥用处 如何安装 安装程序 编译安装 如何运行 权限问题 模块 require exports module 模块初始化 主模块 完整示例 ...

  3. CSS3的翻转效果

    css3图片与文字3D transform切换: http://www.w3cplus.com/demo/419.html 详细的CSS3属性详解: http://www.zhangxinxu.com ...

  4. ecshop里的$_CFG从哪来的

    以前经常有朋友问我, ecshop系统的$_CFG这个数组是从哪里来的,在哪里定义并赋值的.   下面就给大家说一下这个全局变量 $GLOBALS['_CFG']. ecshop里的 $_CFG数组主 ...

  5. asp.net javascript客户端调用服务器端方法

    如何用js调用服务器端方法.首先服务器端方法的格式如下 [System.Web.Services.WebMethod]        public static void serverMethod(s ...

  6. 1、JavaScript基础

    1.思维导图 2.创建html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  7. Unity5系列资源管理AssetBundle——打包

    资源管理是游戏开发的重要环节,Unity中使用AssetBundle可以非常方便地帮我们打包和更新游戏内容,在5系列中,AssetBundle更是方便好用,现在让我们先进行打包吧. 刚说了,5系列打包 ...

  8. Leetcode 136 137 260 SingleNumber I II III

    Leetccode 136 SingleNumber I Given an array of integers, every element appears twice except for one. ...

  9. 如何利用 MembershipUser 更改密码

    如何利用 MembershipUser 更改密码 作者: vkvi 来源:千一网络 (原创) 时间: 2009-3-11   完美集成.增强 KindEditor HTML 编辑器 在 ASP.NET ...

  10. iOS解析后台返回的二进制图片

    UIEdgeInsets insets = {0,0,0,0}; [self.showidentifyButton setImageEdgeInsets:insets]; NSData *imageD ...