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. Maven使用笔记

    Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model), 一组标准插件(生命周期各阶段是绑定插件中的目标来完成项目构建工作) 一个项目生命周期(Proje ...

  2. 第八十二节,CSS3过渡效果

    CSS3过渡效果 学习要点: 1.过渡简介 2.transition-property 3.transition-duration 4.transition-timing-function 5.tra ...

  3. html5--画布

    简介 canvas是HTML5中的新元素,你可以使用javascript用它来绘制图形.图标.以及其它任何视觉性图像.它也可用于创建图片特效和动画.canvas 元素本身是没有绘图能力的.所有的绘制工 ...

  4. Struts2权威指南笔记

    Struts2权威指南笔记 1.mvc特点包括: ① 多个视图可以对应一个模型 ② 模型返回的数据与显示逻辑分离 ③ 应用层被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 ④ 控制层的概念也 ...

  5. 获取radio的值

    随着Jquery的作用越来越大,使用的朋友也越来越多.在Web中,由于CheckBox.Radiobutton .DropDownList等控件使用的频率比较高,就关系到这些控件在Jquery中的操作 ...

  6. FZU 1502 Letter Deletion(DP)

    Description You are given two words (each word consists of upper-case English letters). Try to delet ...

  7. nodejs url方法

    ulrl方法 url.format(urlObj)   //将对象装换成url url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) / ...

  8. C# 语言规范_版本5.0 (第2章 词法结构)

    1. 词法结构 1.1 程序 C# 程序 (program) 由一个或多个源文件 (source file) 组成,源文件的正式名称是编译单元 (compilation unit)(第 9.1 节). ...

  9. LeetCode OJ 64. Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  10. LightOJ 1337 F - The Crystal Maze (bfs)

    Description You are in a plane and you are about to be dropped with a parasuit in a crystal maze. As ...