做网站大公司,个人网站建设方案书 备案,电子商务网站设计分析怎么做,公司网站建设站酷一 1、启动一个WEB项目的时候#xff0c;WEB容器会去读取它的配置文件web.xml#xff0c;读取listener和context-param两个结点。 2、紧急着#xff0c;容创建一个ServletContext#xff08;servlet上下文#xff09;#xff0c;这个web项目的所有部分都… 一 1、启动一个WEB项目的时候WEB容器会去读取它的配置文件web.xml读取listener和context-param两个结点。 2、紧急着容创建一个ServletContextservlet上下文这个web项目的所有部分都将共享这个上下文。 3、容器将context-param转换为键值对并交给servletContext。 4、容器创建listener中的类实例创建监听器。 二 Load-on-startup Load-on-startup 元素在web应用启动的时候指定了servlet被加载的顺序它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在那么容器会在该servlet被调用的时候加载这个servlet 。如果值是正整数或零容器在配置的时候就加载并初始化这个servlet容器必须保证值小的先被加载。如果值相等容器可以自动选择先加载谁。 在servlet的配置当中load-on-startup5/load-on-startup的含义是 标记容器是否在启动的时候就加载这个servlet。 当值为0或者大于0时表示容器在应用启动时就加载这个servlet 当是一个负数时或者没有指定时则指示容器在该servlet被选择时才加载。 正数的值越小启动该servlet的优先级越高。 三 加载顺序 首先可以肯定的是加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是ServletContext - listener - filter - servlet 同时还存在着这样一种配置节context-param它用于向 ServletContext 提供键值对即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息那么 context-param 配置节是不是应该写在 listener 配置节前呢实际上 context-param 配置节可写在任意位置因此真正的加载顺序为context-param - listener - filter - servlet 对于某类配置节而言与它们出现的顺序是有关的。以 filter 为例web.xml 中当然可以定义多个 filter与 filter 相关的一个配置节是 filter-mapping这里一定要注意对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言filter-mapping 必须出现在 filter 之后否则当解析到 filter-mapping 时它所对应的 filter-name 还未定义。web 容器启动时初始化每个 filter 时是按照 filter 配置节出现的顺序来初始化的当请求资源匹配多个 filter-mapping 时filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。 servlet 同 filter 类似此处不再赘述。 由此可以看出web.xml 的加载顺序是ServletContext - context-param - listener - filter - servlet 而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。 四 web.xml文件详解 我将自己知道的web.xml的元素整理了一下 web.xml首先是肯定要包含它的schema. web-app xmlnshttp://java.sun.com/xml/ns/j2ee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd version2.4 /web-app 其它的元素都放在web-app/web-app之中。 discription/discription 是对站台的描述 display-name/display-name 定义站台的名称 distributable/ 是指定该站台是否可分布式处理 context-param/context-param 用来设定web站台的环境参数它包含两个子元素 param-name/param-name 用来指定参数的名称 param-value/param-value 用来设定参数值 比如 context-param param-namemy_param/param-name param-valuehello/param-value /context-param 在此设定的参数可以在servlet中用 getServletContext().getInitParameter(my_param) 来取得 filter/filter 是用来声明filter的相关设定它包含以下子元素 filter-name/filter-name 这当然就是指定filter的名字 filter-class/filter-class 这是用来定义filter的类的名称 init-param/init-param 用来定义参数它有两个子元素 param-name/param-name 用来指定参数的名称 param-value/param-value 用来设定参数值 比如 filter filter-namesetCharacterEncoding/filter-name filter-classcom.myTest.setCharacterEncodingFilter/filter-class init-param param-nameencoding/param-name param-valueGB2312/param-value /init-param /filter 与filter/filter同时使用的是filter-mapping/filter-mapping 用来定义filter所对应的URL它有两个子元素 filter-name/filter-name 指定filter的名字 url-pattern/url-pattern 指定filter所对应的URL 比如 filter-mapping filter-namesetCharacterEncoding/filter-name url-pattern/*/url-pattern /filter-mapping listener/listener 用来设定Listener接口它的主要子元素为 listener-class/listener-class 定义Listener的类名称 比如 listener listener-classcom.myTest.ContextListener/listener-class /listener servlet/servlet 用来声明一个servlet的数据主要有以下子元素 servlet-name/servlet-name 指定servlet的名称 servlet-class/servlet-class 指定servlet的类名称 jsp-file/jsp-file 指定web站台中的某个JSP网页的完整路径 init-param/init-param 用来定义参数和前面的init-param差不多 同样与servlet/servlet一起使用的是servlet-mapping/servlet-mapping 用来定义servlet所对应的URL包含两个子元素 servlet-name/servlet-name 指定servlet的名称 url-pattern/url-pattern 指定servlet所对应的URL 比如 servlet servlet-nameShoppingServlet/servlet-name servlet-classcom.myTest.ShoppingServlet/servlet-class /servlet servlet-mapping servlet-nameShoppingServlet/servlet-name url-pattern/shop/ShoppingServlet/url-pattern /servlet-mapping
welcome-file-list/welcom-file-list 用来定义首页的列单包含一个子元素welcome-file/welcome-file 指定首页的文件名称 比如 welcome-file-list welcome-fileindex.jsp/welcome-file welcome-fileindex.html/welcome-file /welcom-file-list error-page/error-page 用来处理错误代码或异常的页面有三个子元素 error-code/error-code 指定错误代码 exception-type/exception-type 指定一个Java异常类型 location/location 指定在web站台内的相关资源路径 比如 error-page error-code404/error-code location/error404.jsp/location /error-page error-page exception-typejava.lang.Exception/exception-type location/exception.jsp/location /error-page
五 相应元素配置 1、Web应用图标指出IDE和GUI工具用来表示Web应用的大图标和小图标 icon small-icon/images/app_small.gif/small-icon large-icon/images/app_large.gif/large-icon /icon 2、Web 应用名称提供GUI工具可能会用来标记这个特定的Web应用的一个名称 display-nameTomcat Example/display-name 3、Web 应用描述 给出于此相关的说明性文本 disciptionTomcat Example servlets and JSP pages./disciption 4、上下文参数声明应用范围内的初始化参数。 context-param param-nameContextParameter/para-name param-valuetest/param-value descriptionIt is a test parameter./description /context-param 在servlet里面可以通过getServletContext().getInitParameter(context/param)得到 5、过滤器配置将一个名字与一个实现javaxs.servlet.Filter接口的类相关联。 filter filter-namesetCharacterEncoding/filter-name filter-classcom.myTest.setCharacterEncodingFilter/filter-class init-param param-nameencoding/param-name param-valueGB2312/param-value /init-param /filter filter-mapping filter-namesetCharacterEncoding/filter-name url-pattern/*/url-pattern /filter-mapping 6、监听器配置 listener listerner-classlistener.SessionListener/listener-class /listener 7、Servlet配置 基本配置 servlet servlet-namesnoop/servlet-name servlet-classSnoopServlet/servlet-class /servlet servlet-mapping servlet-namesnoop/servlet-name url-pattern/snoop/url-pattern /servlet-mapping 高级配置 servlet servlet-namesnoop/servlet-name servlet-classSnoopServlet/servlet-class init-param param-namefoo/param-name param-valuebar/param-value /init-param run-as descriptionSecurity role for anonymous access/description role-nametomcat/role-name /run-as /servlet servlet-mapping servlet-namesnoop/servlet-name url-pattern/snoop/url-pattern /servlet-mapping 元素说明 servlet/servlet 用来声明一个servlet的数据主要有以下子元素 servlet-name/servlet-name 指定servlet的名称 servlet-class/servlet-class 指定servlet的类名称 jsp-file/jsp-file 指定web站台中的某个JSP网页的完整路径 init-param/init-param 用来定义参数可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数 load-on-startup/load-on-startup指定当Web应用启动时装载Servlet的次序。 当值为正数或零时Servlet容器先加载数值小的servlet再依次加载其他数值大的servlet. 当值为负或未定义Servlet容器将在Web客户首次访问这个servlet时加载它 servlet-mapping/servlet-mapping 用来定义servlet所对应的URL包含两个子元素 servlet-name/servlet-name 指定servlet的名称 url-pattern/url-pattern 指定servlet所对应的URL 8、会话超时配置单位为分钟 session-config session-timeout120/session-timeout /session-config 9、MIME类型配置 mime-mapping extensionhtm/extension mime-typetext/html/mime-type /mime-mapping 10、指定欢迎文件页配置 welcome-file-list welcome-fileindex.jsp/welcome-file welcome-fileindex.html/welcome-file welcome-fileindex.htm/welcome-file /welcome-file-list 11、配置错误页面 一、 通过错误码来配置error-page error-page error-code404/error-code location/NotFound.jsp/location /error-page 上面配置了当系统发生404错误时跳转到错误处理页面NotFound.jsp。 二、通过异常的类型配置error-page error-page exception-typejava.lang.NullException/exception-type location/error.jsp/location /error-page 上面配置了当系统发生java.lang.NullException即空指针异常时跳转到错误处理页面error.jsp 其他说明web.xml 文件中一般包括 servlet, spring, filter, listenr的配置。那么他们是按照一个什么顺序加载呢 加载顺序会影响对spring bean 的调用。 比如filter 需要用到 bean 但是加载顺序是 先加载filter 后加载spring则filter中初始化操作中的bean为null 首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关。 web.xml 中 listener 和 serverlet 的加载顺序为 先 listener 后serverlet 最终得出结果先 listener filter servlet spring 所以如果过滤器中要使用到 bean可以将spring 的加载 改成 Listener的方式 listener listener-class org.springframework.web.context.ContextLoaderListener /listener-class /listener 搞定