struts2 的学习

  1.struts.xml 中的action不是代表一个action类(控制器),而是代表一次访问,所以action的name属性和访问路径有关。配置文件中的package的namespace属性其实就是起到窄化请求的作用,将相同类型的请求,配置在一起,方便维护

  2.访问路径理解:先找到namespace为XXX的package,再找到name为XXX的action,再找到该action对应的具体action类,再找到该类对应的具体的方,执行返回数据

  3.struts 的action是多例的,这个spring的Controller是不同的

  4.struts 获取值的方式:

    1)属性驱动:需要在action中根据需要添加与页面对应的属性,并提供属性对应的set方法,(不必提供get方法),适用于属性比较少的

    2)模型驱动,侵入式开发:Action类需要实现ModelDriven接口,重写getModel()方法,并且需要提供一个封装了页面数据(按需求封装即可)的模型对象(dto),在action中作为属性并创建对象,在getModel()方法中返回

    3)域驱动:封装的页面数据对象作为action的属性(不用创建对象),并提供set/get方法,同时页面的name值要求为:封装的对象名 属性名 。

    经过测试:三种取值的方式可以混用。其中如果模型驱动有属性和属性驱动的属性相同,那么模型驱动中能够取到值,属性驱动取不到值为null。(域驱动不存在这个问题,因为页面的name值有特殊要求)

  5.类型转换相关

    1)struts2里面已经内置了一些转换器,负责将常见的类型进行转换,比如:

      基本数据类型的转换;本地格式的日期类型(yyyy-MM-dd)——> Date;把值是String[]类型的数据转换成用逗号隔开的字符串

    2)如果struts2提供的转换器不满足需求,比如日期格式为dd-MM-yyyy那么转换就会出错,这个时候需求自定义转换器,并将自定义的转换器配置到框架使其起作用

  6.配置相关

    1)虽然配置文件中有全局的配置,但是要起到全局的作用,依然是要通过package的继承达到效果的。如果不继承不会对该package起作用      

    2)这个配置 <exception-mapping result="error" exception="java.lang.NullPointerException"></exception-mapping>只适用于对action发送的指定异常跳转到对应页面。不支持配置的异常之外的异常,以及404异常。

    3)只是用来继承的package可以省略namespace属性即默认为“”,就是说项目名 / 这里可以是任意内容 / action name,只要action name存在就能访问到,不存在当然报错

    4)package的继承和java的基础很像即:通过使用extends,你可以指定本package继承另外一个package的所有的配置。当某个package继承了另外一个package的所有配置,那么你就无需对父package中已经声明过的配置定义做再次的定义。同时,如果重复定义父package中已声明过的配置定义,那么这些重复定义声明将覆盖父package中的相关定义。

    5)default-action-ref配置和package的namespace有关,意思是访问该namespace下的action 的name不存在时,调用该配置配置中的action。可以通过在父包中添加该配置以及一个通用的action配置,为每个namespace提供跳转到404页面的功能(这些是要基于理解包继承的概念的前提下去理解的)

    6)default-class-ref配置,是在有的action 只配置了name,和method的时候起作用,为这种配置的action配置上默认的对应的action类

时间: 2024-09-12 07:55:03

struts2 的学习的相关文章

Struts2 + Spring 学习(一)搭建struts开发环境

·为Web应用增加Struts2支持 1. 登陆struts2官网下载struts2的最新版,本文所用的是Struts 2.3.16.2 我们所下载的压缩包内内容应给如下 其中,apps包含了struts2的实例应用,docs包含了struts2的相关文档,lib包含了Struts2框架的核心类库以及struts2的第三方插件类库,src包含了struc包含了struts2框架的全部源码. 2. 在Eclipse新建Web工程,将是所用到的类库放到WEB-INF/路径下 3. 编辑Web应用的w

Struts2框架学习

Struts2框架 一.一个mini Struts框架的实现 1.首先遵循MVC模式创建包 2.在Struts.xml文件里配置action 3.用dom4j来解析xml 4.用filter来实现拦截作用   好处:1.降低了类与类之间的关联(解耦和)   2.如果你要增加一些功能的话  可以在filter里面增加 实现的mini Struts工程结构: 具体实现的代码: public class HelloAction { public String execute(){ System.out

Struts2框架学习(一)

Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2,Struts2框架的流程原理 1)请求先到达Filter中央控制器 2)然后为Action创建代理类 3)将各个服务存放在拦截器中,执行完拦截器后再去执行action类行action类,action类调用service,再调用dao 4)得到结果字符串,创建result对象 5)转向相应的视图.

Struts2框架学习(三) 数据处理

Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:ValueStack一种数据结构,操作数据的方式为:先进后出 OGNL : Object-GraphNavigation Language(对象图形导航语言)将多个对象的关系使用一种树形的结构展现出来,更像一个图形,那么如果需要对树形结构的节点数据进行操作,那么可以使用 对象.属性 的方式进行操作,OGNL技

Struts2框架学习(二) Action

Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转. 拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象. 每请求一次,就创建一个对象,所以action是多例的,也是线程安全的. 2,关系 请求的路径和配置文件的对应关系: 配置文件中包

Struts2重新学习2之struts2和struts1的区别

1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能.Struts 2提供一个ActionSupport基类去实现常用的接口.即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用 作Struts 2的Action. 2) 线程模式方面的对比:Struts 1 A

Struts2重新学习1

一:框架 1:框架的意义在于可以大大提高我们的开发效率.框架时一种主动涉及,使用框架必须最受框架指定好的开发流程. 2:框架的强大之处不是源自它能让你做什么,而是它不能让你做什么.有规有矩,方可成方圆.有规则,大家都能上手. 二:Struts2 1:Struts2是一个MVC框架. 2:MVC--->模型(Model)视图(View)控制台(Controller) Model层实现了系统中的业务逻辑,通常可以用javaBean或EJB来实现 View层用于与用户交互,通常用jsp实现. Cont

Struts2基础学习总结(二)

Struts2基础学习总结(二)---struts.xml参数 1.常量 使用<constant name="" value=""></constant>元素进行描述 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Strut

Struts2重学习之作用域的获取

第一种:获取requestMap,sessionMap,applicationMap, HttpServletRequest,HttpServletResponse对象的获取,在Struts2中 1 public String getMap(){ 2 //获取被处理过的request,session,application三大常用作用域的map形式,可以往里边存放数据,在jsp中就可以用el,ognl表达式取值 3 //ac容器在struts2中任何地方都可以获取,可以当做一个作用域来传递值 4

Struts2重新学习之自定义拦截器(判断用户是否是登录状态)

拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interceptor连在一起组成了Interceptor栈.拦截器是AOP面向切面编程的一种实现,具有热插拔的效应. 3:Struts2拦截器,每个拦截器类只有一个对象实例,即采用了单利模式.所有引用这个拦截器的action都共享着一拦截器类的实例. 拦截器和过滤器的区别 1:拦截器和过滤器的概念非常类似 2: