要想使用
Struts
,至少要依靠两个配置文件:
web.xml
和
struts-config.xml
。其中
web.xml
用来安装
Struts
框架。而
struts-config.xml
用来配置在
Struts
框架中要使用的资源。如
Formbean
、
Action
、插件等。如果使用了某些插件,如
Validator
、
Tiles
等。还可能需要其他的配置文件。虽然在前面的文章中已多次使用了这两个配置文件,但都是分散介绍的。因此,在本文将对这些配置进行一下总结和回顾,以使读者对
Struts
的配置有一个更清醒的认识。
每一个全局的Forwards需要在<global-forwards>元素中定义一个<forward>子元素。全局 Forwards可以被所有的Action、异常处理以及一些Struts标签(如<html:link>)访问。下面的代码给出了一个标准的全局Forward的配置方法:
控制器可能是这七个配置项上使用最少的一项。它主要用来覆盖一些默认的Struts设置。下面是几个常用的Struts设置:
1. maxFileSize:指定在文件上传时的最大文件尺寸。可以使用K、M和G作为单位。如maxFileSize="2M"。maxFileSize的值只能是整数,不能是小数,如maxFileSize=1.2M是不合法的。
2. nocache:告诉Struts是否应该缓冲内容。指定为nocache="true”,Struts将不会缓冲内容。默认值为true。
3. contentType:指定默认的ContentType字段值,如果要发送的内容的默认格式是HTML,我们可以指定contentType的值为“text/html”。
下面的代码是一个完成的控制器的配置:
属性文件也可以用在获得错误信息上,如在validate方法中使用如下的代码来指定错误提示信息:
而在JSP 页面中可以使用如下的代码来显示这个错误信息:
一、在
web.xml
中安装
Struts
要想使用Struts
,我们接触到的第一个配置文件就是web.xml
。实际上,Struts
的入口点是一个名为ActionServlet
的Servlet
。在第一次访问Struts
时,建立这个ActionServlet
类的对象实例,并调用ActionServlet
类中的init
方法来进行初始化(其实是读取struts-config.xml
文件中的内容,并根据struts-config.xml
中的内容来初始化相关的资源)。因此,就要在web.xml
文件中安装这个ActionServlet
,并在ActionServlet
的初始化参数中指定struts-config.xml
的位置。
二、
struts-config.xml
文件的结构
struts-config.xml
是Struts
的核心配置文件。也就是说,只要是使用Struts
,就必须配置struts-config.xml
文件。struts-config.xml
文件的所有配置项都要放到顶层元素<struts-config>
中,主要配置项有如下七个:
1. FormBean
:在<form-beans>
元素中配置。
2. Action
映射:在<action-mappings>
元素中配置。
3.
全局Forwards
:在<global-forwards>
元素中配置。
4.
全局异常(Exception)
:在<global-exceptions>
元素中的配置。
5.
控制器(Controller)
:在<controller>
元素中配置。
6.
信息资源:在<message-resources>
元素中的配置。
7.
插件:在<plug-in>
元素中配置。
下面我们就分别来看一下这七部分的具体配置方法。
三、配置
Formbean
和
Action
映射
这两个配置项是Struts 配置的核心,也就是说我,一个完整的Struts 应用程序都会拥有这两项配置。
这两个配置项是Struts 配置的核心,也就是说我,一个完整的Struts 应用程序都会拥有这两项配置。
每一个Formbean
要在<form-beans>
元素中定义一个<form-bean>
子元素。下面的代码给出了一个标准的Formbean
的配置方法:
<
form-beans
>
< form-bean name ="myForm" type ="actionform.MyActionForm" />
</ form-beans >
< form-bean name ="myForm" type ="actionform.MyActionForm" />
</ form-beans >
其中name
属性表示Formbean
名,type
属性表示Formbean
类的全名(包名+
类名),一般type
属性值需要指定一个org.apache.struts.action.ActionForm
类或其子类。type
属性值还可以指定一个动态form
,如org.apache.struts.action.DynaActionForm
,或这个类的子类。
在<form-beans>
元素中定义的Formbean
一般用于将客户端浏览器提交的数据映射为Java Bean
的形式,最终开发人员可以直接使用Java Bean
来操作客户端提交的数据。Formbean
同时还有验证数据的功能(在validate
方法中验证)。Formbean
有时还会作为其他用途使用,如使用动态form
和LocaleAction
类配合使用来进行本地化操作。
每一个Action
映射要在<action-mappings>
元素中定义一个<action>
子元素。Action
映射的主要功能是将Struts
动作的访问路径(一般以.do
结尾)和Struts
动作类相对应。同时可以指定一个Formbean
来接收和验证客户端提交的数据。下面的代码给出了一个标准的配置Action
动作的方法:
<
action-mappings
>
< action name ="myForm" path ="/myaction" scope ="request" validate ="true" type ="action.MyAction" input ="/mystruts/error.jsp" >
< forward name ="success" path =" /mystruts/success.jsp" />
</ action >
</ action-mappings >
< action name ="myForm" path ="/myaction" scope ="request" validate ="true" type ="action.MyAction" input ="/mystruts/error.jsp" >
< forward name ="success" path =" /mystruts/success.jsp" />
</ action >
</ action-mappings >
四、配置全局
Forwards
每一个全局的Forwards需要在<global-forwards>元素中定义一个<forward>子元素。全局 Forwards可以被所有的Action、异常处理以及一些Struts标签(如<html:link>)访问。下面的代码给出了一个标准的全局Forward的配置方法:
<
global-forwards
>
< forward name ="myforward" path ="/mystruts/newProduct.jsp" />
</ global-forwards >
< forward name ="myforward" path ="/mystruts/newProduct.jsp" />
</ global-forwards >
五、配置局部和全局异常
(Exception)
在Struts 中处理异常的方法非常多,然后,为了使处理异常的方式更灵活。Struts 框架允许以配置的方式来处理异常。
在Struts 中处理异常的方法非常多,然后,为了使处理异常的方式更灵活。Struts 框架允许以配置的方式来处理异常。
Struts
中的异常配置可分为局部和全局异常。这两种异常配置的方法完全一样,只是配置代码的位置不同。配置局部异常的<exception>
元素在<action>
元素中,而全局异常的<exception>
元素在
<global-exceptions >
元素中。局部异常的优先级大于全局异常的优先级。
下面的代码给出了一个标准的全局异常的配置方法:
<
global-exceptions
>
< exception key ="error.name.blank" type ="java.lang.Exception" path ="/error.jsp" />
</ global-exceptions >
< exception key ="error.name.blank" type ="java.lang.Exception" path ="/error.jsp" />
</ global-exceptions >
其中key
属性表示在属性文件中的key
,一但Struts Action
的execute
方法抛出异常,Struts
首先会在局部和全局异常中匹配type
属性所指定的异常类型。如果匹配成功,就会跳转到path
属性所指的Web
资源(在本例中是“/error.jsp
”)。如果在error.jsp
页面中使用<html:errors/>
标签显示错误信息,就会输出key
属性所对应的值。
<exception>元素除了可以使用path属性指定要跳转的Web资源外,也可以使用handler属性指定用于处理异常的类。如下面的代码所示:
<exception>元素除了可以使用path属性指定要跳转的Web资源外,也可以使用handler属性指定用于处理异常的类。如下面的代码所示:
<
global-exceptions
>
< exception key ="error.email. invalid" type ="java.lang.Exception" handler ="exceptions.EmailException" />
</ global-exceptions >
< exception key ="error.email. invalid" type ="java.lang.Exception" handler ="exceptions.EmailException" />
</ global-exceptions >
其中exceptions.EmailException类必须继承org.apache.struts.action.ExceptionHandler类,而且我们必须覆盖execute方法。
ExceptionHandler类的execute方法的定义如下:
ExceptionHandler类的execute方法的定义如下:
public
ActionForward execute( Exception ex, ExceptionConfig ae, ActionMapping mapping,
ActionForm formInstance, HttpServletRequest request,
HttpServletResponse response) throws ServletException ;
ActionForm formInstance, HttpServletRequest request,
HttpServletResponse response) throws ServletException ;
六、配置控制器
(Controller)
控制器可能是这七个配置项上使用最少的一项。它主要用来覆盖一些默认的Struts设置。下面是几个常用的Struts设置:
1. maxFileSize:指定在文件上传时的最大文件尺寸。可以使用K、M和G作为单位。如maxFileSize="2M"。maxFileSize的值只能是整数,不能是小数,如maxFileSize=1.2M是不合法的。
2. nocache:告诉Struts是否应该缓冲内容。指定为nocache="true”,Struts将不会缓冲内容。默认值为true。
3. contentType:指定默认的ContentType字段值,如果要发送的内容的默认格式是HTML,我们可以指定contentType的值为“text/html”。
下面的代码是一个完成的控制器的配置:
<
controller
maxFileSize
="2M"
contentType
= “text/html”
nocache
= “false”
/>
七、配置信息资源
信息资源使用<message-resources>元素进行配置。下面是一个配置信息资源的例子:
<
message-resources
parameter
="struts.application"
key
="global"
/>
其中parameter
属性表示保存信息资源的属性文件的位置,对于上面的代码来说,属性文件的位置是<Web
根目录>"WEB-INF"classes"struts"application.properties
。key
属性表示application.properties
文件的标识。如果没有key
属性,这个属性文件就是默认的属性文件。当指定key
属性时,在使用这个属性文件时,需要使用相关标签的bundle
属性指定这个key
值。
属性文件中的值可以使用Struts
标签来获取,如属性文件中的一个key
是key.msg.submit
。那么使用<bean:message>
标签获取这个属性文件中的key
值的代码如下:
<
bean:message
key
="key.msg.submit"
bundle
=”global”/>
属性文件也可以用在获得错误信息上,如在validate方法中使用如下的代码来指定错误提示信息:
errors.add(
"
name
"
,
new
ActionMessage(
"
error.name.blank
"
));
而在JSP 页面中可以使用如下的代码来显示这个错误信息:
<
html:errors
property
="name"
bundle
="global"
/>
八、配置
Struts
插件
Struts
之所以强大,在很大程度上取决于它支持通过插件的方式进行扩展,如前面讲的Validator
和Tiles
,都是以Struts
插件形式发布的。Struts
插件使用<plug-in>
元素进行配置,如下面的代码所示:
<
plug-in
className
="org.apache.struts.validator.ValidatorPlugIn"
>
< set-property property ="pathnames" value ="/WEB-INF/validator-rules.xml, /WEB-INF/validator.xml" />
</ plug-in >
< set-property property ="pathnames" value ="/WEB-INF/validator-rules.xml, /WEB-INF/validator.xml" />
</ plug-in >
其中className
属性指定了Struts
要调用的插件类名。property
属性指定了插件需要的属性名,而value
属性指定了相应的属性值。
本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/214842
,如需转载请自行联系原作者