您的位置:首页 > 编程语言 > Java开发

整合struts1时web.xml里的配置

2014-07-18 16:32 639 查看
<pre name="code" class="java"><div class="bct fc05 fc11 nbw-blog ztag" style="line-height: 28px; font-size: 16px; word-wrap: break-word; color: rgb(210, 232, 255); margin: 15px 0px; padding: 5px 0px; overflow: hidden; font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; background-color: rgb(23, 97, 162); ">xml 代码 [注:原文链接:http://mabinjava.blog.163.com/blog/static/183083460201163010743976/]
用Myeclipse自动加入struts的包后会自动生成一个web.xml文件,我把这个文件的配置贴出来,再加上注释^^,这样看起来就比那些讲怎样配置的文章好理解多了。     
   
   
*******************上面是头文件,不用理它们是什么***********************************     
<?xml version="1.0" encoding="UTF-8"?>     
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"     
   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"     
   
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee     
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">     
大约就是些版本号呀,字符编码啊之类的东东吧,没研究过,貌似也不用研究头文件吧     
   
   
   
*********************配置ActionServlet*********************************************     
<servlet>     
<servlet-name>action</servlet-name>     
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>     
   
不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Struts框架只允许在应用中配置一个ActionServlet。     
   
   
*****************初始化参数对Servlet的运行环境进行初始化配置***************************     
   
<init-param>     
<param-name>config</param-name>     
<param-value>/WEB-INF/struts-config.xml</param-value>     
</init-param>     
这里是以相对路径的方式指明Struts应用程序的配置文件位置。如不设置,则默认值为/WEB-INF/struts-config.xml。     
   
   
<init-param>     
<param-name>debug</param-name>     
<param-value>3</param-value>     
</init-param>     
设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。     
   
   
<init-param>     
<param-name>detail</param-name>     
<param-value>3</param-value>     
</init-param>     
<load-on-startup>0</load-on-startup>     
设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过该设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。     
   
</servlet>     
   
   
*********************这里也是配置ActionServlet**************************************     
<servlet-mapping>     
<servlet-name>action</servlet-name>     
<url-pattern>*.do</url-pattern>     
</servlet-mapping>     
就是将所有的*.do请求提交给action,从这里又找到上面那个配置可以读到ActionServlet的位置。     
   
   
**************************配置Struts标签库*****************************************     
<taglib>     
  <tag-uri>/WEB-INF/struts-html.tld<tag-uri>     
  <taglib-location>/WEB-INF/struts-html.tld</taglib-location>     
  </taglib>     
其中<tag-uri>用于指定标签库的相对或者绝对URI地址,Web应用根据这一URI来访问标签库。     
<taglib-location>指定标签描述文件在文件资源系统中的物理位置。     
</web-app>     
   
嘻~~~~~这个配置文件蛮简单的。     
   
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; text-indent: 2em; "> </p>
xml 代码
web.xml文件对于配置任何Java Web应用都必需的。    
(1)配置Struts的ActionServlet    
   
<servlet>元素来声明ActionServlet    
<servlet-name>元素:用来定义Servlet的名称    
<servlet-class>元素:用来指定Servlet的完整类名    
   
<servlet>   
<servlet-name>action</servlet-name>   
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>   
</servlet>   
   
还要配置<servlet-mapping>元素,它用来指定ActionServlet可以处理哪些URL    
<servlet-mapping>   
<servlet-name>action</servlet-name>   
<url-pattern>*.do</url-pattern>   
</servlet-mapping>   
   
注意:(1)<servlet-mapping>和<servlet>中的<servlet-name>?</servlet-name>的要填写一致,它就是一根线,把<servlet-mapping>和<servlet>联接在一起的。    
     (2)在Struts框架中只能有一个Servlet,因为Servlet支持多线程。而<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>中的ActionServlet是在Struts.jar包中的.在导入Struts包时会导入。    
     (3)在显示层以*.do提交的,都会过个Servlet。*.do可以改写成你想要的任何形式。例如:/do/*    
扩展 (1)我们可以继承 org.apache.struts.action.ActionServlet 得到我们可以扩允的子类,在子类中重写一个方法init()。这时<servlet-class>?</servlet-class>中的?是我们新建的类的路径,同样只能存在一个。    
         
   
(2)声明ActionServlet的初始化参数    
   初始化参数用来对Servlet的运行时环境进行初始配置。<servlet>的<init-param>子元素用于配置Servlet初始化参数。    
       
   config :以相对路径的方式指明Struts应用程序的配置文件位置,如不设置,则默认值为/WEB-INF/struts-config.xml    
   debug  : 设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。    
   detail : 设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过此设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。    
   <load-on-startup>?</load-on-startup>中?号的值是此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>debug</param-name>   
        <param-value>3</param-value>   
      </init-param>   
      <init-param>   
        <param-name>detail</param-name>   
        <param-value>3</param-value>   
       </init-param>   
      <load-on-startup>0</load-on-startup>   
  </servlet>   
      
  扩展:(1)当服务器启动后,加载ActionServlet,而ActionServlet会调用相关的方法去,会根据它下面的参数的初始值,对这个ActionServlet中的参数时行初始化    
        (2)当多人协作开发项目时可以对Strutst的配置文件进行适当的扩充,但必须为config开头。如    
         <init-param>   
        <param-name>config/XXXXXXXXX</param-name>   
        <param-value>/WEB-INF/XXXXX.xml</param-value>   
         </init-param>   
             
 (3) 配置欢迎文件清单    
     当客户访问Web应用时,如果仅仅给出Web应用的Root URL,没有指定具体的文件名。Web容器会自动调用Web应用的欢迎文件。<welcome-file-list>是用来设置此项.    
     <welcome-file-list>   
     <welcome-file>welcome.jsp</welcome-file>   
     </welcome-file-list>      
      说明:在<welcome-file-list> 下可以有多个<welcom-file>。Web容器会依次寻找欢迎界面,直到找到为止。但如果不存在会向客户端返回”HTTP 404 NOT Found“错误信息。    
          
      由于在<welcome-file-list>元素中不能配置Servlet映射,则不能直接把Struts的Action作为欢迎文件。但可以通过Struts中的全局的(global)转发项来配置。    
      A:welcome.jsp页面(可换文件名)    
      <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>   
      <html>   
      <body>   
      <logic:forward name="welcome"/>   
      </body>   
      </html>   
      B: web.xml    
      <welcome-file-list>   
      <welcome-file>welcome.jsp</welcome-file>   
      </welcome-file-list>   
      C:  struts-config.xml    
      <global-forwards>   
      <forward name="welcome" path="hello.do">      
      </global-forwards>   
       我自已理解,仅供参考    
      运行机制:当服务器启动时还是会加载 B中<welcome-file>welcome.jsp</welcome-file>中的welcome.jsp,然后读到(A)welcome.jsp中的 <logic:forward name="welcome"/>,接下来会转到C中的<forward name="welcome" path="HelloWorld.do">,这是由于它是以.do(hello.do)结尾的,所以它会找到C文件中的<action>相配配的,最后在转到这个<action>的JSP页面。    
      运行错误示例:     
   
(a)把C中的<forwrod>改成<forward name="welcome" path="liusong.do"> liusong.do根本就不成在。    
   
   
     
   
   
   
   
(b)把C中的 <forward name="welcome" path="hello"> 因为服务器不知是hello.do还是hello.jsp不能转向    
   
   
     
   
   
 (c)把B中的 <welcome-file >/hello.do</welcome-file>因为它不会调用Servlet类,    
   
   
   
         
   
 运行正确示例:    
   
 (d)把C中的<forward name="welcome" path="hello.jsp">   运行成功    
  (e)把B中的<welcome-file >/hello.jsp</welcome-file>   运行成功    
                       
   
(4)配置错误处理    
Struts框架中不能处理所有的错误或异常。当Struts框架发生不能处理所有的错误或异常时,就把错误抛给Web容器。在默认情况下,Web容器会向用户浏览器直接返回原始的错误,为了避免可以使用<error-page>。    
<erro-page>   
<error-code>4040</error-code>   
<location>/commmon/404.jsp</location>   
</error-page>   
<erro-page>   
<error-code>4040</error-code>   
<location>/commmon/404.jsp</location>   
</error-page>   
   
Weg容器捕获的Java异常配置<error-page>,这时需要设置<exception-type>子元素,它用于指定Java异常类。Web容器可能捕获如下的异常:    
RuntimeException 或 Error    
ServletException 或它的子类    
IOException 或它的子类    
   
<error-page>   
<exception-type>javax.servlet.ServletException</exception-type>   
<location>/system_error.jsp</location>   
</error-page>   
<error-page>   
<exception-type>java.io.IOException</exception-type>   
<location>/system_ioerror.jsp</location>   
</error-page>   
   
(5)配置Struts标签库    
Struts框架提供了一些实用的客户化标签标签库,如果在应用中使用可以在web.xml中配置    
<taglib>   
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>   
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>   
</taglib>   
由于Eclipse对<taglib>会产生错误,所以    
<jsp-config>       
<taglib>       
  <taglib-uri>/WEB-INF/validator-user.tld</taglib-uri>       
  <taglib-location>/WEB-INF/validator-user.tld</taglib-location>       
</taglib>       
</jsp-config></div><div class="nbw-blog-end" style="color: rgb(210, 232, 255); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; background-color: rgb(23, 97, 162); "></div><div style="color: rgb(210, 232, 255); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; background-color: rgb(23, 97, 162); "></div><div style="color: rgb(210, 232, 255); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; background-color: rgb(23, 97, 162); "></div><div style="color: rgb(210, 232, 255); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; background-color: rgb(23, 97, 162); "><div class="wumii-hook"></div></div><div class="nbw-act tbar fc03 clearfix" style="zoom: 1; margin: 5px 0px; padding: 10px 0px; text-align: right; color: rgb(147, 233, 202); line-height: 20px; font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; background-color: rgb(23, 97, 162); "><div style="height: 40px; line-height: 40px; "><div class="pleft" style="float: left; ">
</div></div></div>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: