web.xml 总结

  1. web-app中元素的顺序以及作用、举例

 

 

Web.xml 中出现的顺序(全小写)

作用与使用举例

Icon

指定 IDE GUI 工具表示 web 应用的一两个图像文件的位置

<icon>

<small-icon></small-icon>

<large-icon></large-icon>

<!--可以用small-icon指定16*16的图gif或JPEG图像,large-icon指定32*32的。 -->

</icon>

Display-name

GUI 工具标记这个 web 应用的一个名称

Description

描述这个应用。

Context-param

应用范围内的初始化参数 .( init-param 的区别是:这个是整个 web 应用里可用的。 Init-param 只是在那个指定的 jsp servlet 中可用。 )

Eg.

<context-param>

<param-name>contextParamName</param-name>

<param-value>contextParamValue</param-value>

</context-param>

Filter

过滤器元素。将一个名字与一个实现了 javax.servlet.Filter 接口的类相关联。

需要在 web.xml 中使用 2.3 或以上版本的 DTD

过滤器可截取和修改一个 servlet jsp 和请求或从中发出的响应。在执行 servlet jsp 之前,必须先执行第一个相关的过滤器的 doFilter 方法。 FilterChain 对象调用 doFilter 方法时,执行链中的下一个过滤器至最后一个,然后 servlet jsp 才被执行。过滤器具有对到来的 ServletRequest 对象的全部访问权。

新建一个类 implements Filter:

Eg.

public class MyFilter implements Filter {

 

public void destroy() {

 

}

 

/* (non-Javadoc)

  * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)

  */

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest req=(HttpServletRequest)request; //可以全权操作这个到来的request

System.out.println("这里可以在执行servlet之前进行操作,而且具有对到来的servletRequest对象的所有访问权。"+req.getRemoteHost());

chain.doFilter(request, response); //执行完了doFilet再去执行相应的原servlet或jsp

}

 

public void init(FilterConfig arg0) throws ServletException {

 

}

 

}

filter web.xml 中的声明与 servlet 相似:

<filter>

<filter-name>myFilter</filter-name>

<filter-class>guoxp.ajax.servlet.MyFilter</filter-class>

</filter>

 

<filter-mapping>

<filter-name>myFilter</filter-name>

<url-pattern>/*</url-pattern> <!--或是指定某个访问路径 -->

</filter-mapping>

 

但它的 filter-mapping 有两种方式,上面的是与 servlet 相似的声明方式,它还可以直接声明它截取的 servlet jsp 的名字(不过这个 servlet jsp 的名字要在这个 web.xml 中稍后进行声明),即用下面的方式:

<filter-mapping>

<filter-name>myFilter</filter-name>

<servlet-name>AJAXServer</servlet-name>

</filter-mapping>

Filter-mapping

将过滤器的名字与一个或多个 servlet jsp 页面相关联。

例子如上。

Listener

指出监听程序类。事件监听程序在建立、修改和删除会话或 servlet 环境时得到通知。 web 应用的 Servlet-Context 建立或消除时,就会触发该监听器。

<listener>

<listener-class>guoxp.ajax.servlet.MyListener</listener-class>

</listener>

 

MyListener .java:

public class MyListener implements ServletContextListener {

 

public void contextDestroyed(ServletContextEvent event) {

System.out.println("destroyed....");

}

 

public void contextInitialized(ServletContextEvent event) {

System.out.println("created....");

}

 

}

Servlet

命名一个 servlet jsp 页面

Eg.

  <servlet>

    <servlet-name>AJAXServer</servlet-name>

    <servlet-class>guoxp.ajax.servlet.AJAXServer</servlet-class>   <!-- 如果是 jsp 页面,就使用<jsp-file> 代替<servlet-class>。这样的配置可以使多个 url 共同用一个 jsp 处理,或是使得在 url 中去掉 .jsp 扩展名 -->

<load-on-startup>1</load-on-startup> <!--指定装载 servlet 或是 jsp 时的顺序,因为有的 jsp servlet 需要 init 较长的时间,按数字从小到大确定先后顺序。 -->

  </servlet>

 

Servlet-mapping

为这个 servlet 名提供一个缺省的 url

Eg.

  <servlet-mapping>

    <servlet-name>AJAXServer</servlet-name>

    <url-pattern>/AJAXServer</url-pattern>      <!-- 必须以斜杠‘ / ’开始,还可以包含通配符,如 /*.jsp, 则这样的 .jsp 的访问都会请求到这个 AJAXServer-->

<init-param>

<param-name>paramName</param-name>

<param-value>paramValue</param-value> <!--可以向 servlet 提供初始化参数。

servlet 中相应的得到这个参数的方法:

init() 方法中,

public void init() throws ServletException {

ServletConfig config=getServletConfig();

String value=config.getInitParameter("paramName");

}

jsp 中相应的用 jspInit() 方法:

<%!private String paramValue;

 

public void jspInit() {

ServletConfig config = getServletConfig();

paramValue = config.getInitParameter("paramName");

}%>

-->

</init-param>

 

  </servlet-mapping>

 

Session-config

设定会话的超时时间。或用 HttpSession setMaxInactiveInterval 方法明确设置单个会话对象的超时值。

Eg.

<session-config>

<session-timeout>120</session-timeout>

</session-config>

Mime-mapping

web 应用的特殊文件保证 分配特定的 mime 类型。

Eg.

<mime-mapping>

<extension>txt</extension>

<mime-type>application/txt</mime-type>

</mime-mapping>

 

附:常见的MIME类型

 

超文本标记语言文本 .htm,.html text/html

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

GIF图形 .gif image/gif

JPEG图形 .ipeg,.jpg image/jpeg

au声音文件 .au audio/basic

MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

Welcome-file-list

访问目录名时的起始文件。

Eg.

<welcome-file-list>

<welcome-file>modules/frame/frame.jsp</welcome-file>

<welcome-file>index.jsp</welcome-file> /* 可以指定多个欢迎页,从上向下试用 */

</welcome-file-list>

Error-page

Error-code 或特定异常时,订制显示的页面。注意 location 必须以斜线 / 开头,也就是相对于整个应用的。两个方式: error-code exception-type

 

<error-page>

<error-code>404</error-code>

<location>/error404.jsp</location> <!--关于指定错误处理页面,也可以在 jsp 中指定

<%@  page errorPage="error.jsp" %>    -->

</error-page>

 

<error-page>

<exception-type>

javax.servlet.ServletException

</exception-type>

<location>/exception.jsp</location>

</error-page>

 

里面有三个属性可供处理异常时使用,分别是:status_code、message、与exception_type

指定显示处理异常的页面exception.jsp,isErrorPage="true"指定 举例:

<%@ page language="java" pageEncoding="UTF-8"

contentType="text/html; charset=UTF-8" isErrorPage="true" %>

<%--指定了isErrorPage就可以在EL中使用隐式对象${pageContext.exception}

--%>

<html>

<head>

<title>错误与例外处理页面</title>

</head>

<body>

错误码:

<%=request.getAttribute("javax.servlet.error.status_code")%>

<br />

错误信息:

<%=request.getAttribute("javax.servlet.error.message")%>

<br />

异常:

<%=request.getAttribute("javax.servlet.error.exception_type")%>

<br />

</body>

</html>

Jsp-config

<taglib> 对标记库文件指定别名 . 当标记库名改变时可以不改变 jsp 中的引用名。 2.4 ,<tablib> 已经作为 <jsp-config> 的子元素。

Eg.

<jsp-config>

<taglib>

<taglib-uri>/dhtmlxgrid.tld</taglib-uri>

<taglib-location>/WEB-INF/dhtmlxgrid.tld</taglib-location>

</taglib>

</jsp-config>

Resource-env-ref

声明与资源相关的一个管理对象

Resource-ref

声明资源工厂使用的外部资源

Secuity-constraint

制订应该保护的 url

Login-config

指定如何给试图访问受保护页面 用户授权。

Secuity-role

给出安全角色列表

Env-entry

web 应用的环境项

Ejb-ref

声明 EJB 主目录的引用

Ejb-local-ref

声明一个 EJB 的本地主目录的应用

 

3.   重新映射/servlet/URL模式

      在一个特定的Web应用中禁止以 http://host/webAppPrefix/servlet/ 开始的URL的处理非常简单。所需做的事情就是建立一个错误消息servlet,并使用url-pattern元素将所有匹配请求转向该servlet。只要简单地使用:

<url-pattern>/servlet/*</url-pattern>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值