文档库 最新最全的文档下载
当前位置:文档库 › 北京动力节点-Struts2讲义-第4章Struts2注解式开发

北京动力节点-Struts2讲义-第4章Struts2注解式开发

北京动力节点-Struts2讲义-第4章Struts2注解式开发
北京动力节点-Struts2讲义-第4章Struts2注解式开发

第4章Struts2注解式开发

随着项目的扩大,配置文件会变得越来越大,越来越臃肿,不利于开发与维护。而注解式编程,则可以大大缩小配置文件。

注解可以放在某个语法单元的头部,表示特定的意义。这个语法单元可以是类、接口、属性、方法,及局部变量等。

4.1 注解的基础知识

以下注解知识的讲解,均使用使用@Overide、@Deprecated(过时)、@SuppressWarnings 举例。

4.1.1 注解的基础语法

A、注解后是没有分号的。

B、注解首字母是大写的,因为注解与类、接口是同一级别的。一个注解,后台对应着一个@interface类。

C、在同一语法单元上,同一注解只能使用一次。

D、在注解与语法单元之间可以隔若干空行、注释等非代码内容。

4.1.2 注解的注解

打@Deprecated源码,看到其定义上还有三个注解:@Documented、@Retention、@Target。这三个注解的意义是:

@Target:用于指定该注解可以标注的语法类型。CONSTRUCTOR(构造器)、LOCAL_VARIABLE(局部变量)、METHOD(方法)、FIELD(属性)、PACKAGE(包)、PARAMETER (参数)、TYPE(类型)。

注意,对于TYPE常量,其意义有两个:一是指该注解可以用在类、接口、枚举等类上;二是指该注解可以作为其它注解的属性值。例如,后面要学到的@Result、@InterceptorRef 就属性第二个意思。

@Documented:用于指定该注解定义时的注释信息能否显示在javaAPI说明文档上。没有添加的话,使用javadoc生成API文档时就不会该注解的信息添加到文档。

@RetentionPolicy:这是一个enum类型,共有三个值:SOURCE,CLASS 和RUNTIME。 SOURCE:代表这个Annotation类型的信息只会保留在程序源码里,源码如果经过了编译之后,Annotation的数据就会消失,并不会保留在编译好的.class文件中。

ClASS:代表这个Annotation类型的信息除了保留在程序源码里外,同时也会保留在编译好的.class文件里。但在执行时,并不会把这一些信息加载到虚拟机(JVM)中去。这是Retention的默认值。

RUNTIME:表示在源码、编译好的.class文件中保留信息,同时在执行时还会把这些信息加载到JVM中。

举例:@Override中的Retention值为SOURCE,编译成功了就不要这一些检查的信息。

相反@Deprecated中Retention的值为RUNTIME,表示除了在编译时会警告我们使用了哪个被Deprecated的方法,在执行的时候也可以查出该方法是否被Deprecated。

4.1.3 注解的属性

当某变量被声明了,但却未被使用;或某集合在声明或定义时未加泛型说明等情况发生时,会在代码下给出警告黄线。Ctrl + 1,可在代码上添加一个注解@SuppressWarnings()。并且发现,不同的情况,其参数是不同的。

打开其源码,看到其定义与@Deprecated是不同的,其接口体中声明了一个方法String[] value()。那么该注解在使用时必须包含一个属性value,类型为String[]。且该参数没有默认值,即必须给出value的值。

对于注解的属性,需要注意以下几点:

(1)数组问题

该属性在源码定义时被声明为数组,但在具体使用时却只要赋予一个值,此时无需将该值再定义为一个数组后赋给该属性。直接将该值赋给该属性即可。例如,对于声明为字符串数组String[]的value属性,可以将字符串String直接赋给该value。

(2)默认值问题

若某属性在注解定义时声明了其默认值,则在注解使用时,可以不为其指定属性值。注解会自动使用其默认值。

(3)value属性问题

若注解在使用时只需使用其value属性,其它属性要么有默认值,要么该注解只声明了一个value属性,此时,在注解使用时value属性名称可省略,而直接在注解的括号中写出该value属性的值。

(4)无属性问题

有些注解在定义时,是没有属性的,如@Deprecated、@Overide都是没有属性声明的,那么在使用时只需给出注解名称即可。

4.2 Struts2注解注意事项

4.2.1 Jar包的导入

使用Struts2注解,需要将注解的Jar包struts2-convention-plugin-2.3.24.jar导入。

4.2.2 Action包的定义

Action类所在包的功能顶层包,必须为action、actions、struts、struts2中之一。

4.2.3 Struts2的配置文件

在使用Struts2注解,主要是用于完成对Action的定义。但诸如常量定义、拦截器定义等还需要在struts.xml中完成。所以,根据需要确定Struts2配置文件struts.xml是否删除。

4.3 Struts2注解详解

4.3.1 @ParentPackage

用于指定当前包所要继承的父包。相当于struts.xml中标签的extends属性。查看其源码可知,该注解可放在类型(类、接口、枚举等)与包上。使用时有一个属性value 必须赋值,且为String类型,用于指定其所要继承的父包。

4.3.2 @Namespace

用于指定该Action所在的命名空间。相当于struts.xml中的namespace属性。不过,需要注意的是,即使不同的Action类的@Namespace的值相同,也不能等同于说这两个Action类中的@Action处于同一个Package下。注解中没有配置文件中这个包的概念。

打开其源码,可看到其有一个value属性必须赋值。

4.3.3 @Results

用于定义Action类范围的全局视图。若该Action类中定义有多个Action方法,则它们可使用该全局视图。

该全局视图相当于struts.xml中的标签,但不同于该标签。标签定义的为包范围的全局视图,其可以应用到本中的任意Action类定义的的视图中。而Action类范围的全局视图,只能应用到当前Action类的所有Action 方法所定义的@Action的视图中。即使两个Action类的@Namespace值相同,也不能共享同一个@Results。

查看源码可知,其只能标注在类与接口等TYPE上,不能标注在属性、方法上。其属性value为数组,要求必须赋值,且数组元素为另一个注解@Result。

4.3.4 @Result

用于定义具体的视图,相当于struts.xml中的标签。查看源码可知,其可作为其它注解的属性值。它有四个属性,且都有默认值。

这四个参数与标签内容的对应关系如下:

注解参数内容

1 name name

2 location 要跳转的资源

3 type type

4 params

4.3.5 @Action

用于注解一个Action。可以注解在类、接口与方法上。相当于struts.xml中的标签。注意,并不是定义一个Action类,而是定义一个Action请求响应,即Action 类+method。而@Action也是在定义一个Actiony请求响应。所以,@Action是可以定义在方法上的。

@Action中的参数比较多,常用的有三个:

value:指定该Action要响应的请求。相当于标签的name属性。

results:该Action的跳转视图。注意,在Action类上还定义的有全局视图。

interceptorRefs:该Action执行之前要经过的所有拦截器。相当于标签的标签。

4.3.6 @InterceptorRef

用于声明所引用的拦截器。相当于struts.xml中标签的子标签。

查看源码可知,其可作为其它注解的属性值。

4.3.7 @InterceptorRefs

只能标注在类或接口上,用于定义该类使用的默认拦截器。该注解与@InterceptorRef 相结合,相当于struts.xml中的默认拦截器子标签

4.4 Struts2注解举例

在Struts2使用注解时,若出现404错误,且为……/WEB-INF/context/……找不到,一般情况下是@Result的属性设置有问题:根据指定的跳转方式,无法找到要跳转的资源。

4.4.1 跳转到页面与Action在注解中的使用

修改项目redirectAction,并将其命名为:annotation_redirectAction

Step1:修改OtherAction

Step2:修改LoginAction

Step3:删除Struts2配置文件

4.4.2 全局视图在注解中的使用

修改项目globalResults2,并将其命名为:annotation_ globalResults。无需struts.xml。

4.4.3 拦截器在注解中的使用

修改项目intercepter_permission,并将其命名为:annotation_intercepter_permission Step1:修改Struts2配置文件

Step2:修改SystemAction

北京动力节点-Struts2讲义-第1章Struts2入门

Struts2讲义 第1章Struts2入门 1.1 Struts2简介 1.1.1 框架 1.1.2 Struts2简介 1.1.3 Struts2下载与版本 Struts2官网:https://www.wendangku.net/doc/1037718.html,

版本号的意义: Alpha: 内测版,一般不向外部发布,会有很多Bug。 Beta:除错 + 增新 内测版,但相对于Alpha版已有了很大的改进,消除了严重错误,但还是存在缺陷,需经更多测试来消除。这个阶段的版本会加入新的功能。 RC:除错 Release Candidate,发行候选版,外测版。与Beta版最大的区别在于Beta阶段会加入新功能,而RC版一般不会加入新功能,而主要着重于除错。 RC版本是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,是正式版之前的最后一个测试版。 GA: General Availability,普通有效版,稳定版,官方开始推荐广泛使用了。 Release: 发行版,即最终版。在一系列测试版之后的正式发行版本,是最终交付用户使用的一个版本。该版本也称标准版。Release会以单词形式出现在软件封面上,有时会使用符号R。 1.1.4 Strut2的优点 (1)Struts2是非侵入式设计 Struts2的Action类为POJO类,不依赖于Servlet API和Struts API。 (2)Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。(3)Struts2提供了类型转换器,可以将特殊的请求参数转换成需要的类型。 (4)Struts2的输入验证可以对指定方法进行验证。 (5)提供了全局范围、包范围和Action范围的国际化资源文件管理实现。

尚学堂马士兵Struts2教学视频之Struts2学习笔记

目录 01 Struts2-Action (5) 一、Struts作用: (5) 二、搭建Struts2的运行环境: (5) 三、Namespace (6) 四、标签 (6) 五、Action (6) 六、路径问题的说明 (8) 七、Action的动态调用方法 (8) 八、Action通配符(wildcard)的配置 (9) 九、Action的属性接收参数 (10) 1、在Action添加成员属性接受参数 (10) 2、域模型(Domain Model) (10) 3、ModelDriven接收参数 (11) 十、Action属性接收参数中文问题 (12) 十一、简单数据验证 (12) 十二、访问Web元素 (14) 一、方法一:ActionContext方式 (15) 二、方式二:Ioc(控制反转)—推荐使用 (15) 三、方式三:获取原类型 (16) 四、方式四:获取原类型-控制反转 (17) 十三、Struts2配置文件模块化包含(include) (17) 十四、默认的Action (18) 十五、Action总结 (18) 02 Struts2-Result (19) 一、Result类型 (type) (19) 二、全局结果集(Globle Result) (20) 三、动态的结果集(dynamic result) (21) 四、带参数的结果集 (21) 五、Result总结 (22) 六、项目经理: (22) 03 OGNL表达式语言 (23) 04 Struts2-Tags (28) Struts2标签目录 (28) 一、property标签 (28) 二、set标签 (29) 三、bean标签 (29) 四、标签-少使用 (29) 五、If elseif else (30) 六、Iterator标签 (31) 七、Theme (31) 05设计约定(编码规定) (32) 06 项目开发顺序 (32) 07 声明式异常处理 (33) 08 国际化 (35)

Struts2的工作机制原理分析及实例

Struts2的工作机制分析及实例 一、概述 本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x 与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork 的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.wendangku.net/doc/1037718.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到 struts-2.1.0-src\struts-2.0.10\src\core\src\main\java目录下查看Struts2的源文件,如图14所示。 (图14) 二、主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork 的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。

struts2入门手册

struts2入门手册 首先这个教程是基于你已经安装了myeclipse的基础上的,如果你还没有安装myeclipse 工具软件的话,你需要马上去安装一个。 如果你已经有了工具软件了的话,现在就按照以下步骤来入门struts2吧。 一、下载struts2 进入struts的官网https://www.wendangku.net/doc/1037718.html,/,点击download,选择Full Distrybution:下的struts2-xxx-all.zip,下载struts2的最新版本,将压缩包解压,放置到D盘目录下。 二、解压struts2 进入你解压后的struts2文件夹中,到D:\struts2-xxx\apps中,解压其中的struts2-blank.war 压缩文件到D:\struts2-xxx\example,这是struts2提供的基础例子,里面的WEB-INF\lib目录下的包正是struts2正常工作所需要的基本包。 三、导入struts2基本包 打开你的myeclipse,创建一个web project工程,命名为test(你也可以自己随意起一个),不要急着点击Finish,先选择Next>,继续选择Next>,在弹出的对话框中把第二个单选框打勾,如图, 再点击Finish。创建好之后在你创建的工程上目录下的WebRoot/WEB-INF/lib目录上单击右键,选择import..., 选择General下的File System,点击Next>,选择Browse...,浏览选择到 D:\struts\example\WEB-INF\lib目录,点击确定。选择Sellct All,点击Finish,

Struts2试题

Struts2试题 1.struts2的执行流程? 客户端提交一个HttpServletRequest请求(action或JSP页面) 请求被提交到一系列Filter过滤器,如ActionCleanUp和FiterDispatcher等 FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器询问ActionMapper是否需要调用某个action来处理 如果ActonMapper据诶的那个需要调用某个A传统,FilterDispatcher则把请求教到ActionProxy,由其进行处理 ActionProxy通过Configuration Manager询问框架配置文件,找到需要调用的Action类ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用action Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器最后ActionInvocation负责根据struts配置文件中配置的result元素,找到与返回值对应的result 2.struts2的web里需要配置什么? 1. 2. 3.struts2 4. 5.org.apache.struts2.dispatcher.FilterDispatcher 6. 7. 8. 9.

10.struts2 11./* 12. 3.struts.xml文件哪个常量可以实现不用重新启动服务就可以得到反馈? 4.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢? 标识 可以、 Timmer 如果没写,说明该包为默认空间只要敲index没有精确对应的package都交给namespackage 如果还没有就崩溃 5.Action的实现通集成常用那种方法? 一种是直接实现自己的Action 另一种是实现Action的接口 继承ActionSupport 6.路径设置用什么路径,绝对还是相对? 都可以 7.通配符有几种?要遵循什么原则? {1} 方法名 8.Action的属性?

一个简单的struts2实例讲解

一个简单的struts 2实例讲解 初学SSH框架,最好的办法就是多动手,在实践中去理解框架。下面用struts 2的框架搭建一个简单的登录示例,首先是框架的搭建,然后是代码的实现及配置,虽然例子简单,但是对于理解Struts 2有很好的作用。 一.准备工作,搭建Struts 2的框架 1.新建一个Web Project,工程名为Struts2_EXA。 2.导入Struts 2框架,如果是比较新的IDE,通常有两种方法,一种通过IDE导入Struts 2框架,另一种可以到网上下载struts2的最新版本: https://www.wendangku.net/doc/1037718.html,/download.cgi#struts20111。 下载struts2自少要保证有六个基本包: struts2-core-2.1.6.jar :开发的核心类库 freemarker-2.3.13.jar :struts2的UI标签的模板使用freemarker编写commons-logging-1.0.4.jar :日志包 ognl-2.6.11.jar :对象图导航语言,通过它来读写对象属性 xwork-2.1.2.jar :xwork类库,struts2在其上进行构建 commons-fileupload-1.2.1.jar:文件上传组件,2.1.6版本后必须加入此jar 包 这些包的文件名在后面的版本号上可能会有出入。我的IDE是 MyEclipse2014,自带有Struts 2, 可以通过右键点击新建的Web项目,“MyEclipse->Project Facets[Capabilities]->Install Apache Struts 2.x Facet”来导入struts2框架 这个例子是通过MyEclipse自动导入的,喜欢自动动手的同学可以网上下载最新的Struts 2框架,将这六个组件包复制到W eb工程下的WEB-INF/lib 目录中,这些组件其实就是编译好的类文件。 3、接下来就是配置struts.xml文件。这个文件就好像起着一个过滤器的作用,用户发来的请求要经过该文件的过滤,根据用户请求

struts2源代码分析(个人觉得非常经典)

本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留S truts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在We bWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.wendangku.net/doc/1037718.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到struts-2.1.0-src"struts-2.0.10"src"core"src"main"java目录下查看Struts2的源文件,如图14所示。 (图14) 主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。 以下是对各包的简要说明: 包名说明

java课堂讲义

Lesson1 1、java与c的关系及不同 .c-----.obj------.exe .exe已经是机器码(含有cup的指令) 编译型语言 .java--编译--.class jdk(JVM javaCPU)解释执行解释型语言 Java字节码是使用javac命令编译源代码后得到的class代码。字节码可以理解成是运行在Java虚拟机上的汇编语言。字节码是Java实现跨平台特性的基础。 绿色版:解压后就可以使用jdk 1.5 1.6 命令javac xx.java java xx jdk:Java开发工具 jre:Java运行环境 jvm:Java虚拟机(JVM javaCPU) D:\software\jdk\bin path D:\software\jdk\bin jdk的安装环境变量配置 JA V A_HOME jdk的路径 path %JA V A_HOME%\bin; java -version--------查看JDK的版本 .net php LAMP linux apache mysql php java oracle ruby 强类型:语法严谨 java 的可移植性portability (跨平台OS)? Windows\Linux\Mac.... java版本javaSE(标准版) GUI:图形用户界面C/S javaEE(企业版) B/S javaME(微型版) 游戏 SQL Server2008 MySQL Android cocos2D ststruts(MVC) spring hibernate SSH2 设计模式

eg:人类 抽象分离封装 属性: 身高体重名字===========>成员变量=========>类 行为:吃睡玩想===========>成员方法=========>类 3、对象:是类的一个实例,它属于一个类 创建一个对象做了几件事情? String s1 = "hello"; String s2 = new String("hello");创建了几个对象? 4、java 的命名规则见名知意 类名首字母大写class Person Clock 成员变量/方法小写int height; getName();setName(); 驼峰命名法 常量大写int WIDTH=300; 5、一个.java文件就是一个编译单元.一个编译单元里面,只能有一个public修饰的类,文件名必须和public修饰的类的类名相同. 但,类的功能要单一化. 6、java 的基本数据类型 类型字节数默认值封装类 byte 1 0 https://www.wendangku.net/doc/1037718.html,ng.Byte char 2 '\u0000' Character int 4 0 Integer float 4 0 Float double 8 0 Double boolean 1 false Boolean 1 byte = 8 bit; float f=2.3f; 2.3f===>float 2.3===>double double d = 2.3f; float f = 2.3; float f = (float)2.3; 低精度向高精度转化,会自动类型转化(向上造型) 高精度向低精度转化,要强制类型转化(向下造型) 注:java中的boolean只有true和false,不像C中0表示假,非0表示为真 while(true){} while(1==1){}

北京动力节点-Spring4讲义-第5章SSH框架整合技术

第5章SSH框架整合技术 5.1 Spring与Hibernate整合 除了JdbcTemplate外,Spring还可通过Hibernate来完成Dao的工作。即将Spring与Hibernate进行整合。 举例:项目spring_hibernate(在dao_jdbcTemplate基础上修改) 5.1.1 导入Jar包 除了Spring的基本Jar包外,还需要以下几种Jar包: (1)Spring AOP的两个Jar包 (2)AspectJ的两个Jar包

(3)Spring 的JDBC 的Jar 包 (4)Spring 整合ORM 的Jar 包 Spring 整合ORM 框架的Jar 包,在Spring 框架解压目录下的libs 目录中。 (5)Spring 的事务Jar 包 Spring 的事务Jar 包,在Spring 框架解压目录下的libs 目录中。 (6)Hibernate 的基本Jar 包 Hibernate 的基本Jar 包中已经包含了C3P0数据源的Jar 包,且版本高于Spring 中提供的版本。所以直接使用 Hibernate 中的即可。

Hibernate的基本Jar包中已经包含了MySql的驱动Jar包,所以不用再导入了。 5.1.2 实体映射文件的配置 5.1.3 注册数据源 Spring配置文件中数据源与jdbc属性文件的注册,与template_jdbc项目中的相同。 5.1.4 配置SessionFactory Spring的精髓是,所有的Bean均由Spring容器统一管理,所以在SPring中若要使用Hibernate,就需要将SessionFactory交由Spring来管理。 配置SessionFactory的Bean,将hibernate.cfg.xml文件替换掉。使用的实现类为

struts2工作流程详解

工作流程 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求; 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类 6 ActionProxy创建一个ActionInvocation的实例。 和"struts2工作流程" 有关的java编程小帖士: strong>Locale.setNegativeNumberMode方法的参数。 字段 7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action 链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。 Struts2的目标很简单--使Web开发变得更加容易。为了达成这一目标,Struts2 中提供了很多新特性,比如智能的默认设置、annotation的使用以及"惯例重于配置"原则的应用,而这一切都大大减少了XML配置。Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器或者使用Struts2提供的拦截器)来对请求进行预处理和后处理,这样一来,处理请求就变得更加模块化,从而进一步减小耦合度。模块化是一个通用的主题--可以通过插件机制来对框架进行扩展;开发人员可以使用自定义的实现来替换掉框架的关键类,从而获得框架本身所不具备的功能;可以用标签来渲染多种主题(包括自定义的主题);Action执行完毕以后,可以有多种结果类型--包括渲染JSP页面,Velocity和Freemarker 模板,但并不仅限于这些。最后,依赖注入也成了Struts2王国中的一等公民,这项功能是通过Spring框架的插件和Plexus共同提供的,与PicoContainer的结合工作还正在进行中

马士兵struts2学习笔记(详细版)

1、02_尚学堂马士兵_Struts2_Struts2_HelloWorld_2.avi 指定Tomcat的目录,指定JDK搭建开发环境(拷贝jar包,复制struts.xml 文件此文件不要放在WEB-INF下面,应该放到src下面),在web.xml文件中: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAn dExecuteFilter struts2 /* 其中/* 不要写/*.do 或者 /*.action约定俗成用/* 2、04_尚学堂马士兵_Struts2_Struts2_HelloWorld_3.avi (1) action -->相应的处理类或页面 --> /Hello.jsp (2)struts.xml不自动提示的解决办法: window--perferences-XML catalog---add---key Type="URI" key="*.dtd" 3、09_尚学堂马士兵_Struts2_Struts2_HelloWorld_7_2.avi struts2的执行流程: 当用户在浏览器中敲入要访问的地址的时候,浏览器会将这个请求发送给tomcat然后tomcat判断应该交给那个WebApplication来处理,然后会读取它

相关文档