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. Visual Studio提示“无法启动IIS Express Web服务器”的解决方法

    有时,在使用Visual Studio运行ASP.NET项目时,会提示"无法启动IIS Express Web服务器",无法运行,如图: 这一般出现在重装系统之后,或者项目是从别的 ...

  2. java javaScript实现遮罩层 动态加载

    通过java.JavaScript和css实现点击按钮后出现灰色遮罩层,并显示动态加载的字样,提高用户体验,废话不多说,上代码(写这个博客的原因是网上代码太多新手根本不知道哪里对哪里,这里剔除所有无关 ...

  3. Dubbo集成步骤

    dubbo协议实现与webservice一样的效果,用于服务调用之间的接口.dubbo可在中间实现真正意义上的中间调用管理,是一个中间管理系统. demo:http://www.devnote.cn/ ...

  4. dplyr 数据操作 统计描述(summarise)

    在R中,summary()是一个基础包中的重要统计描述函数,同样的在dplyr中summarise()函数也可以对数据进行统计描述. 不同的是summarise()更加的灵活多变,下面来看下summa ...

  5. 设计模式 单例模式(Singleton) [ 转载 ]

    设计模式 单例模式(Singleton) [ 转载 ] 转载请注明出处:http://cantellow.iteye.com/blog/838473 前言 懒汉:调用时才创建对象 饿汉:类初始化时就创 ...

  6. navicat导出表结构-->导入powerdesigner

    01 转储sql文件-->导出表结构和数据 02数据传输--高级--插入记录(去掉)-->只导出表结构 目标-->001连接---->把数据导入指定ip的数据表中 目标--&g ...

  7. php和js的转成整数的方法

    1.将变量转成整数类型php: intval(7/2)js:parseInt(7/2)2.向上取整,有小数就整数部分加1php: ceil(7/2)js: Math.ceil(7/2)3,四舍五入.p ...

  8. txt文件的读取

    两个函数:textread或importdata [textread函数] 格式:I=textread('文件名.txt','列',读取的行数,'headerlines',跳过的头行数);  返回值I ...

  9. setsockopt、getsockopt详细介绍(转)

    本文只讲解socket编程中的 setsockopt.getsockopt两个函数.关于其它函数的介绍可以参考下面链接:http://blog.sina.com.cn/s/blog_a459dcf50 ...

  10. Java8 (1)

    参考资料: <Java8 in Action> Raoul-Gabriel Urma 一.jdk8 客观的说,Java8是一次有重大演进的版本,甚至很多人认为java8所做的改变,在许多方 ...