web.xml配置汇总(servlet2.3)
web.xml详细配置
一、核心过滤器的配置正如上面看到的,当配置Struts2的FilterDispatcher类时,可以指定一系列的初始化参数,为该Filter配置初始化参数时,其中有3个初始化参数有特殊意义:—config:该参数的值是一个以英文逗号(,)隔开的字符串,每个字符串都是一个XML配置文件的位置。
Struts 2框架将自动加载该属性指定的系列配置文件。
—actionPackages:该参数的值也是一个以英文逗号(,)隔开的字符串,每个字符串都是一个包空间,Struts 2框架将扫描这些包空间下的Action类。
—configProviders:如果用户需要实现自己的ConfigurationProvider类,用户可以提供一个或多个实现了ConfigurationProvider接口的类,然后将这些类的类名设置成该属性的值,多个类名之间以英文逗号(,)隔开。
二、常量配置其中<param-name>子元素指定了常量name,而<param-value>子元素指定了常量value。
在web.xml文件中配置了该Filter,还需要配置该Filter拦截的URL。
通常,我们让该Filter拦截所有的用户请求,因此使用通配符来配置该Filter拦截的URL。
配置了Struts 2的核心FilterDispatcher后,基本完成了Struts 2在web.xml文件中的配置。
如果Web应用使用了Servlet 2.3以前的规范,因为Web应用不会自动加载Struts 2框架的标签文件,因此必须在web.xml文件中配置加载Struts 2标签库。
配置加载Struts 2标签库的配置片段如下:在上面配置片段中,指定了Struts 2标签库配置文件物理位置:/WEB-INF/struts- tags.tld,因此我们必须手动复制Struts 2的标签库定义文件,将该文件放置在Web应用的WEB-INF 路径下。
servlet在web.xml中配置方法
一、介绍servlet在web.xml中的配置方法Servlet是Java编写的服务器端程序,它可以响应客户端的请求并生成动态内容。
在Java Web开发中,通常会使用Servlet来处理用户的请求并生成响应。
而在配置Servlet时,web.xml文件是一个重要的配置文件,其中包含了Servlet的配置信息。
本文将介绍Servlet在web.xml中的配置方法。
二、创建Servlet类在配置Servlet之前,首先需要创建一个Servlet类。
可以通过继承javax.servlet.网络协议.HttpServlet类来创建Servlet类,该类必须实现doGet()或doPost()方法来处理请求。
下面是一个简单的Servlet 类的代码:```javaimport javax.servlet.网络协议.HttpServlet;import javax.servlet.网络协议.HttpServletRequest;import javax.servlet.网络协议.HttpServletResponse;public class HelloWorldServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) {//处理GET请求的逻辑}protected void doPost(HttpServletRequest request, HttpServletResponse response) {//处理POST请求的逻辑}}```三、在web.xml中配置Servlet在web.xml文件中使用<servlet>和<servlet-mapping>元素来配置Servlet。
首先在<servlet>元素中指定Servlet的名称和Servlet类的完整路径,例如:```xml<servlet><servlet-name>HelloWorldServlet</servlet-name><servlet-class.example.HelloWorldServlet</servlet-class></servlet>```其中,<servlet-name>用于标识Servlet的名称,<servlet-class>指定了Servlet类的完整路径。
关于web.xml配置文件
关于web.xml以下是web.xml中常见元素的配置(1).Servlet的配置信息<servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.etc.servlet.LoginServlet</servlet-class><init-param><param-name>validate</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>Servlet的主要配置信息:①<servlet-name>:指定Servlet实例的名字,建议类名;②<servlet-class>:指定Servlet类的完整名字,包括包名和类名;③<init-param>:为Servlet指定初始化参数,使用ServletConfig接口中的getInitParameter方法获取;④<load-on-startup>:该选项为非负整数,表示应用加载时该Servlet被初始化,数字表示初始化的顺序⑤<url-pattern>:配置该Servlet的访问路径,必须以/开头,如果使用通配符(如*.do),就不需要/开头(2).Filter的配置信息<filter><filter-name>LoginFilter</filter-name><filter-class>com.etc.filter.LoginFilter</filter-class><init-param><param-name>startTime</param-name><param-value>4</param-value></init-param></filter><filter-mapping><filter-name>LoginFilter</filter-name><url-pattern>*.jsp</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORW ARD</dispatcher><dispatcher>INCLUDE</dispatcher><dispatcher>REQUEST</dispatcher></filter-mapping>Filter的主要配置信息:①<Filter-name>:指定Filter实例的名字,建议类名;②<Filter-class>:指定Filter类的完整名字,包括包名和类名;③<init-param>:为Filter指定初始化参数,使用FilterConfig接口中的getInitParameter方法获取;④<url-pattern>:配置该过滤器的url⑤<dispatcher>:配置该过滤器的分发方式,默认是REQUEST(3)上下文参数配置信息<context-param><param-name>path</param-name><param-value>/WEB-INF/tld</param-value></context-param>上下文参数被封装在ServletContext对象中,可以在整个应用中使用,通过getInitParameter方法获取;(4)会话超时时间配置信息<session-config><session-timeout>40</session-timeout></session-config>容器默认的会话超时时间是30分钟,可以通过<session-config>配置该应用的会话超时时间,单位为分钟.(5)欢迎页面列表配置信息<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>默认的欢迎页面是index,jsp或则index.html,可以通过<welcome-file-list>指定多个欢迎页面,容器将按照配置顺序查找.(6)错误页面配置信息<error-page><error-code>404</error-code><location>/error/404.html</location></error-page><error-page><exception-type>com.etc.exception.RegisterExcetpion</excep tion-type><location>/register.jsp</location></error-page>通过<error-page>可以指定应用中发生某种响应错误.如404错误跳转的页面.也可以配置某种异常,异常没有捕获时跳转的页面.(7)Listener配置信息<listener><listener-class>com.etc.listener.CounterListener</listener-clas s></listener>(8)JSP属性配置信息<jsp-config><jsp-property-group><url-pattern>/admin</url-pattern><el-ignored>false</el-ignored><scripting-invalid>false</scripting-invalid></jsp-property-group><jsp-property-group><url-pattern>/admin</url-pattern><page-encoding>gb2312</page-encoding></jsp-property-group></jsp-config>对应用中的某些特定url的JSP稳健配置属性,主要配置信息为:①<url-pattern>:配置该JSP特定的url②<el-ignored>:指定是否忽略EL语句,如果值为true则忽略,将EL解析成文本输出③<scripting-invalid>:指定脚本元素是否有效,如果为true,则无效,包含脚本元素的JSP将出现翻译错误④<page-encoding>:指定JSp的响应编码方式。
web.xml文件头声明各个版本参考
web.xml⽂件头声明各个版本参考1. Servlet 3.1Java EE 7 XML schema, namespace is<web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_1.xsd"version="3.1"></web-app>2. Servlet3.0Java EE 6 XML schema, namespace is<web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"version="3.0"></web-app>3. Servlet 2.5Java EE 5 XML schema, namespace is<web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"version="2.5"></web-app>4. Servlet 2.4J2EE 1.4 XML schema, namespace is<web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><display-name>Servlet 2.4 Web Application</display-name></web-app>5. Servlet 2.3J2EE 1.3 DTDs schema. This web.xml file is too old, highly recommend you to upgrade it.<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Servlet 2.3 Web Application</display-name></web-app>。
Servlet2.4中web.xml配置及说明
Servlet2.4中web.xml配置及说明<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><!-- icon元素指出IDE和GUI工具用来表示Web应用的一个和两个图像文件的位置--><icon><small-icon>/images/small.gif</small-icon><!-- 16*16 --><large-icon>/images/large.jpg</large-icon><!-- 32*32 --></icon><!-- display-name元素提供GUI工具可能会用来标记这个特定的Web应用的一个名称--><display-name>The applicaitonname</display-name><!-- description元素给出与此有关的说明性文本--> <description>A longer description of the application</description><!-- 用于告知Web容器: 应用设计为在分布式Web容器中运行. --><distributable /><!-- context-param元素声明应用范围内的所有组件(servlet和JSP页面)都可用的上下文参数--><context-param><!-- 参数名称--><param-name>Support</param-name><!-- 参数值--><param-value>xihaikun@</param-value&g t;</context-param><!-- 注册一个过滤器组件--><filter><!-- 描述--><description></description><!-- 名称--><display-name></display-name><icon></icon><!-- 过滤器名称--><filter-name>filtername</filter-name><!-- 具体类--><filter-class>com.ebuilds.Filter</filter-class> <!-- 初始化参数--><init-param><param-name></param-name><param-value></param-value></init-param></filter><!-- 将过滤器映像至一个URI模式, 或者映像至一个Servlet. --><filter-mapping><filter-name>filtername</filter-name><url-pattern></url-pattern></filter-mapping><filter-mapping><filter-name>filtername</filter-name><servlet-name>servletName</servlet-name> </filter-mapping><!-- 注册一个监听器--><listener><listener-class>com.ebuilds.ajax.TaskListener</list ener-class></listener><!-- 定义了Servlet或JSP页面的细节. 最常见的情况是, 此元素仅把一个Servlet或JSP页面与一个短名相关联, 并指定初始化参数: --><servlet><!-- servlet-name元素用来定义servlet的名称,该名称在整个应用中必须是惟一的--><servlet-name>TimeServlet</servlet-name><!-- 用来指定servlet的完全限定的名称--><servlet-class>com.ebuilds.ajax.TimeServlet</servl et-class><!-- 元素用来指定应用中JSP文件的完整路径。
web.xml配置详细说明教程
Web.xml常用元素<web-app><display-name></d isplay-name>定义了WEB应用的名字<description></description>声明WEB应用的描述信息<context-par am></context-param>context-param元素声明应用范围内的初始化参数。
<filter></filter>过滤器元素将一个名字与一个实现javax.servlet.Fi lter接口的类相关联。
<filte r-mapping></filter-m apping>一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。
<listener></li stener>servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或serv let环境时得到通知。
Listen er元素指出事件监听程序类。
<ser vlet></servlet>在向se rvlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。
Servlet元素就是用来完成此项任务的。
<servlet-ma pping></servlet-mapp ing>服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servle t/ServletName。
但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。
在更改缺省URL时,使用servlet-mappi ng元素。
web.xml配置详解
web.xml配置详解1、框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name)2、在web.xml配置监听器ContextLoaderListener(listener-class)ContextLoaderListener的作⽤就是启动Web容器时,⾃动装配ApplicationContext的配置信息。
因为它实现了ServletContextListener这个接⼝,在web.xml配置这个监听器,启动容器时,就会默认执⾏它实现的⽅法。
3、部署applicationContext的xml⽂件:contextConfigLocation(context-param下的param-name)4、DispatcherServlet是前置控制器,配置在web.xml⽂件中的。
拦截匹配的请求,Servlet拦截匹配规则要⾃已定义,把拦截下来的请求,依据某某规则分发到⽬标Controller(我们写的Action)来处理。
DispatcherServlet(servlet-name、servlet-class、init-param、param-name(contextConfigLocation)、param-value)在DispatcherServlet的初始化过程中,框架会在web应⽤的 WEB-INF⽂件夹下寻找名为[servlet-name]-servlet.xml 的配置⽂件,⽣成⽂件中定义的bean<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd"><!-- 在Spring框架中是如何解决从页⾯传来的字符串的编码问题的呢?下⾯我们来看看Spring框架给我们提供过滤器CharacterEncodingFilter这个过滤器就是针对于每次浏览器请求进⾏过滤的,然后再其之上添加了⽗类没有的功能即处理字符编码。
web.xml配置汇总(servlet2.3)
Web.xml配置详解(版本:2.3)部署描述符实际上是一个XML文件,包含了很多描述servlet/JSP应用的各个方面的元素,如servlet注册、servlet映射以及监听器注册。
部署描述符从下面的XML头开始:<?xml version="1.0" encoding="ISO-8859-1"?>这个头指定了XML的版本号以及所使用的编码。
头的下面是DOCTYPE声明:<!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd">这段代码指定文件类型定义(DTD),可以通过它检查XML文档的有效性。
下面显示的<!DOCTYPE>元素有几个特性,这些特性告诉我们关于DTD的信息:→web-app定义该文档(部署描述符,不是DTD文件)的根元素→PUBLIC意味着DTD文件可以被公开使用→"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"意味着DTD由Sun Microsystems, Inc.维护。
该信息也表示它描述的文档类型是DTD Web Application 2.3,而且DTD是用英文书写的。
→URL"/dtd/web-app_2_3.dtd"表示D文件的位置。
注意:在部署描述符中, <!--…-->用于注释。
部署描述符的根元素是web-app。
DTD文件规定,web-app元素的子元素的语法如下:<!ELEMENT web-app (icon?, display-name?, description?,distributable?, context-param*, filter*, filter-mapping*,listener*, servlet*, servlet-mapping*, session-config?,mime-mapping*, welcome-file-list?,error-page*, taglib*, resource-env-ref*, resource-ref*,security-constraint*, login-config?, security-role*,env-entry*,ejb-ref*, ejb-local-ref*)>正如我们所看到的,这个元素含有23个子元素,而且子元素都是可选的。
web.xmlservlet、servlet-mapping配置
web.xmlservlet、servlet-mapping配置Servlet 常称为服务器端⼩程序,即运⾏在服务器端的程序,⽤于处理及响应客户的请求。
Servlet类是个特殊的java类,继承于HttpServlet。
---------------------------------------------------------------⽅法客户端通常只有GET和POST两种请求⽅式,Servlet为了响应则两种请求,必须重写doGet()和doPost()⽅法。
⼤部分时候,Servlet对于所有的请求响应都是完全⼀样的,此时只需要重写service()⽅法即可响应客户端的所有请求。
另外,HttpServlet还有两个⽅法:(1). init(ServletConfig config):创建Servlet实例时,调⽤该⽅法的初始化Servlet资源。
(2). destroy():销毁Servlet实例时,⾃动调⽤该⽅法的回收资源。
通常⽆需重写init()和destroy()两个⽅法,除⾮需要在初始化Servlet时,完成某些资源初始化的⽅法,才考虑重写init()⽅法,如果重写了init()⽅法,应在重写该⽅法的第⼀⾏调⽤super.init(config),该⽅法将调⽤HttpServlet的init()⽅法。
如果需要在销毁Servlet之前,先完成某些资源的回收,⽐如关闭数据库连接,才需要重写destory⽅法()。
---------------------------------------------------------------Servlet创建时机(1). 客户端第⼀次请求某个Servlet时,系统创建该Servlet的实例,⼤部分Servlet都是这种Servlet。
(2). Web应⽤启动时⽴即创建Servlet实例,即load-on-start Servlet。
---------------------------------------------------------------Servlet的⽣命周期(1). 创建Servlet实例。
Servlet开发技术,创建,以及Servlet的配置,web.xml的配置
Servlet开发技术,创建,以及Servlet的配置,web.xml的配置直接上图,不废话!!!第⼀:⾸先在Eclipse的包资源管理器中,单机⿏标右键,在弹出的快捷键菜单中选择“新建”/Servlet命令,在弹出的对话框中输⼊新建的Servlet所在的包和类名,然后单击下⼀步,我选择默认,Next依旧默认,Next注意事项,在创建web的⼯程的时候需要注意的是如下图,选择上web.xml这个按钮,因为Servlet需要配置⼀下web.xml这个⽂件,web.xml在web-inf这个⽂件下⾯上图第⼆个箭头前⾯有个⽅括号,勾选上就可以⾃动创建好web.xml这个⽂件了。
1package com.ningmeng;23import java.io.IOException;4import java.io.PrintWriter;56import javax.servlet.ServletException;7import javax.servlet.annotation.WebServlet;8import javax.servlet.http.HttpServlet;9import javax.servlet.http.HttpServletRequest;10import javax.servlet.http.HttpServletResponse;1112/**13 * Servlet implementation class FirstServlet14*/15 @WebServlet("/FirstServlet")16public class FirstServlet extends HttpServlet {17private static final long serialVersionUID = 1L;1819/**20 * @see HttpServlet#HttpServlet()21*/22public FirstServlet() {23super();24// TODO Auto-generated constructor stub25 }2627/**28 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)29*/30protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {31// TODO Auto-generated method stub32 response.setContentType("text/html");33 response.setCharacterEncoding("GBK");34 PrintWriter out=response.getWriter();35 out.print("<HTML>");36 out.println("<HEAD><TITLE>Servlet实例</TITLE></HEAD>");37 out.println("<BODY>");38 out.println("servlet实例");39 out.println(this.getClass());40 out.println("</BODY>");41 out.println("</HTML>");42 out.flush();43 out.close();44 response.getWriter().append("Served at: ").append(request.getContextPath());45 }4647/**48 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)49*/50protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {51// TODO Auto-generated method stub52 doGet(request, response);53 }5455 }1<?xml version="1.0" encoding="UTF-8"?>2<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" 3<display-name>web02</display-name>4<welcome-file-list>5<welcome-file>index.html</welcome-file>6<welcome-file>index.htm</welcome-file>7<welcome-file>index.jsp</welcome-file>8<welcome-file>default.html</welcome-file>9<welcome-file>default.htm</welcome-file>10<welcome-file>default.jsp</welcome-file>11</welcome-file-list>12<servlet>13<!-- 声明Servlet对象 -->14<servlet-name>FirstServlet</servlet-name>15<!-- 上⾯⼀句指定Servlet对象的名称 -->16<servlet-class>com.ningmeng.FirstServlet</servlet-class>17<!-- 上⾯⼀句指定Servlet对象的完整位置,包含包名和类名 -->18</servlet>19<servlet-mapping>20<!-- 映射Servlet -->21<servlet-name>FirstServlet</servlet-name>22<!--<servlet-name>与上⾯<Servlet>标签的<servlet-name>元素相对应,不可以随便起名 --> 23<url-pattern>/FirsetServlet</url-pattern>24<!-- 上⾯⼀句话⽤于映射访问URL -->25</servlet-mapping>26</web-app>运⾏效果如下图所⽰。
Servlet中Web.xml文件的配置
Servlet中Web.xml⽂件的配置1 定义头和根元素部署描述符⽂件就像所有XML⽂件⼀样,必须以⼀个XML头开始。
这个头声明可以使⽤的XML版本并给出⽂件的字符编码。
DOCYTPE声明必须⽴即出现在此头之后。
这个声明告诉服务器适⽤的servlet规范的版本(如2.2或2.3)并指定管理此⽂件其余部分内容的语法的DTD(Document Type Definition,⽂档类型定义)。
所有部署描述符⽂件的顶层(根)元素为web-app。
请注意,XML元素不像HTML,他们是⼤⼩写敏感的。
因此,web-App和WEB-APP都是不合法的,web-app必须⽤⼩写。
2 部署描述符⽂件内的元素次序XML 元素不仅是⼤⼩写敏感的,⽽且它们还对出现在其他元素中的次序敏感。
例如,XML头必须是⽂件中的第⼀项,DOCTYPE声明必须是第⼆项,⽽web- app元素必须是第三项。
在web-app元素内,元素的次序也很重要。
服务器不⼀定强制要求这种次序,但它们允许(实际上有些服务器就是这样做的)完全拒绝执⾏含有次序不正确的元素的Web应⽤。
这表⽰使⽤⾮标准元素次序的web.xml⽂件是不可移植的。
下⾯的列表给出了所有可直接出现在web-app元素内的合法元素所必需的次序。
例如,此列表说明servlet元素必须出现在所有servlet-mapping元素之前。
请注意,所有这些元素都是可选的。
因此,可以省略掉某⼀元素,但不能把它放于不正确的位置。
l icon icon元素指出IDE和GUI⼯具⽤来表⽰Web应⽤的⼀个和两个图像⽂件的位置。
l display-name display-name元素提供GUI⼯具可能会⽤来标记这个特定的Web应⽤的⼀个名称。
l description description元素给出与此有关的说明性⽂本。
l context-param context-param元素声明应⽤范围内的初始化参数。
Servlet的两种配置(注解与web.xml)
Servlet的两种配置(注解与web.xml)servlet的配置⼀、web.xml中Servlet的注解<servlet><!-- servlet的内部名称,⾃定义 --><servlet-name>类名</servlet-name><!-- servlet的类全名:包名+类名 --><servlet-class>com.uplooking.controller.DemoAction</servlet-class><load-on-startup>1</load-on-startup></servlet><!-- servlet的映射配置 --><servlet-mapping><!-- servlet的内部名称,⼀定要和上⾯的内部名称保持⼀致 --><servlet-name>类名</servlet-name><!-- servlet的映射路径(访问serclet的名称)--><url-pattern>/DemoAction</url-pattern></servlet-mapping>举例:<!-- 通过Web.xml对servlet进⾏配置--><!--(1)servlet的声明实例--><!--servlet的注册声明:向Web服务器注册⼀个Servlet实例对象--><servlet><!-- 指明servlet实例的名字,具有唯⼀性--><servlet-name>Servlet</servlet-name><!-- 指明servlet的src⽬录下的后台实现类的包路径--><servlet-class>erLogingServlet</servlet-class></servlet><!--(2)servlet的映射配置--><!--servlet的映射配置该servlet在服务器上响应处理哪个路径发过来的请求--><servlet-mapping><!--servlet的名字⼀定是在Web服务器中进⾏注册声明的--><servlet-name>Servlet</servlet-name><!--servlet的响应路径--><url-pattern>/UserLoginServlet</url-pattern><!--/是Web服务器的根⽬录--></servlet-mapping><!-- 指定程序启动时的默认主页⾯--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>servlet的访问:1、⾸先,从浏览器中发送请求,是从当前⼯程中的路径与servlet-mapping标签中的url-pattern的标签值进⾏匹配。
javaweb.xml配置详解
javaweb.xml配置详解1、启动⼀个WEB项⽬的时候,WEB容器会去读取它的配置⽂件web.xml,读取<listener>和<context-param>两个结点。
2、紧急着,容创建⼀个ServletContext(servlet上下⽂),这个web项⽬的所有部分都将共享这个上下⽂。
3、容器将<context-param>转换为键值对,并交给servletContext。
4、容器创建<listener>中的类实例,创建监听器。
⼆ Load-on-startupLoad-on-startup 元素在web应⽤启动的时候指定了servlet被加载的顺序,它的值必须是⼀个整数。
如果它的值是⼀个负整数或是这个元素不存在,那么容器会在该servlet被调⽤的时候,加载这个servlet 。
如果值是正整数或零,容器在配置的时候就加载并初始化这个servlet,容器必须保证值⼩的先被加载。
如果值相等,容器可以⾃动选择先加载谁。
在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:标记容器是否在启动的时候就加载这个servlet。
当值为0或者⼤于0时,表⽰容器在应⽤启动时就加载这个servlet;当是⼀个负数时或者没有指定时,则指⽰容器在该servlet被选择时才加载。
正数的值越⼩,启动该servlet的优先级越⾼。
三加载顺序⾸先可以肯定的是,加载顺序与它们在 web.xml ⽂件中的先后顺序⽆关。
即不会因为 filter 写在 listener 的前⾯⽽会先加载 filter。
最终得出的结论是:ServletContext -> listener -> filter -> servlet同时还存在着这样⼀种配置节:context-param,它⽤于向 ServletContext 提供键值对,即应⽤程序上下⽂信息。
web.xml常用配置详解
web.xml常⽤配置详解web.xml常⽤配置详解context-param指定 ServletContext(上下⽂) 配置⽂件路径,基本配置⼀般是Spring配置⽂件,或者是spring-security的配置⽂件。
注意springmvc的配置⽂件是在servlet那⾥加载,mybatis的配置⽂件是在spring的主配置⽂件⾥注册sqlSessionFactory的时候加载的。
<context-param><param-name>contextConfigLocation</param-name><!--<param-name>指定上下⽂名称,⼀般为:名称+ConfigLocation后缀,如:contextConfigLocation,不可随意定义,否则指定的配置⽂件⽆法加载成功,实际上它是org.springframework.web.servlet.FrameworkServlet中的⼀个成员变量 --><param-value>classpath:spring-security.xml</param-value><!--<param-value>指定上下⽂路径,如:classpath:applicationContext.xml--></context-param>listener<listener-class>基本配置包含ContextLoaderListener ,即spring监听器<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>servlet<servlet-name>Servlet名称,可以⾃定义,但是需要遵守规则:⽐如指定为Spring,那么最好在classpath路径中配置Spring-servlet.xml,否则需要在⼦元素<init-param>特别指出<servlet-class>因为要配置MVC,所以指定为:org.springframework.web.servlet.DispatcherServlet<init-param>[定义容器启动时初始化的配置⽂件,作⽤主要是指定⾃定义配置⽂件的路径,貌似可以指定多个]<param-name>[contextConfigLocation]<param-value>[可以⾃定义,如:classpath:spring-servlet.xml,如果不定义,那么默认为:classpath:${servlet-name}-servlet.xml]<load-on-startup>[定义为1,表⽰启动等级]<!-- 配置 spring mvc 的核⼼控制器 --><servlet><servlet-name>springmvcDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置初始化参数,⽤于读取 springmvc 的配置⽂件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:dispatcher.xml</param-value></init-param><!-- 配置 servlet 的对象的创建时间点:应⽤加载时创建。
web.xml配置文件超详细说明!!!
web.xml配置⽂件超详细说明!!!⼀、web.xml是什么?⾸先 web.xml 是java web 项⽬的⼀个重要的配置⽂件,但是web.xml⽂件并不是Java web⼯程必须的。
web.xml⽂件是⽤来配置:欢迎页、servlet、filter等的。
当你的web⼯程没⽤到这些时,你可以不⽤web.xml⽂件来配置你的web⼯程。
所在位置项⽬名/web/WEB-INFO/web.xml,如下图所⽰web.xml能做的事情:其实,web.xml的模式(Schema)⽂件中定义了多少种标签元素,web.xml中就可以出现它的模式⽂件所定义的标签元素,它就能拥有定义出来的那些功能。
web.xml的模式⽂件是由Sun公司定义的,每个web.xml⽂件的根元素<web-app>中,都必须标明这个web.xml使⽤的是哪个模式⽂件。
如:web.xml 配置⽂件具体的内容⼆、Web.xml详解:1.web.xml加载过程(步骤)⾸先简单讲⼀下,web.xml的加载过程。
当启动⼀个WEB项⽬时,容器包括(JBoss、Tomcat等)⾸先会读取项⽬web.xml配置⽂件⾥的配置,当这⼀步骤没有出错并且完成之后,项⽬才能正常地被启动起来。
1. 启动WEB项⽬的时候,容器⾸先会去它的配置⽂件web.xml读取两个节点: <listener></listener>和<context-param></context-param>。
2. 紧接着,容器创建⼀个ServletContext(application),这个WEB项⽬所有部分都将共享这个上下⽂。
3. 容器以<context-param></context-param>的name作为键,value作为值,将其转化为键值对,存⼊ServletContext。
4. 容器创建<listener></listener>中的类实例,根据配置的class类路径<listener-class>来创建监听,在监听中会有contextInitialized(ServletContextEvent args)初始化⽅法,启动Web应⽤时,系统调⽤Listener的该⽅法,在这个⽅法中获得:[html]1. <span style="font-family:Times New Roman;">ServletContextapplication=ServletContextEvent.getServletContext();</span>context-param的值就是application.getInitParameter("context-param的键");得到这个context-param的值之后,你就可以做⼀些操作了。
servlet规范2.3
一旦servlet实例的destroy方法被调用,引擎不在发送任何请求给这个实例。如果引擎再次使用这个servlet就必须再建一个这个servlet的实例。
在destroy方法执行完成后,引擎将释放这个servlet实例,于是就符合垃圾回收机制的条件了。
2.1.3
HttpServlet接口定义了getLastModified方法
2.2 实例数
2.2.1
在分布式环境中servlet引擎为每个servlet只能声明一个实例,当一个servlet实现了SingleThreadModel接口时,servlet引擎可以声明多个实例去处理请求,servlet在应用服务的部署描述中定义发布.
3.1 介绍ServletContext接口
ServletContext接口定义了servlet运行环境的信息。引擎提供商有义务在servlet引擎中提供一个实现了ServletContext接口的对象。通过这个对象servlet能够获得log事件,资源的URL,设置或存储servlet之间通信的变量。ServletContext在web服务中确定了一个所有请求开始的路径,是ServletContext的上下文路径。
1.3 例子
一个典型的事件执行的顺序是:
1) 客户端向web服务器发起一个HTTP请求
2) HTTP请求被web服务器接受,并移交给servlet引擎,servlet引擎可以在主机的同一个进程、不同的进程或其他的web服务主机的进程中启动。
3) servlet引擎根据servlet的配置档确定调用的servlet,并把request对象、response对象传给它。
Servlet2.4中web.xml配置及说明
Servlet2.4中web.xml配置及说明<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><!-- icon元素指出IDE和GUI工具用来表示Web应用的一个和两个图像文件的位置--><icon><small-icon>/images/small.gif</small-icon><!-- 16*16 --><large-icon>/images/large.jpg</large-icon><!-- 32*32 --></icon><!-- display-name元素提供GUI工具可能会用来标记这个特定的Web应用的一个名称--><display-name>The applicaitonname</display-name><!-- description元素给出与此有关的说明性文本--> <description>A longer description of the application</description><!-- 用于告知Web容器: 应用设计为在分布式Web容器中运行. --><distributable /><!-- context-param元素声明应用范围内的所有组件(servlet和JSP页面)都可用的上下文参数--><context-param><!-- 参数名称--><param-name>Support</param-name><!-- 参数值--><param-value>xihaikun@</param-value&g t;</context-param><!-- 注册一个过滤器组件--><filter><!-- 描述--><description></description><!-- 名称--><display-name></display-name><icon></icon><!-- 过滤器名称--><filter-name>filtername</filter-name><!-- 具体类--><filter-class>com.ebuilds.Filter</filter-class> <!-- 初始化参数--><init-param><param-name></param-name><param-value></param-value></init-param></filter><!-- 将过滤器映像至一个URI模式, 或者映像至一个Servlet. --><filter-mapping><filter-name>filtername</filter-name><url-pattern></url-pattern></filter-mapping><filter-mapping><filter-name>filtername</filter-name><servlet-name>servletName</servlet-name> </filter-mapping><!-- 注册一个监听器--><listener><listener-class>com.ebuilds.ajax.TaskListener</list ener-class></listener><!-- 定义了Servlet或JSP页面的细节. 最常见的情况是, 此元素仅把一个Servlet或JSP页面与一个短名相关联, 并指定初始化参数: --><servlet><!-- servlet-name元素用来定义servlet的名称,该名称在整个应用中必须是惟一的--><servlet-name>TimeServlet</servlet-name><!-- 用来指定servlet的完全限定的名称--><servlet-class>com.ebuilds.ajax.TimeServlet</servl et-class><!-- 元素用来指定应用中JSP文件的完整路径。
web.xml中servlet配置及其含义
web.xml中servlet配置及其含义前⾔:每个javaEE⼯程中都有web.xml⽂件,那么它的作⽤是什么呢?它是每个web.xml⼯程都必须的吗?⼀个web中可以没有web.xml⽂件,也就是说,web.xml⽂件并不是web⼯程必须的。
web.xml⽂件是⽤来初始化配置信息:⽐如Welcome页⾯、servlet、servlet-mapping、filter、listener、启动加载级别等。
当你的web⼯程没⽤到这些时,你可以不⽤web.xml⽂件来配置你的Application。
每个xml⽂件都有定义它书写规则的Schema⽂件,也就是说javaEE的定义web.xml所对应的xml Schema⽂件中定义了多少种标签元素,web.xml中就可以出现它所定义的标签元素,也就具备哪些特定的功能。
web.xml的模式⽂件是由Sun 公司定义的,每个web.xml⽂件的根元素为<web-app>中,必须标明这个web.xml使⽤的是哪个模式⽂件。
如:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"></web-app>web.xml的模式⽂件中定义的标签并不是定死的,模式⽂件也是可以改变的,⼀般来说,随着web.mxl模式⽂件的版本升级,⾥⾯定义的功能会越来越复杂,标签元素的种类肯定也会越来越多,但有些不是很常⽤的,我们只需记住⼀些常⽤的并知道怎么配置就可以了。
xml配置文件
<scripting-invalid>false</scripting-invalid> <!-是否支持脚本-->
<page-encoding>gb2312</pageencoding> <!-设置编码-->
<url-pattern>/*</url-pattern>
</filter-mapping>
监听器配置
注册一个监听程序用<listener>元素,在listener元素中,只有一个<listener-class>子元素,指明监听器对应的类。
<!--监听器配置-->
</jsp-config>
Welcome文件清单
指出默认的欢迎界面,按照顺序依次查找,直到找到对应的页面为止。
<!--welcome欢迎清单-->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>
<error-page>
<exception-type>exception.BookNotFound</exception-type>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
param-name 子元素包含有参数名,而 param-value 子元素包含的是参数值。作为选择,可 用 description 子元素来描述参数。 下面是一个含有 context-param 元素的有效部署描述符: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"> <web-app> <context-param> <param-name>jdbcDriver</param-name> <param-value>com.mysql.jdbc.Driver</param-value> </context-param> </web-app> 6. filter 元素 filter 元素用于指定 Web 容器中的过滤器。 在请求和响应对象被 servlet 处理之前或之后, 可以使用过滤器对这两个对象进行操作。 利用下一节介绍 的 filter-mapping 元素, 过滤器 被映射到一个 servlet 或一个 URL 模式。这个过滤器的 filter 元素和 filter-mapping 元 素必须具有相同的名称。 <!ELEMENT filter (icon?, filter-name, display-name?, description?, filter-class, init-param*)> <!ELEMENT filter-name (#PCDATA)> <!ELEMENT filter-class (#PCDATA)>
<filter-name>Encryption Filter</filter-name> <servlet-name>EncryptionFilteredServlet</servlet-name> </filter-mapping> </web-app> 8. listener 元素 listener 元素用来注册一个监听器类,可以在 Web 应用中包含该类。使用 listener 元素, 可以收到事件什么时候发生以及用什么作为响应的通知。 <!ELEMENT listener (listener-class)> <!ELEMENT listener-class (#PCDATA)> 下面是一个含有 listener 元素的有效部署描述符: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"> <web-app> <listener> <listener-class>MyAppListener</listener-class> </listener> </web-app> 9. servlet 元素 servlet 元素用来声明一个 servlet。 <!ELEMENT servlet (icon?, servlet-name, display-name?, description?, (servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)> <!ELEMENT servlet-name (#PCDATA)> <!ELEMENT servlet-class (#PCDATA)> <!ELEMENT jsp-file (#PCDATA)> <!ELEMENT init-param (param-name, param-value, description?)> <!ELEMENT load-on-startup (#PCDATA)> <!ELEMENT run-as (description?, role-name)> <!ELEMENT role-name (#PCDATA)> icon、display-name 和 description 元素的用法和上一节介绍的用法相同。init-param 元 素与 context-param 元素具有相同的元素描述符。可以使用 init-param 子元素将初始化参 数名和参数值传递给 servlet。 (1) servlet-name、servlet-class 和 jsp-file 元素
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"> <web-app> <distributable/> </web-app> 5. context-param 元素 context-param 元素含有一对参数名和参数值,用作应用的 servlet 上下文初始化参数。参 数名在整个 Web 应用中必须是惟一的。 <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT context-param (param-name, param-value, description?)> param-name (#PCDATA)> param-value (#PCDATA)> description (#PCDATA)>
这个头指定了 XML 的版本号以及所使用的编码。头的下面是 DOCTYPE 声明:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd">
Web.xml 配置详解 (版本 :2.3)
部署描述符实际上是一个 XML 文件,包含了很多描述 servlet/JSP 应用的各个方面的元素, 如 servlet 注册、servlet 映射以及监听器注册。部署描述符从下面的 XML 头开始:
<?xml version="1.0" encoding="ISO-8859-1"?>
这段代码指定文件类型定义(DTD),可以通过它检查 XML 文档的有效性。下面显示的 <!DOCTYPE>元素有几个特性,这些特性告诉我们关于 DTD 的信息: web-app 定义该文档(部署描述符,不是 DTD 文件)的根元素 PUBLIC 意味着 DTD 文件可以被公开使用 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"意味着 DTD 由 Sun Microsystems, Inc.维护。 该信息也表示它描述的文档类型是 DTD Web Application 2.3,而且 DTD 是用英文书写的。 URL"/dtd/web-app_2_3.dtd"表示 D 文件的位置。 注意: 在部署描述符中, <!--„-->用于注释。 部署描述符的根元素是 web-app。DTD 文件规定,web-app 元素的子元素的语法如下: <!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*,env-entry*, ejb-ref*, ejb-local-ref*)> 正如我们所看到的,这个元素含有 23 个子元素,而且子元素都是可选的。问号(?)表示子 元素是可选的, 而且只能出现一次。 星号(*)表示子元素可在部署描述符中出现零次或多次。 有些子元素还可以有它们自己的子元素。 web.xml 文件中 web-app 元素声明的是下面每个子元素的声明。 下面的章节讲述部署描述符 中可能包含的所有子元素。 注意: 在 Servlet 2.3 中,子元素必须按照 DTD 文件语法描述中指定的顺序出现。比如,如果部署 描述符中的 web-app 元素有 servlet 和 servlet- mapping 两个子元素,则 servlet 子元素 必须出现在 servlet-mapping 子元素之前。在 Servlet 2.4 中,顺序并不重要。
下面对 web.xml 文件各元素进行详解 1. icon 元素 icon 元素用来指定 GIF 格式或 JPEG 格式的小图标(16×16)或大图标(32×32)的文件名。 <!ELEMENT icon (small-icon?, large-icon?)> <!ELEMENT small-icon (#PCDATA)> <!ELEMENT large-icon (#PCDATA)> icon 元素包括两个可选的子元素:small-icon 子元素和 large-icon 子元素。文件名是 Web 应用归档文件(WAR)的根的相对路径。 部署描述符并没有使用 icon 元素。但是,如果使用 XML 工具编辑部署描述符,XML 编辑器 可以使用 icon 元素。 2. display-name 元素 如果使用工具编辑部署描述符,display-name 元素包含的就是 XML 编辑器显示的名称。 <!ENT display-name (#PCDATA)> 下面是一个含有 display-name 元素的部署描述符: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"> <web-app> <display-name>Online Store Application</display-name> </web-app> 3. description 元素 可以使用 description 元素来提供有关部署描述符的信息。 XML 编辑器可以使用 description 元素的值。 <!ELEMENT description (#PCDATA)> 4. distributable 元素 可以使用 distributable 元素来告诉 servlet/JSP 容器, 编写将在分布式 Web 容器中部署的 应用: <!ELEMENT distributable EMPTY> 例如,下面是一个含有 distributable 元素的部署描述符的例子: <?xml version="1.0" encoding="ISO-8859-1"?>