web.xml 总结

简介: web.xml 总结


  1. 定义头元素,有序:
  1. xml头声明:xml版本,字符编码
  2. DOCTYPE声明:Servlet规范的版本,DTD
  3. web-app
  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时的顺序,因为有的jspservlet需要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>


相关文章
|
26天前
|
自然语言处理 供应链 监控
电商RPA怎么选?从痛点到落地,这款LLM+RPA产品帮你全搞定
双11订单暴增、客服瘫痪、错单频发?电商“人海战术”已成增长枷锁。RPA技术正破解效率困局:自动处理订单、7×24小时智能客服、多平台数据同步、财务自动化核账。本文拆解电商RPA核心价值,揭秘LLM+RPA如何实现“所说即所得”,并推荐真正适配电商的智能助手——实在Agent,助企业降本提效,迈向自动化运营新时代。
|
前端开发 JavaScript API
在 Vue3 + Element Plus 中生成动态表格,动态修改表格,多级表头,合并单元格
在 Vue 中,表格组件是使用频率及复杂度排名第一的组件,前端经常需要根据后台返回的数据动态渲染表格,比如动态表格如何生成,因为表格的列并不是固定的,在未知表格具体有哪些列的场景下,前端如何动态渲染表格数据。又或者需要把表格单元格进行合并处理,比如第一列是日期,需要把相同的日期进行合并,这样表格看起来会更加清晰。 本文手把手教你如何在 Vue3 + Element Plus 中创建表格、生成动态表格、创建动态多级表头、表格行合并、列合并等问题。如果你正在搭建后台管理工具,又不想处理前端问题,推荐使用卡拉云 ,卡拉云是新一代低代码开发工具,可一键接入常见数据库及 API ,无需懂前端,仅需拖拽即
3592 0
|
8月前
|
人工智能 Java 测试技术
mockito入门
本内容主要介绍Mockito框架的使用,包括快速上手指南、案例分析和高级用法。涵盖Mockito资源链接、依赖配置及版本要求(4.x支持JDK1.8,5.x需JDK11+)。通过具体代码示例,讲解了Spy与Mock对象的区别及应用场景,如创建真实或虚拟对象、模拟方法调用等。同时深入探讨了做桩技术,包括对具体参数和任意参数的处理,并提供注解方式简化测试代码。此外,针对私有方法的Mock需求,介绍了PowerMockito扩展框架及反射技术的实现方式,强调了设计优化的重要性,建议通过重构避免直接Mock私有方法,以提升测试健壮性和代码可维护性。最后附有参考资料供进一步学习。
750 8
|
API 数据格式
初识SSE
初识SSE
340 0
|
消息中间件 Java API
Flowable 7.0.0 release
Flowable 7.0.0 release
616 1
|
负载均衡 网络协议 数据库
ENSP中RIP动态路由协议(原理和配置)
`RIP (Routing Information Protocol)` 是一种距离矢量动态路由协议,用于路由器之间交换网络可达性信息。它基于跳数作为度量标准来衡量到达目的地的距离,最常用于小型网络。RIP有以下关键特点: 1. **实现网络互通**:路由器通过RIP学习彼此的路由信息,构建完整的路由表。 2. **动态更新**:路由器周期性广播其路由表,以应对网络拓扑变化。 3. **负载均衡**:RIPv2支持负载均衡,可根据链路负载选择最佳路径。 4. **简单配置**:适用于小型网络,配置和管理相对简单。 5. **成本效益**:作为免费协议,降低了网络部署和维护成本。
1036 0
ENSP中RIP动态路由协议(原理和配置)
|
机器学习/深度学习 算法 搜索推荐
R语言LASSO特征选择、决策树CART算法和CHAID算法电商网站购物行为预测分析
R语言LASSO特征选择、决策树CART算法和CHAID算法电商网站购物行为预测分析
|
Java Maven
springboot依赖分离,本地代码和第三方依赖包分开,减少部署服务时的上传时间
在pom.xml中的<build>标签中的<plugins>标签中添加下面这个插件
|
存储 安全 Java
Java 文件上传实践指南:从原理到实现的完整解析
在现代 Web 开发中,文件上传是一个常见而又必要的功能,它允许用户将各种类型的文件上传到服务器,用于头像、附件、图片等数据的传输和存储。Java 提供了多种方法来实现文件上传,本文将为您详细介绍文件上传的原理、实现方式以及在实际开发中的应用。
|
Java 容器 Spring
Spring基础篇:利用注解将外部Properties属性注入到Bean中的方法
利用注解将外部Properties属性注入到Bean中的方法
315 0

热门文章

最新文章