- 浏览: 232232 次
- 性别:
- 来自: 常州
-
文章分类
- 全部博客 (165)
- Java基础 (49)
- 开发工具 (3)
- Python基础 (1)
- Oracle基础 (9)
- Java 符号计算 (0)
- 计算机基本原理 (10)
- SQL (6)
- javascript (16)
- HTML (2)
- XML (4)
- 程序员之路 (7)
- JDBC (1)
- Unicode (0)
- 字符编码 (3)
- JSP基础 (2)
- Servlet&JSP (9)
- MySQL基础 (1)
- UML基础 (1)
- Hibernate (2)
- Java包 (1)
- Spring (1)
- Struts2 (9)
- 系统命令 (1)
- Tomcat (1)
- Windows (1)
- Android (1)
- C#基础 (14)
- HTML5 (1)
- .NET基础 (1)
- 数据库基础 (2)
- ASP.NET基础 (7)
- 开源Java (3)
- 趣味算法 (1)
- 面向对象思想 (1)
- 软件应用 (1)
- Web工程 (1)
- jquery (2)
- JPA (0)
- 设计模式 (0)
最新评论
-
静夜独窗:
JavaBean组件能说的具体一点吗,我感觉这样说理解的不清晰 ...
EL 表达式语言 -
静夜独窗:
在Java中,不同字符集编码的转换是通过Unicode作为中介 ...
JavaWeb中的乱码产生与解决方案
配置文件无需记忆,请尽量复制粘贴局部更改。
一.简述
配置文件分为两类:内部配置文件和开发使用的配置文件。
内部配置文件由Struts2框架自动加载,对其自身进行配置,例struts-default.xml和struts-plugin.xml文件等。
外部配置文件由开发人员使用,用于对Web应用进行配置。
Struts2框架的主要配置文件:
配置文件 |
可选 |
位置 |
说明 |
web.xml |
否 |
/WEB-INF/ |
Web部署描述文件,包括所有必需的框架组件 |
struts.xml |
是 |
/WEB-INF/classes |
Struts2框架的主要部署文件,包含action映射,result映射,拦截器配置。 |
struts.properties |
是 |
/WEB-INF/classes |
Struts2的属性配置文件 |
struts-default.xml |
是 |
/WEB-INF/lib/struts2-core-x.x.x.jar |
Struts2框架提供的默认配置 |
struts-plugin.xml |
是 |
/WEB-INF/lib/struts2-xxx-plugin.jar |
Struts2框架的插件的配置文件 |
二.Struts2的配置文件
1. web.xml
web.xml是Java Web应用程序的核心配置文件。该文件对整个应用程序进行配置。
Struts2框架需要在web.xml文件中配置一个前端控制器FilterDispatcher,用于对Struts框架进行初始化,以及处理所有的请求。
FilterDispatcher可以包含一些初始化参数:
(1)config : 表示要加载的XML配置文件列表,多个文件名之间用英文逗号","隔开。如果没有设置config参数,则struts2将默认加载struts2.xml,struts-default.xml和struts-plugin.xml。
(2)actionPackages : 表示需要加载的Java包名的列表,多个包名之间用英文逗号","隔开。
(3)configProviders : 表示实现了ConfigurationProvider接口的Java类的列表,多个类名之间用英文逗号隔开","。ConfigurationProvider接口描述了框架的配置,默认情况下,Struts2框架使用StrutsXmlConfigurationProvider从XML文档中加载它的配置。使用configProviders参数,可以指定自己的ConfigurationProvider实现类。
(4)* 任何其他参数都被当作是Struts2的常量。
在web.xml文件中通过指定初始化参数<init-param>元素配置以上参数。
例:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts-cleanup</filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
说明:url-pattern尽量配置为/*。若使用/*作为配置url,则不需要请求的url后不接action也能被Struts2所解析。
2. struts.xml
Struts2框架的核心配置文件,主要用于配置和管理开发人员编写的action。该配置文件中,开发人员可以配置作用于action的拦截器,action和result的映射等。
struts.xml文件通常放在Web应用程序的WEB-INF/classes目录下, 该目录下的struts.xml会被Struts2框架自动加载。
struts.xml的结构参看相关DTD文件。DTD文件位于struts2-core-x.x.x.jar文件中。
3. struts-default.xml
struts-default.xml是Struts2框架的基础配置文件,为框架提供默认设置,这个文件包含在struts2-core-2.X.X.jar中,由框架自动加载。
struts-default.xml会自动包含到struts.xml文件中,以提供标准的配置设置而不需要复制其内容。
struts-default.xml文件中定义了struts-default包, struts-default包中定义了Struts2内置结果类型(包括Servlet转发,Servlet重定向,FreeMark模板输出,XSTL渲染和ActionChainResult等),内置的拦截器,以及由不同拦截器组成的拦截器栈.这些拦截器可以直接使用,也可以作为自定义的拦截器的基础. struts-default.xml文件的最后还定义了默认的拦截器引用。
4. struts.properities
Struts2提供了很多可配置的属性,通过这些属性的设置,可以改变框架的行为,从而满足不同的Web应用的需要。这些属性可以在struts.properties文件中进行设置,struts.properties是标准的Java属性文件格式。”#”号作为注释字符,文件内容有键(key)-值(value)对组成,Struts2属性作为key,属性的值作为value。
struts.properities文件通常在/WEB-INF/class目录下
default.properties文件中给出所有属性的列表,并对其中一些属性设置了默认值.如果你创建了struts.properities文件没那么该文件中的属性设置会覆盖default.properties文件中的属性设置。
注意:
在struts.properties文件中配置的内容,都可以也应该由struts.xml文件来配置。保留struts.properties文件是为了与向后WebWork兼容。所以建议使用struts.xml来配置struts2的属性。
5. struts-plugin.xml
Struts2提供插件机制扩展,自身的功能,插件以JAR包的方式提供。
如果多个文件中配置相同的Struts2的常量或属性。按照加载的顺序,后加载的会覆盖先加载的文件中的值。
Struts2框架按照以下顺序加载Struts2常量:
(1)struts-default.xml
(2)struts-plugin.xml
(3)struts.xml
(4)struts.properties
(5)web.xml
三. 静态内容
在Struts2框架中,除了类文件和配置文件外,还有一些如JavaScript,CSS文件,以及FreeMarker模板文件等。Struts框架的静态内容由FilterDispatcher过滤器自动提供的。任何以 “/struts/ ”开始的请求都被认为是静态内容。
“/struts/ ”后面的内容将被映射到Struts2核心类库(struts-core-x.x.x.jar)中的公共包中。
Struts2需要的公共静态内容是FilterDispatcher过滤器自动提供的.任何”/struts/”开始的请求被认为是静态内容,”/struts/”后面的值会被映射到Struts2核心类库中的公共包.
默认情况下,框架会搜索下面的包:
org.apache.struts2.static
template
附加的包可以通过名为”packages”的配置参数来指定.多个包之间是以","隔开。
四. Struts.xml配置详解
在Struts2框架的配置文件struts.xml文件中,可以将配置内容分为三大类:管理元素、用户请求处理元素和错误处理元素,在每种元素中可以包含不同的配置内容:
(1)管理元素:Bean配置、常量配置、包配置、命名空间配置、包含配置。
(2)用户请求处理元素:拦截器配置、Action配置、Result配置。
(3)错误处理元素:异常配置。
1. Bean配置
在Struts2框架的struts-default.xml文件中,定义了大量的核心组件,这些核心组件不是直接以硬编码的形式卸载代码中,而是以自己的依赖注入容器来配置。用户可以编写自己的组件实现类来扩展或者替换框架的某一部分,使用<bean>元素来描述组件实现类。
在struts.xml文件中使用<bean>元素来配置bean。
2. 常量配置
常量可以配置在struts.xml 或 struts.properties中,使用<constant>元素配置常量时,需要指定以下两个必填属性。
name 常量的名称
value 常量的值
(1)struts.xml中配置常量
例,struts.xml文件中,指定字符编码集为gb2312。代码如下:
<constant name="struts.i18n.encoding" value="gb2312" />
例,struts.xml文件中,指定国际化资源文件的basename为globalMessage。代码如下:
<constant name="struts.custom.i18n.resources" value="globalMessages" />
例,struts.xml文件中,指定系统此时为开发模式。代码如下:
<constant name="struts.devMode" value="true" />
(2)struts.properties 中配置常量
在 struts.properties 文件中配置常量
struts.i18n.encoding=gb2312
struts.custom.i18n.resources=globalMessages
(3)web.xml中配置常量
在web.xml中配置常量
<filter> <filter-name>struts2<filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher<filter-class> <init-param> <param-name>struts.i18n.encoding</param-name> <param-value>gb2312</param-value> </init-param> <init-param> <param-name>struts.custom.i18n.resources</param-name> <param-value>globalMessages</param-value> </init-param> </filter>
推荐在struts.xml中进行配置。通常不需要在struts.properties,web.xml中配置常量,降低了代码的可读性。
3. 包配置
在struts2框架中,其核心组件是Action和拦截器等,该框架使用包来管理这些组件。在包中可以配置多个Action,多个拦截器或者是多个拦截器引用的集合等。
使用<package>元素配置包。<package>元素可以指定4个属性。
属性名 | 必选 | 说明 |
name | 是 | 指定包的名称,该名称是该包被其他包引用的key值。 |
extends | 否 | 指定该包继承的其他子包。 |
namespaces | 否 | 指定该包的命名空间。 |
abstrut | 否 | 指定该包是否是一个抽象包。抽象包不能定义Action。 |
说明:
a. 如果使用extends继承其他包,则子包了可以继承父包中的拦截器和Action等。但父包必须在子包前面定义。
b. 使用 abstrut="true" 的package本身不能使用,必须由其他package继承。
4. 命名空间配置
应用中可能会出现同名的Action,Struts2以命名空间的方式来管理Action,同一个命名空间中不能有同名的action。
(1)namespace的意义
通过配置<package>的namespace属性来指定命名空间。namespace默认为空("")。
namespace用来定义请求的url。namespace必须要以斜杠"/"开头。
例:IndexAction类的action为"index",namespace为“/myname”,则需要请求到IndexAction的URL为/myname/index
(2)namespace为空("")的意义
若某个Action没有配置namespace,则action前可以有任意路径来访问该action。
例:IndexAction类的action为"index",namespace为"",或没有配置namespace。则需要请求到IndexAction的URL为/abc/index,也可以为/abc/def/index。即 “根目录/”与“/index.action”之间的位置可以为任意字符串。
(3)根命名空间,namespace="/"
若namespace属性值为"/",则该命名空间即为根命名空间。使用根命名空间的包下的Action只能处理"根目录/actionName.action"的URL请求。
(4)Struts2按照以下框架搜索Action
a. 查找指定namespace下的action,如果找到则执行。
b. 若没找到,则进入namespace为空(或没有配置namespace)的package查找action,找到则执行。
c. 若没找到action,则Struts2出现异常。
例:如果在不同命名空间下配置,有相同名称的Action:
<package name="mypackage1" extends="struts-default"> <action name=login" class="my.test.LoginAction1"> <result name="success">welcome.jsp</result> <result name="login">login.jsp</result> </action> </package> <package name="mypackage2" extends="struts-default" namespace="/tmp"> <action name=login" class="my.test.LoginAction2"> <result name="success">welcome.jsp</result> <result name="login">login.jsp</result> </action> <action name="testlogin" class="mytest.TestLoginAction"> <result name="success">welcome.jsp</result> </action> </package>
说明:
a. 当访问http://localhost:8080/test/login.action时,struts2访问my.test.LoginAction1。
b. 当访问http://localhost:8080/test/tmp/login.action时,struts2访问my.test.LoginAction2。
通过在url中的action之前指定命名空间。则Struts2访问不同命名空间下的action。
c. 当访问http://localhost:8080/test/testlogin.action时,struts2访问my.test.TestLoginAction。
d. 当访问http://localhost:8080/test/tmp/testlogin .action时,struts2访问my.test.TestLoginAction。
若没有重名的action,url可以不用指定命名空间,Struts2也能访问到相应的action。
(5)应用:项目中的<package>的name与namespace
一般情况下,项目中以模块命名<package>的name和namespace。
例如模块为USER,则name="user",namespace="user"。
5. 包含配置
包含配置体现了分而治之的原则。
Struts2允许将一个配置文件分解为多个配置文件,从而提供配置文件的可读性。一旦通过多个struts.xml文件来配置Action,但Struts2默认只加载Web-INF/classes下面的struts.xml。就必须使用struts.xml来包含其他配置文件。
使用<include.../>元素来指定需要包含的文件。<include.../>元素必须指定file属性。
<struts> <include file="struts-user1.xml"> <include file="struts-user2.xml"> <include file="struts-user3.xml"> <include file="struts-user4.xml"> <include file="struts-user5.xml"> </struts>
被包含的struts-user1.xml等配置文件都是标准的struts2的配置文件。
将Struts所有的配置文件都放在Web应用的WEB-INF/classes路径下面。struts.xml文件包含了其他的配置文件,Struts框架自动的加载被包含的文件。
struts的配置通常按模块分开配置。在struts.xml中配置公用的struts2参数。
<include>元素可以和<paceage>元素交替出现。Struts2将按照顺序依次加载<include>和<package>中的action和拦截器。
补充:
1. struts-default
该包作为Struts的默认包。其中配置了许多Struts2的标准配置,包括很多拦截器,拦截器栈。
该包的配置可以更改,需要从jar包中解压,再修改,再压缩成jar包。所以不建议修改该package。
jar包中的配置都是不建议修改的,否则没必要把这些被指打包进jar包。
发表评论
-
Struts2的Ajax应用
2013-04-21 17:37 886一、基本原理 使用拦截器机制,对Action的成员变量做 ... -
文件的上传与下载
2012-08-28 22:56 1280一. 文件上传的原理 表单元素的enctype属性 enc ... -
Struts2标签
2012-08-26 01:40 1170一. Struts2标签概述 Struts2把所有的标签都定 ... -
Struts2异常处理
2012-08-25 23:48 1728传统异常处理方式 Java中的所有异常的根类是Thro ... -
注解配置Struts2 Action
2012-08-25 23:47 2819一. 基础配置 1. ParentPackage注解的 ... -
Struts2 Result基本配置
2012-08-25 23:46 1294一. Result配置概述 result代表了一个可能的输出 ... -
Struts2 Action和Action配置
2012-08-25 23:45 1897一. Action实现类 1. Ac ... -
整合Struts2 Spring Hibernate
2012-08-12 17:34 1144Struts2,Spring,Hibernate各自的职责 ...
相关推荐
Struts 2.0 基本配置使用手册 Struts 2.0 作为一款功能强大且广泛应用的 Web 框架,其优点包括 MVC 2 模型的使用、功能齐全的标志库(Tag Library)和开放源代码。然而,Struts 也存在一些缺点,如需要编写的代码...
详细介绍了 struts2的配置 包括jar包的导入,xml文件的配置 Action类的写法等
用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。
这是一个struts2框架的处理流程的demo,里面有struts2基本的配置和模拟登录的例子,以及struts2前台后后台的数据交互方式的解释,代码中有完整的注释帮助理解struts2的基本流程,同时对jstl和struts2的标签也有一定...
搭建基础Struts2开发环境的必需jar包,如需完整的文件请移步官网下载
struts2基本例子,包括应用多个配置文件等等。
这是根据uploadify3 2结合struts2搭建的文件上传环境 可以直接导入eclipse运行 每步实现基本都加了注释 以下是我碰到的问题: 1 判断session是否失效 本实例没测试这个问题 但在工作项目中碰到了 但原因在这里...
关于struts2的配置文件的说明,对一些基本标签的解释!
由于 Struts 2 的 Convention 插件的主要特点是“约定优于配置”,当我们已经习惯了 Struts 2 的基本开发方法之后,如果希望改为使用 Convention 插件也非常容易,我们只要放弃 Stuts 2.1 应用原有的配置文件,改为...
struts2教程 关于struts2的基本文件配置及实例解读
3.初识struts2配置文件 4 (1).web.xml文件 4 (2).struts.xml文件 4 (3).struts.properties(参default.properties) 4 (4)struts-default.xml 4 (5)其它配置文件 4 4.让MyEclipse提示xml信息 4 5.如何...
此文件可直接导入测试使用,供初学struts2的朋友借鉴,包含struts2类中获得内置对象,注入form表单参数,struts2的基本XML配置等等...
NULL 博文链接:https://johnson2132.iteye.com/blog/721059
在本教程中,我们将学习Struts2的基本配置和使用,包括安装Struts2、编写Action类、配置struts.xml文件、使用JSP页面等。同时,我们也将比较Struts1.x和Struts2之间的差异,了解Struts2的优势和缺陷。
Struts2 虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了 Struts1.x 的方式(当然, Struts2 仍然是基于 MVC 模式的,也是动作驱动的,可能这是唯一 没变的东西)。 Struts2 实际上是在 ...
Struts2框架简介 Struts2历史 Struts2与MVC Struts2体系介绍 Struts2体系架构 Struts2工作流程 Struts2基本知识点 Struts2标签库简介 ...Struts2核心配置文件Struts.xml详解 Struts2的简单开发和配置
1.2.4 Struts2配置文件处理 15 1.2.5 OGNL介绍和类型转换目的 15 1.2.6 进行校验 16 1.2.7 Web项目国际化根由 16 1.2.8 SiteMesh页面布局框架简介 17 1.3 我们为什么要用Struts2 17 1.4 Web项目中使用Struts2初探 20...