??xml version="1.0" encoding="utf-8" standalone="yes"?>
一个web中完全可以没有web.xml文gQ也是_web.xml文gq不是web工程必须的?/p>
那什么时候需要,什么时候可以不需要呢Q?/p>
要想回答上面的问题,得先了解web.xml文g使用来干什么的。web.xml文g是用来配|:Ƣ迎cservlet、filter{的。当你的web工程没用到这些时Q你可以不用web.xml文g来配|你的web工程?/p>
那么web.xml能做的所有事情都有那些?
其实Qweb.xml的模?Schema)文g中定义了多少U标{օ素,web.xml中就可以出现它的模式文g所定义的标{օ素,它就能拥有定义出来的那些功能。web.xml的模式文件是由Sun公司定义的,每个web.xml文g的根元素<web-app>中,都必L明这个web.xml使用的是哪个模式文g。如Q?br /><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
而且web.xml的模式文件中定义的标{ƈ不是定死的,模式文g也是可以改变的,一般来_随着web.mxl模式文g的版本升U,里面定义的功能会来复杂,也即标签元素的种cM来多Q但有些是不常用的,我们只需C一些常用的可以了?/p>
下面列出web.xml常用的标{օ素及q些标签元素的功能:
1、指定欢q页面,例如Q?br /><welcome-file-list>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index1.jsp</welcome-file>
</welcome-file-list>
上面的例子指定了2个欢q页面,昄时按序从第一个找P如果W一个存在,显C第一个,后面的不起作用。如果第一个不存在Q就扄二个Q以此类推?/p>
关于Ƣ迎面Q?/p>
讉K一个网站时Q默认看到的W一个页面就叫欢q页Q一般情况下是由首页来充当欢q页的。一般情况下Q我们会在web.xml中指定欢q页。但web.xmlq不是一个Web的必要文Ӟ没有web.xmlQ网站仍然是可以正常工作的。只不过|站的功能复杂v来后Qweb.xml的确有非常大用处Q所以,默认创徏的动态web工程在WEB-INF文g夹下面都有一个web.xml文g?br />对于tomcat来说Q当你只指定一个web的根名,没有指定具体面Q去讉K时一个webӞ 如果web.xml文g中配|了Ƣ迎,那么p回指定的那个面作ؓƢ迎,而在文中没有web.xml文gQ或虽然有web.xmlQ但web.xml也没指定Ƣ迎늚情况下,它默认先查找index.html文gQ如果找CQ就把index.html作ؓƢ迎还回给览器。如果没扑ֈindex.htmlQtomcat去找index.jsp。找到index.jsp把它作为欢q页面返回。而如果index.html和index.jsp都没扑ֈQ又没有用web.xml文g指定Ƣ迎面Q那此时tomcat׃知道该返回哪个文件了Q它显CThe requested resource (/XXX) is not available的页面。其中XXX表示web的根名。但如果你指定了具体面Q是可以正常讉K的?/p>
2、命名与定制URL。我们可以ؓServlet和JSP文g命名q定制URL,其中定制URL是依赖一命名的,命名必须在定制URL前。下面拿serlet来D例:
(1)、ؓServlet命名Q?br /><servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>net.test.TestServlet</servlet-class>
</servlet>
(2)、ؓServlet定制URL?br /><servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3、定制初始化参数Q可以定制servlet、JSP、Context的初始化参数Q然后可以再servlet、JSP、Context中获取这些参数倹{下面哪servlet来D例:
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>net.test.TestServlet</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>Tommy</param-value>
</init-param>
<init-param>
<param-name>E-mail</param-name>
<param-value>Tommy@163.com</param-value>
</init-param>
</servlet>
l过上面的配|,在servlet中能够调用getServletConfig().getInitParameter("param1")获得参数名对应的倹{?/p>
4、指定错误处理页面,可以通过“异常cd”?#8220;错误?#8221;来指定错误处理页面?br /><error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
-----------------------------
<error-page>
<exception-type>java.lang.Exception<exception-type>
<location>/exception.jsp<location>
</error-page>
5、设|过滤器Q比如设|一个编码过滤器Q过滤所有资?br /><filter>
<filter-name>XXXCharaSetFilter</filter-name>
<filter-class>net.test.CharSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XXXCharaSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6、设|监听器Q?br /><listener>
<listener-class>net.test.XXXLisenet</listener-class>
</listener>
7、设|会?Session)q期旉Q其中时间以分钟为单位,假如讄60分钟时Q?br /><session-config>
<session-timeout>60</session-timeout>
</session-config>
除了q些标签元素之外Q还可以往web.xml中添加那些标{օ素呢Q那些标{օ素都能v什么作用呢Q我们只要去查看web.xml的模式文件就能知道。直接看模式文g看不懂,可以找一些中文教E来看看?/p>
一
apache支持静态页Qtomcat支持动态的Q比如servlet{,
一般用apache+tomcat的话Qapache只是作ؓ一个{发,对jsp的处理是由tomcat来处理的?/p>
apache可以支持php\cgi\perl,但是要用java的话Q你需要tomcat在apache后台支撑Q将javah由apache转发ltomcat处理?/p>
apache是web服务?strong>,Tomcat是应用(javaQ服务器Q它只是一个servlet(jsp也翻译成servlet)容器Q可以认为是apache的扩展,但是可以独立?strong>apacheq行?/p>
q两个有以下几点可以比较的:
1、两者都是apachel织开发的
2、两者都有HTTP服务的功?br />3、两者都是免费的
不同点:
Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟L、URL转发{等Q?br />Tomcat是Apachel织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务?/p>
二:
APACHE是一个web服务器环境程?启用他可以作为web服务器?不过只支持静态网??asp,php,cgi,jsp){动态网늚׃?br />如果要在APACHE环境下运行jsp 的话需要一个解释器来执行jsp|页 而这个jsp解释器就是TOMCAT, Z么还要JDK呢?因ؓjsp需要连接数据库的话 pjdk来提供连接数据库的驱E,所以要q行jsp的web服务器^台就需要APACHE+TOMCAT+JDK
整合的好处是Q?br />如果客户端请求的是静态页面,则只需要Apache服务器响应请?br />如果客户端请求动态页面,则是Tomcat服务器响应请?br />因ؓjsp是服务器端解释代码的Q这h合就可以减少Tomcat的服务开销
三:
apache:侧重于http server
tomcat:侧重于servlet引擎Q如果以standalone方式q行Q功能上与apache{效 Q?支持JSPQ但寚w态网不太理惻I
apache是web服务器,tomcat是应用(javaQ服务器Q它只是一个servlet(jsp也翻译成servlet)容器Q可以认为是apache的扩展,但是可以独立于apacheq行?
换句话说Qapache是一辆卡车,上面可以装一些东西如html{。但是不能装_要装水必要有容器(ӞQ而这个桶也可以不攑֜卡R上?/p>
文章出处Q飞诺网(www.diybl.com):http://www.diybl.com/course/3_program/java/javajs/20100719/456924.html
今天部v一个很单的JSPE序Q启动tomcat时出C面的提示信息
Using CATALINA_BASE: /software/apache-tomcat-6.0.18
Using CATALINA_HOME: /software/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /software/apache-tomcat-6.0.18/temp
Using JRE_HOME: /usr
用命?br style="box-sizing: border-box; " /> ps -ef|grep tomcat
查看没有tomcatq程?/p>
查看tomcat日志信息Q出C下面的错误:
WARNING: error instantiating 'org.apache.juli.ClassLoaderLogManager' referenced by java.util.logging.manager, class not found
java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager not found
>>No stacktrace available>>
WARNING: error instantiating '1catalina.org.apache.juli.FileHandler,' referenced by handlers, class not found
java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler,
>>No stacktrace available>>
Exception during runtime initialization
java.lang.ExceptionInInitializerError
>>No stacktrace available>>
Caused by: java.lang.NullPointerException
>>No stacktrace available>>
最l解军_法:
用命令设|JAVA_HOME环境变量
export JAVA_HOME=/software/jdk1.5.0_4/
q入 %tomcat%/bin/
./startup.sh
启动成功Q?/p>