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. 两年后的随笔+this的思考

    恍惚看到自己在博客园的文章,唯一的一篇已经是接近两年前,再看看自己的名字...已然中枪了 从两年前的.net初学者,到现在工作之后阴差阳错转为前端... 两年过去了,现在回想起来,感觉成长的太少... ...

  2. css样式重置(初始化)收集

    淘宝的样式初始化: body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fields ...

  3. ES6 相关资料

    Configuring Babel 6 Setting up ES6

  4. 花括号中的json数据--->转为数组array

    //正式服务器 更换航班 public function changef(){ $str = '{"airportTax":50,"arriModifyTime" ...

  5. git三个区域详解

    一.可以将git简单的分为三个区域    1.工作区(working directory)    2.暂缓区(stage index)    3.历史记录区(history) 二.三个区域关系:工作区 ...

  6. freemarker之list和map

    第一次使用freemarker很不习惯,之前都是用velocity的. @RequestMapping("/free.htm") public ModelAndView hello ...

  7. WinSnap屏幕截图 V4.5.6 官方最新版

    软件名称: WinSnap屏幕截图软件语言: 多国语言授权方式: 免费试用运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 2.7MB图片预览: 软件简介:WinS ...

  8. Computed Observable的参数

    构造计算监控(Constructing a computed observable) 1. ko.computed( evaluator [, targetObject, options] ) eva ...

  9. Java判断PC端还是移动端

    package com.*.*.*; import java.io.IOException;import java.util.regex.Matcher;import java.util.regex. ...

  10. GRPC: set up..

    get the grpc source file.. git clone https://github.com/grpc/grpc git submodule update --init --recu ...