`

Struts2 学习笔记_综合

 
阅读更多

Struts2的配置可以分成三个单独的文件

Web.xml

Structs.xml

Struct.properties

Web.xml

FilterDispatcher是一个servlet过滤器,它是整个Web应用的配置项,需要在“web.xml”中进行配置:

<filter>

<filter-name>action2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>

<filter-mapping>

<filter-name>action2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

Struct.properties

剩下的就是自定义一些Web应用的执行环境和

Struts2-Corejar发行版中,有一个默认的属性文件,名为default.properties。如果要对属性进行修改的话,只需要在项目的源代码目录下,创建一个叫做struts.properties的文件,然后把想要修改的属性添加到文件中,新的属性就会把默认的覆盖掉了

struts.xml

配置应用中的组件。

Include标签:

<include … /> <struts>标签的一个子标签,它可以把其他配置文件导入进来,从而实现Struts2的模块化。它的file属性定义了要导入的文件的名称——该文件要和struts.xml一样有着相同的结构。

The Package Tag

???

 

Action

1  Struts2中,Action可以以几种不同的方式来工作

Action最常用也是最基本的用法就是执行操作后返回单个结果。这个Action类不需要继承其它类,也不需要实现其他接口。这样的类就是一个简单的POJO

class MyAction {

public String execute() throws Exception {

return "success";

}

}

 

2 多个结果

现在情况稍微复杂了一些,Action需要根据逻辑运算的结果,来生成多个结果

class MyAction {

public String execute() throws Exception {

if( myLogicWorked() ) {

return "success";

} else {

return "error";

}

}

}

<action name="my" class="com.fdar.infoq.MyAction" >

<result>view.jsp</result>

</action>

因为这里有两个结果,所以就为每一种不同的情况来配置要呈现给用户的结果。配置文件就变成了如下的样子:

<action name="my" class="com.fdar.infoq.MyAction" >

<result>view.jsp</result>

<result name="error">error.jsp</result>

</action>

 

前面我们已经看到了定义Action结果的最通用的方式。而实际上我们还有另外四种方式:

1. Action方法返回一个字符串——这个返回的字符串与struts.xml的一个action配置相匹配。例子中已经演示这一种方式。

2. 使用Code behind插件 ——当使用这个插件的时候,它会将Action的名字和Action返回的结果字符串进行连接来得到视图模板。比如说,如果URL/adduser.action,而Action返回了success,那么要渲染的页面就是/adduser-success.jsp 。更多信息请参见http://struts.apache.org/2.x/docs/codebehind-plugin.html

3. 使用 @Result注解——action类可以用@Results @Result注解来标注多个不同的结果。Action所返回的字符串需要与所注解的结果之一相匹配。

4. 方法返回一个Result类的实例——Action不必一定要返回一个字符串,它可以返回一个Result类的实例,该实例应当是已经配置好可使用的

结果类型

??

 

 

 

拦截器

 

 

架构目标

些不同层次的功能都是Web开发人员应当了解的:

在请求/响应周期中,所完成的核心任务是执行特定于每个Action的逻辑功能。

Action要完成逻辑功能或者访问资源的话,必须要访问或者持有业务对象。

在把HTML中基于字符串的值转换成原始数据类型或其他对象类型,以及把视图对象转换成业务对象或者数据表表示的过程中,这期间需要完成多种转化,映射和变换。

有一些横切(cross-cutting)的目的是为成组的action,或者应用中的所有action提供功能的

 

 

 

惯例重于配置是Rails带入主流应用开发中的概念。

 

提高效率技巧

验证

声明式验证

编程式验证

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics