`
wuxiao_v
  • 浏览: 45641 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

web.xml配置总结

 
阅读更多
一、关于webAppRootKey的定义
默认情况下webAppRootKey属性的值为webapp.root(就是说系统会把“web目录的路径”压入一个叫webapp.root的系统变量,也就是说我们可以在以后的properties文件设置中,使用${webapp.root.webtools}来代替“web目录的路径”,此例为tomcat/webapp/webtools)
因为一个tomcat下面可能部署了多个基于spring、log4j的应用,webapp.root会产生冲突错误(也就是说不知道webapp.root具体代表那个应用的路径了),所以我们可以为具体应用具体配置,而不使用默认值。
如下:
 <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>webapp.root.webtools</param-value>
 </context-param>

这样我们就把“web目录的路径”压入一个叫webapp.root.webtools的系统变量。
二、spring以及log4j的配置
<!-- Spring ApplicationContext配置文件的路径,可使用通配符。多个路径用逗号分隔。此参数用于后面的Spring-Context loader -->
 <context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath:spring/*.xml</param-value>
 </context-param>
 <!--由Spring载入的Log4j配置文件位置-->
 <context-param>
     <param-name>log4jConfigLocation</param-name>
     <param-value>/WEB-INF/classes/log4j.properties</param-value>
 </context-param>
 <!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond-->
 <context-param>
     <param-name>log4jRefreshInterval</param-name>
     <param-value>60000</param-value>
 </context-param>
//Log4jConfigListener会去log4j.propeties 读取配置文件;开一条watchdog线程每60秒扫描一下配置文件的变化;
 <listener>
     <listener-class>
         org.springframework.web.util.Log4jConfigListener
     </listener-class>
 </listener>
//根据spring的配置文件加载spring。
 <listener>
     <listener-class>
         org.springframework.web.context.ContextLoaderListener
     </listener-class>
 </listener>

三、Spring 刷新Introspector防止内存泄露
 <listener>
     <listener-class>
         org.springframework.web.util.IntrospectorCleanupListener
     </listener-class>
 </listener>

它主要负责处理由JavaBeans Introspector的使用而引起的缓冲泄露。
spring中对它的描述如下:
    它是一个在web应用关闭的时候,清除JavaBeans Introspector的监听器.在web.xml中注册这个listener.可以保证在web 应用关闭的时候释放与掉这个web 应用相关的class loader 和由它管理的类。
    如果你使用了JavaBeans Introspector来分析应用中的类,Introspector 缓冲中会保留这些类的引用.结果在你的应用关闭的时候,这些类以及web 应用相关的class loader没有被垃圾回收.
    不幸的是,清除Introspector的唯一方式是刷新整个缓冲.这是因为我们没法判断哪些是属于你的应用的引用.所以删除被缓冲的introspection会导致把这台电脑上的所有应用的introspection都删掉.
    需要注意的是,spring 托管的bean不需要使用这个监听器.因为spring它自己的introspection所使用的缓冲在分析完一个类之后会被马上从javaBeans Introspector缓冲中清除掉.
    应用程序中的类从来不直接使用JavaBeans Introspector.所以他们一般不会导致内部查看资源泄露.但是一些类库和框架往往会产生这个问题.例如:Struts
package  org.springframework.web.util;   
  
 import  java.beans.Introspector;   
 import  javax.servlet.ServletContextEvent;   
 import  javax.servlet.ServletContextListener;   
  
 public   class  IntrospectorCleanupListener  implements  ServletContextListener   {   
     public   void  contextInitialized(ServletContextEvent event)   {   
    }    
    
      public   void  contextDestroyed(ServletContextEvent event)   {   
        Introspector.flushCaches();   
    }    
}  

四、编码问题的配置
1、字符编码过滤器(将通过此url的访问的字符编码都强制转换成UTF-8)
   当前台JSP页面和JAVA(比如jsp用的是GBK,而java用的是UTF-8)代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,那这个类就可以出场了
 <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
       org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
       <param-name>encoding</param-name>
       <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
    </init-param>
 </filter>
 <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>


2、解决struts2中文乱码问题
 <filter>
    <filter-name>struts-cleanup</filter-name>
    <filter-class>
       org.apache.struts2.dispatcher.ActionContextCleanUp
    </filter-class>
 </filter>
 <filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>

3、再者建立数据库时要统一编码为UTF-8
4、jsp页面要统一编码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>  

五、添加struts配置(将所有一下的url访问拦截下来转发给action)
<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
      org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
   <init-param>
      <param-name>config</param-name>
      <param-value>
         struts-default.xml,struts-plugin.xml,struts/struts.xml
         //默认为classpath下或src下
      </param-value>
   </init-param>
</filter> 
<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

五、资源配置(这里主要是讲一下配置jndi数据源)
<resource-ref>
  <res-ref-name>jdbc/webtools</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

其实意思就是说,我们在web容器中(tomcat/WebSphere)配置了一个名字为jdbc/webtools的JNDI资源。我们在这里指定一个此资源的引用,共我们程序中使用。
这里就是有一个JNDI数据源。
实质上就是在此声明了一个JNDI引用,指向在容器的server.xml文件中配置了的JNDI Binding。在代码中你可以通过lookup这些在server.xml中配置了的JNDI Bindings或者它的引用(如上面的jdbc/webtools)
通过JNDI引用来访问是J2EE推荐的方式。

res-auth指定是web应用代码本身sign on到对应的resource mananger,还是由container代表web应用sign on到resource manager。该属性的值必须是Application或者Container。如果在web application deployment descriptor中使用<resource-ref>,这个属性是必需的,如果使用<resource-env-ref>,这个属性是可选的。
description资源的文字描述(可选)
res-ref-name/res-env-ref-name资源的名称,这里是相对于java:comp/env context下的,也就是说在我们使用此JNDI数据源时应该使用此相对路径 java:comp/env/jdbc/webtools
res-sharing-scope指定通过这个resource manager得到的连接是否共享。该属性的值必须是Shareable或者Unshareable。缺省情况下,假定连接是共享的。
res-ref-type/res-env-ref-type当web应用查找该资源的时候,返回的Java类名的全称。
分享到:
评论

相关推荐

    在web.xml中引入其他xml配置文件的步骤

    ### 在web.xml中引入其他XML配置文件的步骤 在Java Web开发中,`web.xml`作为Web应用程序的核心配置文件,负责定义应用级别的配置信息。为了提高代码的可维护性和复用性,有时需要将一部分配置内容提取到独立的XML...

    web.xml配置文件详解

    ### web.xml配置文件详解 #### 一、概述 `web.xml`是Java Web应用程序的核心配置文件之一,主要用于定义Web应用程序的结构与行为。它是Servlet容器(如Tomcat)读取Web应用程序配置信息的主要来源,因此深入理解其...

    log4j与web.xml的配置

    4. **通过web.xml配置Log4j** - 在web.xml中,我们可以使用`&lt;context-param&gt;`标签来指定Log4j配置文件的位置,例如: ```xml &lt;param-name&gt;log4jConfigLocation &lt;param-value&gt;/WEB-INF/classes/log4j....

    在web.xml中配置action或.do

    ### 在web.xml中配置action或.do的理解与实践 #### 一、引言 在Web开发领域,特别是基于Java的Web应用程序开发中,`web.xml`文件扮演着至关重要的角色。它不仅定义了Web应用的基本配置,还管理着诸如Servlet、过滤...

    java web项目 web.xml配置详解

    在Java Web开发中,`web.xml`文件是应用的核心配置文件,它定义了Servlet、过滤器、监听器等组件,并负责映射它们的行为。本文将深入解析`web.xml`配置,帮助开发者理解其背后的原理和用途。 一、web.xml文件概述 `...

    Filter过滤器的代码及其web.xml配置代码

    在这个主题中,我们将深入理解Filter的使用方法以及如何在`web.xml`中进行配置。 首先,Filter的工作原理是基于Servlet规范中的请求链模型,当用户发送请求到服务器时,Filter会先于Servlet拦截请求,执行预定义的...

    Web.xml配置详解

    ### Web.xml配置详解 #### 一、Web.xml概述 `web.xml` 文件是Java Web应用程序的核心配置文件之一,主要用于配置应用程序级别的各种初始化参数、监听器、过滤器、Servlet映射等。通过`web.xml`,开发者可以灵活地...

    struts.xml和applicationContext.xml、web.xml的配置

    总结来说,`struts.xml` 负责Struts2的Action配置,`applicationContext.xml` 管理Spring的Bean和依赖,而`web.xml` 定义了Web应用的基本结构和组件。这三个文件共同协作,构建了一个功能完善的Java Web应用,实现了...

    spring在web.xml中和在struts中的不同配置..pdf

    总结来说,Spring在`web.xml`中的配置更加独立,它不依赖于任何特定的应用框架,而是在Web应用启动时独立初始化ApplicationContext。而在Struts中,Spring作为插件集成,依赖于Struts的执行流程来管理Bean。这两种...

    Web项目没有web.xml配置文件

    在现代的Web开发中,"Web项目没有web.xml配置文件"是一个常见的现象,尤其是在使用Spring Boot、Spring MVC等框架时。传统的Java Web应用通常依赖于`web.xml`文件来配置Servlet、过滤器、监听器等核心组件,但在最新...

    Web.xml配置文件.pdf

    《Web.xml配置文件详解》 在Java Web应用中,`Web.xml`文件是核心的部署描述符,它定义了应用程序的结构、行为以及服务器如何处理请求。这份文档将深入探讨`Web.xml`配置文件的各个关键元素,帮助开发者更好地理解...

    weblogic.xml配置详解

    ### WebLogic.xml配置详解 #### 一、概述 `weblogic.xml` 文件是 WebLogic Server 应用服务器中专门用于自定义和配置部署在该服务器上的 Web 应用程序的一个重要配置文件。它允许开发人员和系统管理员针对 ...

    Spring全注解project示例 (无web.xml配置)

    标题 "Spring全注解project示例 (无web.xml配置)" 提供了我们即将探讨的核心主题:一个使用Spring框架,完全依赖注解配置的项目,且没有传统的web.xml部署描述符。这种配置方式在现代Spring应用中非常常见,因为它...

    SpringMVC基于代码的配置方式(零配置,无web.xml)

    总结,SpringMVC的零配置方式借助了Spring Boot的强大功能,简化了传统的XML配置,使开发更加便捷。通过Java代码配置,我们可以更加灵活地控制SpringMVC的行为,同时降低了维护成本。在实际开发中,这种方式可以显著...

    tomcat配置文件web.xml与server.xml解析

    Tomcat 配置文件 web.xml 与 server.xml 解析 Tomcat 配置文件 web.xml 和 server.xml 是 Tomcat 自身的配置文件,用于配置 Tomcat 服务器的行为和性能。在本文中,我们将对 web.xml 和 server.xml 中的主要配置项...

    web.xml+详细解析.rar

    总结,`web.xml`是Java Web开发中的关键配置文件,它定义了应用程序的运行环境和行为,理解和熟练使用`web.xml`对于提升开发效率和维护性至关重要。通过深入学习和实践,开发者可以更好地掌控Web应用的运行逻辑,...

    spring无web.xml零配置

    总结来说,"spring无web.xml零配置"意味着使用Java配置和Spring Boot的自动配置机制,替代了传统的XML配置方式,使得Spring应用的配置更加简洁、直观,同时也增强了可测试性和可维护性。通过这种方式,开发者可以更...

    web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序

    ### web.xml文件中配置(servlet, spring, filter, listener)的加载顺序 在Java Web应用开发中,`web.xml`文件是整个Web应用程序的核心配置文件之一,它定义了Servlet容器如何启动、初始化以及配置各个组件如...

    web.xml配置解析[总结].pdf

    上述配置表示Spring将加载`/WEB-INF/classes`目录下以`applicationContext-`开头的XML配置文件,以及类路径(`classpath*:`)下的所有匹配文件。这里的`*`是一个通配符,允许加载多个同名前缀的XML配置文件。 ### ...

    web.xml配置详解

    ### Web.xml配置详解 在Java Web开发中,`web.xml`是至关重要的配置文件之一,它主要用于定义Web应用的各种配置信息。本文将详细介绍`web.xml`中的主要标签及其作用,并提供具体的配置示例。 #### 一、Web.xml概述...

Global site tag (gtag.js) - Google Analytics