有关struts的配置说明

 Struts应用的配置
      Struts的配置是两个文件web.xml以及struts配置文件

       1.web.xml
         配置ActionServlet,其方法与配置普通的Servlet一致,涉及的元素是<servlet> (名称,类,参数),<servlet-mapping> (servlet所要处理的URL),<taglib> (客户化标签库)
这里 ActionServlet配置
< servlet >
     < servlet-name > action </ servlet-name >
     < servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
     < init-param >
         < param-name > config </ param-name >
         < param-value > /WEB-INF/struts-config.xml </ param-value >
     </ init-param >
     < init-param >
         < param-name > config/moduleA </ param-name >
         < param-value > /WEB-INF/struts-moduleA.xml </ param-value >
     </ init-param >
</ servlet >

< servlet-mapping >
     < servlet-name > action </ servlet-name >
     < url-pattern > *.do </ url-pattern >
</ servlet-mapping >       可以看到,<servlet>标签与<servlet-mapping>相对应,由于Struts只支持配一个ActionServlet,因此只能出现一对。
      ActionServlet支持用户类,只需要改变这里的<servlet-class>即可使用自定义类;
      <servlet>/<init-param>标签中,config代表Struts配置文件所在的位置,这里需要注意 config/moduleA的写法,它代表着一个模块moduleA以及支持该模块的配置文件
      <init-param>可以具有多个,在这里可以保存一些客户化的参数,使用servlet.getInitParameter("paramname")的方式即可以取得。
      <url-parttern>代表该servlet所要处理的URL,支持通配符,*.do代表所有以 .do 为后缀的请求都交由该servlet来处理

标签库配置
< taglib >
     < taglib-uri > /WEB-INF/struts-html.tld </ taglib-uri >
     < taglib-location > /WEB-INF/struts-html.tld </ taglib-location >
</ taglib >       <taglib-uri>:指定标签库的相对或绝对URI地址,即在JSP页面中引用标签时,需与之对应;
      <taglib-location>:指定标签库的物理位置,即实际存放在什么地方。

欢迎文件配置
< welcome-file-list >
     < welcome-file > welcome.jsp </ welcome-file >
     < welcome-file > index.html </ welcome-file >
</ welcome-file-list >       <welcome-file>:web应用的欢迎文件,即只输入了应用的根目录时响应的文件,按先后顺序查找;
      该元素不能被配置成Action,如果有此需要的话则应在这里配置一个JSP,并在JSP里面<logic:forward name="key" />进行跳转

错误代码配置
< error-page >
     < error-code > 404 </ error-code >
     < location > /common/404.html </ location >
</ error-page >       <error-page>:指定web出错后的处理页面,常见的错误多是404:找不到目录或文件,500:服务器内部错误;
      <error-code>:指定需要处理的错误号;
      <location>:指定出错后跳转的处理页面,这里可以设置JSP页面。

异常捕获配置
< error-page >
     < exception-type > javax.servlet.ServletException </ exception-type >
     < location > /common/system_error.jsp </ location >
</ error-page >       捕获的异常:
         RuntimeException 或 Error
         ServletException
         IOException


       2.Struts配置文件
         Struts配置的相关类位于org.apache.struts.config包中,其中ModuleConfig接口是整个树的顶点,各种配置信息都放入ModuleConfig的实现类中(由于存在着多模块,因此会有多个实现)。因此从ModuleConfig接口中可以取得各种配置信息,当然需要先通过selectModule()来选择需要操作的具体实现。
         还需要注意的一点就是在Struts配置文件里面DTD文件严格定义了各个元素出现的先后顺序。
datasources元素
< data-sources >
     < data-source type ="org.apache.commons.dbcp.BasicDataSource" >
         < set-property property ="dirverClassName" value ="com.microsoft.jdbc.sqlserver.SQLServerDriver"   />
         < set-property property ="url" value ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=addressbook;"   />
         < set-property property ="username" value ="sa"   />
         < set-property property ="password" value ="i am ddm"   />
         < set-property property ="autoCommit" value ="false"   />
         < set-property property ="readOnly" value ="false"   />
         < set-property property ="minCount" value ="2"   />
         < set-property property ="maxCount" value ="20"   />
         < set-property property ="description" value ="SQL Server2000"   />
     </ data-source >
     < data-source key ="datasource.other" type ="" >
       
     </ data-source >
</ data-sources >       <data-sources>:配置应用的数据源,可以包含多个<data-source>子标签
      <data-source>:数据源的参数,由于可以有多个数据源,因此<data-source>有一个属性 key 用于区分,如果没有 key 属性,Struts将此做为缺省的数据源,该缺省数据源实际上也是有 key 值的,对应于Globals.DATA_SOURCE_KEY的值,实际值是 "org.apache.struts.action.DATA_SOURCE"字串。
         :key 属性的值不允许重复,自行指定key属性后,在Action中操作为 this.getDataSource(request,key),在其它地方则需要从ServletContext(application范围)中用 (DataSource)getAttribute(key),参数key的值与该属性值完全相同,因此在配置文件中该属性应该具有一定的区别性,如"datasource.other"等,以避免在引用时出现麻烦,另外如果在配置文件中各个data-source都配置了key属性,那么在应用仅能通过对应的key值进行调用,而不会存在着缺省数据源("org.apache.struts.action.DATA_SOURCE");
         :使用Myeclipse插件配DBCP时还需要手工修改 几处 。

这里 form-beans元素(普通)
< form-beans >
     < form-bean name ="loginForm" type ="com.ddm.struts.addressbook.form.LoginForm"   />
</ form-beans >       <form-beans>:配置ActionForm,可以包含多个<form-bean>子标签
      <form-bean>:ActionFormBean的参数。
         className:该标签对应的配置类,Struts中与之对应的类是"org.apache.struts.config.FormBeanConfig",有需要时也可自行指定
         name:该ActionForm的唯一标识符
         type:ActionForm的类名

form-bean元素(动态)
< form-bean name ="userForm" type ="org.apache.struts.action.DynaActionForm" >
     < form-property name ="firstName" type ="java.lang.String"   />
     < form-property name ="lastName" type ="java.lang.String"   />
     < form-property name ="age" type ="java.lang.Integer" initial ="18"   />
</ form-bean >       <form-bean>:动态的ActionForm的type="org.apache.struts.action.DynaActionForm"或子类;
      <form-property>:配置ActionForm的成员属性
         name:属性名称
         type:属性类型,必须是对象类型。如果是Java简单数据类型需要使用包装类
         inital:初始值,可缺省,与类的属性可以不用初始化的特性相同
      另:这个动态ActionForm还很有些名堂,现在只能逐步推进了

这里 global-exceptions元素
< global-exceptions >
     < exception
         className ="org.apache.struts.config.ExceptionConfig"
        handler ="org.apache.struts.action.ExceptionHandler"
        key ="global.error.login"
        bundle ="bundle01"
        path ="/err.jsp"
        scope ="request"
        type ="com.ddm.struts.addressbook.LoginException"
     />
</ global-exceptions >       <global-exception>:配置全局异常处理,可以包含多个<exception>子标签,其配置方法与局部(Action)异常配置相同,但是作用域不同,类似于Java类的成员属性与同名方法形参作用域之间的关系,对照想想setter就清楚了
      <exception>:配置异常处理
         className:与<exception>标签对应的配置类,缺省是"org.apache.struts.config.ExceptionConfig";
         handler:异常处理类,缺省是"org.apache.struts.action.ExceptionHandler";
         key:描述异常的消息在资源文件中的key;
         bundle:资源文件,可缺省;
         path:Struts捕获到指定类型的异常后,转发的处理路径;
         scope:ActionMessages实例的存放范围,缺省为"request",还可取值"session";
         type:异常的类型

这里 global-forwards元素
< global-forwards >
     < forward
         className ="org.apache.struts.action.ActionForward"
        contextRelative ="false"
        name ="login"
        path ="/login.jsp"
        redirect ="false"
     />
     < forward
         name ="toModuleA"
        contextRelative ="true"
        path ="/moduleA/index.do"
        redirect ="true"
     />
</ global-forwards >       <global-forwards>:配置全局forward,可包含多个<forward>子标签。
      <forward>:配置forward
         className:与<forward>标签对应的配置类,缺省为"org.apache.struts.action.ActionForward";
         contextRelative:缺省值为"false",表示path相对于应用;当取值为"true"时,表示path属性给出的是相对于当前上下文的URL,如果配置用于子模块之间切换的forward,则此项需设为"true";
         name:名称;
         path:转发的路径,必须以"/"打头
         redirect:缺省值为"false",表示请求转发,取值"true"时,表示重定向,子模块切换用的forward,此项需设为"true"

action-mappings元素
<action-mappings>
    <action
        className="org.apache.struts.action.ActionMapping"
        attribute="loginForm"
        input="/login.jsp"
        name="loginForm"
        path="/login"
        scope="request"
        validate="true"
        parameter="36"
        roles=""
        unknown="false"
        type="com.ddm.struts.addressbook.action.LoginAction"
        forward=""
        include=""
    >
        <exception
            key="global.error.login"
            path="/err.jsp"
            type="com.ddm.struts.address.LoginException"
        />
        <forward name="loginSuccess" path="/menu.jsp" />
        <forward name="loginFaile" path="/login.jsp" />
    </action>
</action-mappings>      <action-mappings>:配置Action,可包含多个<action>子标签
      <action>:配置Action
         className:标签对应的配置类,缺省为"org.apache.struts.action.ActionMapping"
         attribute:name属性所对应的ActionForm实例的 key ,通过这个attribute操作它,如 (LoginForm)request.getAttribute("loginForm"); ;
         input:输入URL,转发到该 Action 时如果 ActionForm.validate() 检验失败,Action 将把请求转发到该URL,请看 ;
         name:与Action对应的ActionForm的 name ,与<form-bean>标签的name属性相匹配;
         path:Action的访问路径,必须以"/"打头,不需要后缀
         scope:与Action对应的ActionForm的存在范围,缺省是"session",可取值"request";
         validate:是否需要调用ActionForm的 validate() 方法进行检验,缺省是"true",可取值"false",ActionForm将不会对提交的数据进行表单校验;
         parameter:可附加的参数,在Action中可以用 mapping.getParameter() 来获取;
         roles:指定允许调用该Action的安全角色,与容器设置的安全角色匹配,由容器来判断;
         unknown:表示是否处理用户发出的所有无效的Action URL,默认为"false";
         type:Action的类名;
         forward:指定转发的URL,相当于使用ForwardAction
         include:指定包含的URL,相当于使用IncludeAction
         <exception>:Action局部异常捕获,参看<global-exceptions>小节
         <forward>:Action局部forward,参看<global-forwards>小节
      注意:
         <action>标签的type,forward,include三种属性互斥。

controller元素
<controller
    className="org.apache.struts.config.ControllerConfig"
    contentType="text/html;charset=UTF-8"
    locale="true"
    nochache="false"
    proccessorClass="org.apache.struts.action.RequestProcessor"
/>      <controller>:配置ActionServlet
         className:标签的配置类,缺省为"org.apache.struts.config.ControllerConfig";
         contentType:指定响应结果的内容类型和字符编码,如果在Action和JSP中设置将会覆盖掉该设置;
         locale:指定是否把 Locale 对象保存到session中,默认值为"false";
         nochache:是否在客户端缓存,缺省为"false",可选"true",struts将在响应中加入特定的头参数以防止页面被缓存
         processorClass:指定负责处理 Request 的类,缺省为"org.apache.struts.action.RequestProcessor",如果有多模块则应在各模块指定自己的处理类;
         bufferSize:指定上传文件的输入缓冲,默认为"4096";
         tempDir:指定处理上传文件的临时工作目录,Servlet容器可以自行分配。

message-resources元素
<message-resources
    className="org.apache.struts.config.MessageResourcesConfig"
    factory="org.apache.struts.util.PropertyMessageResourcesFactory"
    key="org.apache.struts.action.MESSAGE"
    null="true"
    parameter="com.ddm.struts.addressbook.ApplicationResources"
/>      <messge-resources>:配置资源文件,这个标签与以上的几个有点不同,他本身可以存在多个
         className:标签的配置类,缺省为"org.apache.struts.config.MessageResourcesConfig";
         factory:资源的工厂类,缺省为"org.apache.struts.util.PropertyMessageResourcesFactory";
         key:指定 Resource Bundle 存放在 ServletContext 中的 key,缺省为Globals.MESSAGES_KEY的值 "org.apache.struts.MESSAGE" ,可以自行指定key,使用如resource.bundle01加以区别,可通过 (MessageResources)servletContext.getAttribute(key) 拿到,Struts提供的客户化标签中常常可以见到一个 bundle 属性,该属性即对应于这里的 key 值;
         null:指定如何处理未知的消息,缺省为"true",返回空字串,可选"false",将返回类似"???key???"的字串;
         parameter:资源文件的存放路径。

plug-in元素
<plug-in className="com.ddm.struts.addressbook.bean.UserBean">
    <set-property property="path" value="/WEB-INF/user.xml" />
</plug-in>      <plug-in>:配置插件,className属性指定具体的插件类,struts配置文件中可配置多个插件,初始化顺序由书写顺序决定;
      <set-property>:设置插件的属性,可具有多个,该插件类必须实现与本属性对应的setter/getter,在Struts初始化时自动set。
      插件必须实现 org.apache.struts.action.PlugIn 接口,该接口具有两个方法:
public void init(ActionServlet servlet,ApplicationConfig config) throws ServletException;      init方法将于Struts应用启动时被调用,是一个初始化客户资源的接口,而且由Struts传入的参数也便于设置各种环境。

public void destroy();      destroy方法于Struts应用关闭时调用,是一个释放客户资源的接口。


      多应用模块的配置
      多应用模块的划分有助于应用的并行开发,提高效率。
      步骤:
         1.为每个子应用创建单独的 Struts 配置文件;
         2.在 web.xml 中配置每个子应用的信息,参看 这里 ;
         3.应用中实现切换:<forward> 或 在<action>标签中使用 SwitchAction 来实现切换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值