1. web.xml
此文件的配置可以参看struts2的示例文档

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

2. Action: 业务处理器,调用相应的Model类实现业务处理,返回结果。
实际开发中,Action类通常继承自 struts2提供的 com.opensymphony.xwork2.ActionSupport 类,以便简化开发。
开发完后需要配置 struts2.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="com.opensymphony.xwork2.ActionSupport">
<!-- 结果为 success 时, 跳转到 hello.jsp页面 (dispatcher 转发) -->
<result name="success">hello.jsp</result>
<!-- 结果为 tutorial 时, 重定向到 /tutorial/test.action (forward 重定向) -->
<result name="tutorial" type="redirect">/tutorial/test.action</result>
<!-- 结果为 tutorial2 时, 重定向到test.action -->
<result name="tutorial2" type="redirectAction">/tutorial/test.action</result>
</action>
</package>
</struts>

3. Result
实现视图的调用,并决定视图以那些形式展现给客户端。

Struts的执行过程
3.1 当Web容器接受到请求后,将强求交给 web.xml 中配置的 struts2 框架的控制器StrutsPrepareAndExecuteFilter (核心控制器)
3.2 由 StrutsPrepareAndExecuteFilter 确定请求对应的 Action (业务控制器)
3.3 框架根据 Action 返回的结果字符串,由 StrutsPrepareAndExecuteFilter (核心控制器)选择对应的result, 将结果呈现给用户。

4. Struts 2 的配置器

  • 4.1 struts.xml

1) constant元素用于配置常量例如:
处理乱码: <constant name="struts.i18n.encoding" value="UTF-8" />
设置用户界面主题: <constant name="struts.ui.theme" value="simple" />
禁止调用动态方法: <constant name="struts.enable.DynamicMethodInvocation" value="false" />

2) include元素
引用其他struts.xml 文件 <include file="mailreader-default.xml"/>
如果配置的Action内容很多,那么可以将这部分内容单独提取出来
mailreader-default.xml 文件应该是一个完整的Struts.xml文件

3)package元素
name 属性为必须得并且是唯一的,用来指定包的名称
extends 属性类似Java的extends,指定用来扩展的包
namespace 属性可选。namespace="/"代表根目录, namespace=""默认命名空间
通常会使用模块名称命名

请求路径先查询命名空间下的,如果没有在查找默认空间下的。
例如请求URL为 /myspace/somespace/some.action。 它先查找的命名空间是  /myspace/somespace/ 下

  • 4.2 struts-default.xml : Struts2框架的默认配置文件。
  • 4.3 struts-plugin.xml : 是struts2插件使用的配置文件。

5. Action配置

  • 5.1 Action 作用:为给定的请求封装需要做的实际工作(调用特定的业务处理类)

为数据转移提供场所
帮助框架觉得由那个结果呈现请求响应
Action接受参数:
1) 属性名
2) JavaBean
3) ModelDriven
i: 定义实体类,为实体添加属性以及setter和getter
i: 创建Action实现ModelDriven接口,重写方法getModel()
i: Action中要提供JavaBean类型的属性,需要实例化,但不需要相应的setter和getter方法
i: Form 表单项的name属性以及页面取值时通过 <s:property value="属性名" />的形式

  • 5.2 method 属性:

<action name="student" class="org.zm.test.studentAction" method="Show">
<result name="success">no.jsp</result>
</action>

当调用student.action时, 执行 rg.zm.test.studentAction 类 的 Show()方法。

method属性解决多个页面调用同一个action类的问题,减少action的数据。例如用户登录,用户注册都调用同一个action, userAction 。 分别调用这个类中的 Login方法和 Register 方法。

提示: Struts2根据action元素的method属性查找执行方法时有两种途径。1.查找与method属性值完全一致的方法。 2.查找domethod()形式的方法。【login() / doLogin()】

  • 5.3 Action中动态方法调用 : 目的 减少Action的数量。

动态方法调用(Dynamic Method Invocation, MDI) 是指表单元素的 Action 并不是直接等于某个Action的名称,而是通过在Action的名称中使用感叹号(!)来标识要调用的方法名称,格式为 actionName!methodName.action。

<action name="student" class="org.zm.test.studentAction" >
<result name="login">manager.jsp</result>
<result name="register">success.jsp</result>
......
</action>

当请求 student!login.action 时, 框架将调用 studentAction的login()方法;
当请求 student!register.action 时, 框架将调用 studentAction的register()方法;

提示:考虑到安全问题,通常禁止调用动态方法。

  • 5.4 Action 中通配符的使用

<action name="*User" class="org.zm.test.studentAction" method="{1}">
<result name="login">/page/{1}.jsp</result>
<result name="register">/page/{1}.jsp</result>
......
</action>

在action的name属性中使用星号, 允许这个 Action 匹配所有以 User 结束的URL。 如 loginUser.action。 配置该action元素时,还制定了method属性,该属性使用一个表达式{1},该表达式的值就是name属性值的第一个"*"的值。 {1} = login

  • 5.5 配置默认的 Action

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<default-action-ref name="defaultAction"></default-action-ref>
<action name = "defaultaction" >
<result>error.jsp</result>
</action>
</package>
</struts>

6. Result的配置

  • 6.1 常用结果类型

1. dispatcher 类型: Action 默认的结果类型, 采用转发的形式请求指定的视图资源,请求中的数据信息不会丢失。
2. redirect 类型:采用重定向的方式请求指定的视图资源, 通过 HttpServletResponse 对象的 sendRedirect()方法重新生成一个请求,原请求中的数据信息会丢失。
3. redirectAction 类型: 采用重定向的方式请求一个新的Action,,原请求中的数据信息会丢失。

  • 6.2 动态结果

配置的时候不知道执行那个,在运行时才能知道哪个结果作为视图显示给用户。即在配置时使用表达式,在运行时,由框架根据表达式的值来确定要使用哪个结果。

    1. 1. SchoolAction

import com.opensymphony.xwork2.ActionSupport;
public class SchoolAction extends ActionSupport{

private String nextDispose;
private User objUser;

//省略get set

public String Login(){

if(objUser.getName().equals("zm")){
nextDispose = "teacher";
}else {
nextDispose = "student";
}
return SUCCESS;
}
}

2. struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 创建一个default包,继承自Struts2的struts-default包 -->
<package name="default" namespace="/" extends="struts-default">
<action name="school" class="org.zm.test.SchoolAction" method="Login">
<result type="redirectAction" name="success">${nextDispose}</result>
<result name="error">Register.jsp</result>
</action>
<action name="teacher" class="org.zm.test.teacherAction" method="Show">
<result name="success">ok.jsp</result>
</action>
<action name="student" class="org.zm.test.studentAction" method="Show">
<result name="success">no.jsp</result>
</action>
</package>
</struts>

提示:配置动态结果的时候 ${nextDispose} 可能会出错,解决方案:
Window -- Preferences -- MyEclipse -- Validation - Validator 行 Build列的复选框上的勾去掉。

7. 全局结果
全局结果在所有的Action都可以共享这个结果。 如果 result 中的名称和全局结果的 result名称相同,会执行局部的 action, 当找不到对象的名称时才会去寻找全局结果并执行。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 创建一个default包,继承自Struts2的struts-default包 -->
<packag<global-results>
<result name="error">/page/error.jsp</result>
<result name="login" type="redirect">/page/login.jsp</result>
</global-results>
</package>
</struts>

8. struts2 设置成开发模式
在struts.xml中增加:
<constant name="struts.devMode" value="true" />

Struts2 配置详解的更多相关文章

  1. struts2系列(三):struts2配置详解

    原文链接:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html 1.<include> 利用include标签,可以 ...

  2. struts2配置详解

    01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...

  3. Struts2配置详解_配置Action

    Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现 ...

  4. 第三章 Struts2配置详解

    3.1 Struts2执行过程    1.获取Struts2资源    2.在应用程序中导入Struts2的类库    3.在web.xml中配置StrutsPrepareAndExecuteFilt ...

  5. Struts2学习笔记二 配置详解

    Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...

  6. struts2基本配置详解2

    接上篇struts2基本配置详解,还有一些配置没有讲到,下面将继续. struts.xml <package name="com.amos.web.action" names ...

  7. Struts2学习笔记(二)——配置详解

    1.Struts2配置文件加载顺序: default.properties(默认常量配置) struts-default.xml(默认配置文件,主要配置bean和拦截器) struts-plugin. ...

  8. java web.xml配置详解(转)

    源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...

  9. JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

    一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...

随机推荐

  1. PHP 7 测试用例(转)

    性能改善:PHP 7高达两倍快的PHP 5.6 显著减少内存使用 抽象语法树 一致的64位支持 改进的异常层次结构 许多转化为异常致命错误 安全随机数发生器 删除旧的和不支持的SAPIs和扩展 空合并 ...

  2. 已知树的前序、中序,求后序的java实现&已知树的后序、中序,求前序的java实现

    public class Order { int findPosInInOrder(String str,String in,int position){ char c = str.charAt(po ...

  3. 演示一个VPD进行数据访问控制的示例

    1.确认数据库版本 2.环境准备 创建一张顾客表(customer),其中包括了顾客姓名,年龄,姓名,地址,收入等, 我们需要使用LIVAN用户只能查看收入为2000元以下的顾客信息. 3.实验控制策 ...

  4. MVC Model数据验证

    概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.Co ...

  5. 配置perl-cgi的运行环境,由于Active Perl安装在d:\perl

    Apache 1.3.22 for Win32+PHP 4.0.6+Active Perl 5.006001+Zend Optimizer v1.1.0+mod_gzip 1.3.19.1a+MySQ ...

  6. eclipse创建web项目

    总结为3步: 必备环境: Eclipse jee Tomcat 1.创建services 2.创建dynamic web project项目 3.WebContent路径下创建index.jsp 运行 ...

  7. 《Linux内核分析》第七周 读书笔记

    <深入理解计算机系统>CHAPTER7阅读梳理 [学习时间:3hours] [学习内容:链接需要的代码&数据:链接机制:链接生成的目标文件] 一.链接概述 1.链接 定义:链接是将 ...

  8. maven基础学习

    项目结构 src      -main           -java                -package      -test           -java               ...

  9. Maven-009-Nexus 用户密码加密(安全必须)

    信息数据大爆发的时代,我们关心什么?没错,数据安全!数据安全!数据安全!(重要事情说三遍,哈哈哈...) 之前我们存放在 maven settings.xml 文件中的 Nexus 私服用户密码都是明 ...

  10. angularJs自定义指令.directive==类似自定义标签

    创建自定义的指令 除了 AngularJS 内置的指令外,我们还可以创建自定义指令. 你可以使用 .directive 函数来添加自定义的指令. 要调用自定义指令,HTML 元素上需要添加自定义指令名 ...