struts1的配置文件详解
要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml。其中web.xml用来安装Struts框架。而struts-config.xml用来配置在Struts框架中要使用的资源。如Formbean、Action、插件等。如果使用了某些插件,如Validator、Tiles等。还可能需要其他的配置文件。虽然在前面的文章中已多次使用了这两个配置文件,但都是分散介绍的。因此,在本文将对这些配置进行一下总结和回顾,以使读者对Struts的配置有一个更清醒的认识。
一、在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应用程序都会拥有这两项配置。
每一个Formbean要在<form-beans>元素中定义一个<form-bean>子元素。下面的代码给出了一个标准的Formbean的配置方法:
<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 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的配置方法:
<forward name="myforward" path="/mystruts/newProduct.jsp" />
</global-forwards>
五、配置局部和全局异常(Exception)
在Struts中处理异常的方法非常多,然后,为了使处理异常的方式更灵活。Struts框架允许以配置的方式来处理异常。
Struts中的异常配置可分为局部和全局异常。这两种异常配置的方法完全一样,只是配置代码的位置不同。配置局部异常的<exception>元素在<action>元素中,而全局异常的<exception>元素在<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 key="error.email. invalid" type="java.lang.Exception" handler="exceptions.EmailException"/>
</global-exceptions>
其中exceptions.EmailException类必须继承org.apache.struts.action.ExceptionHandler类,而且我们必须覆盖execute方法。
ExceptionHandler类的execute方法的定义如下:
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”。
下面的代码是一个完成的控制器的配置:
七、配置信息资源
信息资源使用<message-resources>元素进行配置。下面是一个配置信息资源的例子:
其中parameter属性表示保存信息资源的属性文件的位置,对于上面的代码来说,属性文件的位置是<Web根目录>"WEB-INF"classes"struts"application.properties。key属性表示application.properties文件的标识。如果没有key属性,这个属性文件就是默认的属性文件。当指定key属性时,在使用这个属性文件时,需要使用相关标签的bundle属性指定这个key值。
属性文件中的值可以使用Struts标签来获取,如属性文件中的一个key是key.msg.submit。那么使用<bean:message>标签获取这个属性文件中的key值的代码如下:
属性文件也可以用在获得错误信息上,如在validate方法中使用如下的代码来指定错误提示信息:
而在JSP页面中可以使用如下的代码来显示这个错误信息:
八、配置Struts插件
Struts之所以强大,在很大程度上取决于它支持通过插件的方式进行扩展,如前面讲的Validator和Tiles,都是以Struts插件形式发布的。Struts插件使用<plug-in>元素进行配置,如下面的代码所示:
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validator.xml" />
</plug-in>
其中className属性指定了Struts要调用的插件类名。property属性指定了插件需要的属性名,而value属性指定了相应的属性值。
转自https://blog.csdn.net/u012446233/article/details/41649431
struts1的配置文件详解的更多相关文章
- struts1的配置文件详解11111
要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml.其中web.xml用来安装Struts框架.而struts-config.xml用来配置在Struts ...
- quartz配置文件详解
quartz配置文件详解(转载) quartz学习总结: 一.关于job: 用Quartz的行话讲,作业是一个执行任务的简单Java类.任务可以是任何Java代码.只需你实现org.qu ...
- WebConfig配置文件详解
今天看到博客园一位朋友整理的一个WebConfig配置文件详解,觉得不错,转载一下: <?xml version="1.0"?> <!--注意: 除了手动编辑此文 ...
- tomcat配置文件详解
Tomcat系列之服务器的安装与配置以及各组件详解 tomcat 配置文件详解
- ubuntu nginx 安装以及配置文件详解
1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...
- Spring配置文件详解 – applicationContext.xml文件路径
Spring配置文件详解 – applicationContext.xml文件路径 Java编程 spring的配置文件applicationContext.xml的默 ...
- spring配置文件详解--真的蛮详细
spring配置文件详解--真的蛮详细 转自: http://book.51cto.com/art/201004/193743.htm 此处详细的为我们讲解了spring2.5的实现原理,感觉非常 ...
- net-snmp配置文件详解
net-snmp配置文件详解 net-snmp的配置文件是有一定的层次结构的,配置起来也很方便.网上找了很多资料,大概把这个配置文件的各个信息搞懂了一点.其实在net-snmp的EXAMPLE.con ...
- Rsyslog配置文件详解
Rsyslog配置文件详解https://my.oschina.net/0757/blog/198329 # Save boot messages also to boot.log 启动的相关信息lo ...
随机推荐
- 高通 fastboot 显示
需要在fastboot里面添加功能用于保存,记录一下fastboot显示的过程. android O新添加了选项,如下 platform/msm_shared/rules.mk ifeq ($(ENA ...
- php模拟post提交数据,用处很多,可用来网站的采集,登陆等等
1. [代码][PHP]代码 <?php //以程序登陆一个论坛登录为例 function bbslogin($user_login, $password, $host, $port = &qu ...
- (转)live555 RTSP Server RTP over TCP BUG
最近碰到一个非常棘手的问题,NVR通过ONVIF协议接入IPC进行录像,在录像时,会发现其中有个别IPC会出现录像断断续续的情况.这种情况很难复现,但是这种情况一旦出现,整个过程会一直持续很长时间,一 ...
- Xianfeng轻量级Java中间件平台:菜单管理
通过菜单管理,可以实现系统菜单的权限控制.用户个性化菜单功能等,当然很多系统支持在线开发,不用专门的开发工具编写代码,通过一些简单的设置就能开发出新的功能,有新功能增加到系统中,菜单管理功能也是必不可 ...
- DNS Bind服务配置解析
DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 一.DNS服务器工作模式分类: 1.主服务器:在特定区域内具有唯一 ...
- Hadoop分布式集群部署(单namenode节点)
Hadoop分布式集群部署 系统系统环境: OS: CentOS 6.8 内存:2G CPU:1核 Software:jdk-8u151-linux-x64.rpm hadoop-2.7.4.tar. ...
- Shell脚本中的export
shell 与 export命令 用户登录到Linux系统后,系统将启动一个用户shell.在这个shell中,可以使用shell命令 或声明变量,也可以创建并运行shell脚本程序.运行shell脚 ...
- C# 中base和this关键字
base: 用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数.实例方法和实例属性访问器中. MSDN中小结的具体功能包括: ()调用基类上已被其他方法重写的方法. ()指定创建派 ...
- js eventLoop (使用chunk 同步变异步)
https://www.cnblogs.com/xiaohuochai/p/8527618.html 线程 javascript是单线程的语言,也就是说,同一个时间只能做一件事.而这个单线程的特性,与 ...
- jQuery:jQuery性能优化28条建议
http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...