一个web应用是由web组件,静态资源文件(如图片)和有关的class类、第三方类库组成的。web容器给web组件提供服务,使他们更容易开发。但是,因为web应用必须考虑以上列出的因素,创建和运行web应用不同于传统单独的基于Java类的应用。
创建,部署,运行一个web应用的过程可以用以下几步来总结:
- 编写web组件代码。
- 编写web应用的部署描述符(web.xml)。
- 编译web组件的代码和相关的类库。
- 可选地,将应用打包成部署单元(WAR包)。
- 将应用部署到web容器(tomcat)。
- 使用浏览器访问这个web应用关联的URL。
web模块
在JavaEE架构中,web组件和静态资源文件(如图片)被称为web资源。web模块是web资源中最小的可部署的并且可用的单元。web应用中的一个JavaEE web模块在Java Servlet规范中定义了。
web模块除了包含web组件和web资源,还包含其他文件:
- 服务端工具类(数据库beans)。这些类通常以JavaBeans组件架构。
- 客户端类(applets和工具类)。
web模块的结构的给定的。web模块的顶层目录就是应用的文档根(document root)。文档根就是JSP文件,客户端的类和文档,静态web资源(如图片)存放的地方。
根文档包含一个子文件夹WEB-INF,它包含以下文件和目录:
- web.xml:web应用部署描述符。
- Tag库描述文件。
- classes:存放服务端类的目录,象servlet,工具类,JavaBeans组件。
- tags:包含tag文件的目录,这些tag文件实现了tag类库。
- lib:包含JAR包的目录。
如果你的web模块不包含任何servlet,filter,listener组件,那么你就不需要web应用部署描述符。换句话说,如果你的web模块仅仅包含JSP文件和静态文件,那么你不需要web.xml文件。
你也可以创建自己的子目录放在文档根或者WEB-INF/classes/目录下。
web模块通过不打包的结构部署,也可以打成一种JAR包形式的WAR包部署。因为WAR包里面的内容不同于JAR包,所以WAR包使用.war作为后缀名来区分,但压缩原理同JAR的一样的。web模块是partable(便携的)的,你可以将它部署在任何web容器中,只要这个web容器实现了Java Servlet规范(tomcat,jetty,weblogic,jboss等等)。
下面我们来详细解读一下部署描述符(web.xml)
1 定义头元素
<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>
2 部署描述符文件内的元素
icon
icon要素指定了web应用下的一个路径,这个路径对应一个小图像或者大图像,GUI工具可以感知到这个路径并使用这个图像表示web应用。(servlet要素也有个子要素叫icon要素,GUI工具可以用来表示一个servlet)。
要素 |
必填 |
描述 |
<small-icon> |
可选 |
16*16像素的gif或者jpg图像的位置 |
<large-icon> |
可选 |
32*32像素的gif或者jpg图像的位置 |
display-name
dispaly-name要素是可选的,指定web应用的显示名字,GUI工具用它来表示web应用的简称。
要素 |
必填 |
描述 |
<display-name> |
可选 |
|
description
可选的要素,使用文本描述web应用。
要素 |
必填 |
描述 |
<description> |
可选 |
|
context-param
可选的context-param要素声明了web应用的servlet上下文初始化参数。任何servlet或者JSP页面借助ServletContext的getInitParameter方法都可以读取到这些初始化参数。
要素 |
必填 |
描述 |
<param-name> |
必填 |
参数名 |
<param-value> |
必填 |
参数值 |
filter
filter要素定义了一个过滤器类和它的初始属性值。
要素 |
是否可选 |
描述 |
<icon> |
可选 |
上文已解释。 |
<filter-name> |
必填 |
定义过滤器的名字,该名字关联web.xml中<filter-mapping/> |
<display-name> |
可选 |
简称,提供给GUI工具使用 |
<description> |
可选 |
过滤器的文本描述 |
<filter-class> |
必填 |
过滤器对应的类,需要包含完整包名。 |
<init-param> |
可选 |
初始化filter属性的名值对,每一个filter属性对应一个<init-param>标签 |
filter-mapping
filter-mapping和filter配置使用。
要素 |
是否可选 |
描述 |
<filter-name> |
必填 |
映射URL模式或者servlet的过滤器名字,根<filter>要素中的<filter-name>要素关联 |
<url-pattern> |
必填或者在<servlet>要素中指定 |
描述一个解析URL时的模式。 |
<servlet-name> |
当<url-pattern>没有时必填 |
一个servlet的名字,该servlet使过滤器执行 |
listener
应用事件监听器程序是建立或修改servlet环境或者session对象时通知的类(怎么读怎么拗口)。
要素 |
是否可选 |
描述 |
<listener-class> |
可选 |
一个类的名字,关联一个web应用事件 |
servlet
要素 |
是否可选 |
描述 |
<icon> |
可选 |
上面已经解释 |
<servlet-name> |
必填 |
定义servlet的名字,根<servlet-mapping>中的<servlet-name>关联 |
<display-name> |
可选 |
简称,GUI工具使用 |
<description> |
可选 |
servlet的文本描述 |
<servlet-class> |
必填(或者使用<jsp-file>) |
servlet对应的类名,在servlet中你只能在<servlet-class>和<jsp-file>中二选一 |
<jsp-file> |
必填(或者使用<servlet-class>) |
web应用中完整路径名的jsp文件,路径名以web应用的根目录开始 |
<init-param> |
可选 |
|
<load-on-startup> |
可选 |
假如servlet或jsp页面有一个要花很长时间执行的init(servlet)或jspInit(jsp)方法。如查询数据库,这样第一个客户端请求上来第一次装载servelt时会产生较长的延迟,load-on-startup规定服务器在第一次启动时装载servlet,元素体为一个整数,代表次序。 |
<run-as> |
可选 |
|
<security-role-ref> |
可选 |
|
servlet-mapping
要素 |
是否可选 |
描述 |
<servlet-name> |
必填 |
|
<url-pattern> |
必填 |
|
session-config
如果一个session在一段时间内没有调用,服务器就把它丢弃了以节约内存,可以利用HttpSession的setMaxInactiveInterval方法直接设置个别session的超时值。如果不采用这种方法,则缺省的超时值由具体的服务器决定。可利用session-config给出一个明确的超时时间。单位为分钟。
要素 |
是否可选 |
描述 |
<session-timeout> |
可选 |
|
mine-mapping
要素 |
是否可选 |
描述 |
<extension> |
必填 |
|
<mime-type> |
必填 |
|
welcome-file-list
假如用户提供了一个http://host/webAppPrefix/directoryName/这样的包含一个目录名但没有包含文件名的URL,会发生什么事情呢?用户得到一个目录表?一个错误?还是标准问及爱你的内容?如果得到标准文件的内容是index.html,index.jsp,default.html,default.htm还是别的什么东西呢?<welcome-file>指出,如果一个URL给出一个目录名但未给出明建明,服务器应该首先试用<welcome-file>中定义的文件,如果没有找到,则结果依赖于应该服务器(如一个目录列表,tomcat需要在配置中打开这个选项)
要素 |
是否可选 |
描述 |
<welcome-file> |
可选 |
|
error-page
要素 |
是否可选 |
描述 |
<error-code> |
可选 |
指出在给定的http错误代码出现时使用的URL,URL必须以/开始 |
<exception-type> |
可选 |
指出在出现某个给定的Java异常但未捕捉到时使用的URL,URL必须以/开始 |
<location> |
必填 |
指出具体页面 |
taglib
要素 |
是否可选 |
描述 |
<taglib-location> |
必填 |
|
<taglib-uri> |
必填 |
|
resource-env-ref
要素 |
是否可选 |
描述 |
<description> |
可选 |
|
<resource-env-ref-name> |
必填 |
|
<resource-env-ref-type> |
必填 |
|
resource-ref
要素 |
是否必填 |
描述 |
<description> |
可选 |
|
<res-ref-name> |
必填 |
|
<res-type> |
必填 |
|
<res-auth> |
必填 |
|
<res-sharing-scope> |
可选 |
|
security-constraint
要素 |
是否必填 |
描述 |
<web-resource-collection> |
必填 |
|
<auth-constraint> |
可选 |
|
<user-data-constraint> |
可选 |
|
login-config
要素 |
是否必填 |
描述 |
<auth-method> |
可选 |
|
<realm-name> |
可选 |
|
<form-login-config> |
可选 |
|
security-role
要素 |
是否必填 |
描述 |
<description> |
可选 |
|
<role-name> |
必填 |
|
env-entry
要素 |
是否必填 |
描述 |
<description> |
可选 |
|
<env-entry-name> |
必填 |
|
<env-entry-value> |
必填 |
|
<env-entry-type> |
必填 |
|
ejb-ref
ejb相关,不介绍
ejb-local-ref
ejb相关,不介绍
分享到:
相关推荐
JavaEE5,涵盖了javaWeb开发的最新版本javaEE5中的所有经典内容。欢迎大家下载。献给WEb开发的所有人员,欢迎大家下载。软件大小:4.08M
1、 dbke是一个实际使用中的项目,可查看效果及功能...5、另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范检查,代码审查等功能(与此相关的jar包由于上传文件大小限制未导入)
《JavaEE编程课程设计》期末项目报告书.docx《JavaEE编程课程设计》期末项目报告书.docx《JavaEE编程课程设计》期末项目报告书.docx《JavaEE编程课程设计》期末项目报告书.docx《JavaEE编程课程设计》期末项目报告书...
javaEE web 应用JAR包javaEE web 应用JAR包javaEE web 应用JAR包javaEE web 应用JAR包
教你如何创建第一个javaee的web项目
JAVAEE5APIJAVAEE5APIJAVAEE5API
javaEE框架构建2022
javaee-web相关
使用验证码,增强用户体验效果,使你的网页更具有特色
---------- JAVAEE_5_Libraries,开发java web项目需要的库文件 ----------
JAVAEE期末项目总结报告.doc
javaEE-web的文件路径, 用getClass().getResourceAsStream("/")来确定文件路径 并用jdom读取xml和下载1
javaee5 源码,只有javaee的没有其他包的
JavaEE5学习笔记07-Web层与EJB集成总结。
JavaEE 5 API 中文版JavaEE 5 API 中文版JavaEE 5 API 中文版JavaEE 5 API 中文版JavaEE 5 API 中文版JavaEE 5 API 中文版
基于JavaEE的Web开发技术.ppt
JavaEE+项目案例+(代码+数据库)
JavaEE5 API 提取自Eclipse帮助文件
JavaEE5-API非常全 欢迎下载 绝对给力
JAVAEE5API.chm