[Servlet&JSP] 部署描述设置

Servlet的设置

以下是在web.xml中设置servlet的范例片段:

<servlet>
    <servlet-name>Some</servlet-name>
    <servlet-class>club.chuxing.SomeServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param>
        <param-name>param1</param-name>
        <param-value>value1</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>Some</servlet-name>
    <url-pattern>/Some.do</url-pattern>
</servlet-mapping>

当web应用程序启动后,事实上并没有加载所有的Servlet。容器会在请求时,才将对应的Servlet类加载、实例化并进行初始动作,然后再调用service()方法来处理请求。

如果希望在应用程序启动时,就先把Servlet类加载、实例化并做好初始化动作,就可以使用<load-on-startup>设置。设置大于0的值,表示在启动应用程序后就要初始化Servlet。数字表示了Servlet的初始化顺序,如果有多个Servlet在设置<load-on-startup>时使用了相同的数字,则按其在web.xml中设置的顺序来初始化Servlet。

别尝试在所有的Servlet上都设置<load-on-startup>。越多的Servlet在应用程序启动时被初始化,表示应用程序的启动越花时间。只有在那些初始时会加载比较多资源的Servlet上才设置<load-on-startup>,像是web框架(Framework)中担任前端控制器(Front Controller)角色的Servlet。

可以在<url-pattern>中设置三种模式:

  • 完全符合模式
    必须以斜杠(/)作为开头,也就是以web应用程序环境根目录开始,指定完整的URL模式。如:<url-pattern>/admin/login.do</url-pattern>
  • 目录符合模式
    指定某个目录下的所有URL都交由某个Servlet来处理,则可以在目录斜杠(/)后加上星号(*)。如<url-pattern>/guest/*</url-pattern>
  • 扩展名符合模式
    指定以某个扩展名为结尾的所有URL请求都交由对应的Servlet处理,则可以使用星号(*)作为开头,并加上扩展名。<url-pattern>*.do</url-pattern>

不能混用目录符合模式与扩展名符合模式,即不能出现如<url-pattern>/admin/*.do</url-pattern>这样的URL模式设置。

如果有URL模式设置比对的规则在某些URL请求时有所重叠,则请求时比对的原则依完全模式、目录模式、扩展名模式的顺序来决定,也就是从最严格的模式开始符合。

在设置过滤器时,<filter-mapping>上也可以设置<url-pattern>标签,设置的原则与<servlet-mapping>上的<url-pattern>是相同的。在Servlet2.5版本之后,可以直接在同一个<servlet-mapping>中设置多个<url-pattern>。例如:

<servlet-mapping>
    <servlet-name>Some</servlet-name>
    <utl-pattern>/something.do</utl-pattern>
    <utl-pattern>/someone.do</utl-pattern>
</servlet-mapping>

同样的,也可以在<filter-mapping>中设置多个<url-pattern><servlet-name>。例如:

<filter-mapping>
    <filter-name>Some</filter-name>
    <utl-pattern>/something.do</utl-pattern>
    <utl-pattern>/someone.do</utl-pattern>
    <servlet-name>Other</servlet-name>
</filter-mapping>

设置欢迎与错误处理页面

如果用户用户请求某个类似于/BookmarkOnline/user的URL,而user在Servlet的URL模式设置中并不存在,它只是一个目录,若不想用户看到资源不存在之类的错误信息,则可以设置默认的欢迎页面,在用户请求某个目录时可以自动挑选欢迎页面加以显示。

<web-app ...>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

设置<welcome-file>时,注意態用斜杠(/)作为开头(这不是在设置整个应用程序的默认首页)。在请求某个目录名称时,容器会自动依<welcome-file>中的文件顺序,看看时候可找到对应的文件,找到的话就显示给用户。

如果在存取应用程序的时候发生了异常或者错误,而没有在Servlet/JSP中处理这个异常或错误,则最后会由容器加以处理,一般容器就是直接显示异常信息与堆栈跟踪信息。如果希望容器发现这类异常或者错误时,可以自动转发到某个URL,则可以在web.xml中使用<error-page>进行设置。

例如,若想要在容器收到某个类型的异常对象时进行转发,则可以做如下设置:

<web-app ...>
    <error-page>
        <exception-type>java.lang.NullPointerException</exception-type>
        <location>/report.view</location>
    </error-page>
</web-app>

如果想要基于HTTP的错误代码转发到处理页面,则要搭配<error-code>来设置。例如:

<web-app ...>
    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>
</web-app>

这个设置在自行使用HttpServletResponse的sendError()送出错误状态码时也有作用,因为sendError()只是告知容器,以容器的默认方式或web.xml中的设置来产生错误状态码的信息。

MIME与扩展名的对应

当自动响应串流给浏览器时,为了让浏览器知道如何处理收到的串流对象,必须告知MIME类型。若应用程序中使用到了MIME类型,可以在web.xml中设置扩展名与MIMIE类型对应。例如:

<web-app ...>
    <mime-mapping>
        <extension>pdf</extension>
        <mime-type>application/pdf</mime-type>
    </mime-mapping>
</web-app>

<extension>设置文件的扩展名,而<mime-type>设置对应的MIME类型名称。如果想要知道某个文件的MIME类型名称,则可使用ServletContext的getMimeType()方法,这个方法让你指定文件名称,然后根据web.xml总设置的对应扩展名,取得MIME类型的名称。

转载:http://blog.csdn.net/foreverling/article/details/50329569

时间: 2024-09-26 19:07:39

[Servlet&JSP] 部署描述设置的相关文章

[Servlet&amp;amp;JSP] 部署描述设置

Servlet的设置 以下是在web.xml中设置servlet的范例片段: <servlet> <servlet-name>Some</servlet-name> <servlet-class>club.chuxing.SomeServlet</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>

《Servlet和JSP学习指南》一1.11 使用部署描述符

1.11 使用部署描述符 在前面的范例中已经学过,编写和部署Servlet应用程序是很容易的.部署的一个方面是给Servlet映射配置一条路径.在那些例子中,利用WebServlet注解类型给一个Servlet映射了一条路径.使用部署描述符是配置Servlet应用程序的另一种方法,关于部署描述符的详细讨论,可查看第16章的内容.部署描述符总是命名为web.xml,并放在WEB-INF目录下.本章将介绍如何创建一个名为app01c的Servlet应用程序,并为它编写一个web.xml文件.app0

《Servlet、JSP和Spring MVC初学指南》——1.11 使用部署描述符

1.11 使用部署描述符 如在前面的例子中所见,编写和部署Servlet都是很容易的事情.部署的一个方面是用一个路径配置Servlet的映射.在这些范例中,是利用WebServlet标注类型,用一个路径映射了一个Servlet. 利用部署描述符是配置Servlet应用程序的另一种方法,部署描述符的详情将在第13章"部署描述符"中探讨.部署描述符总是命名为web.xml,并且放在WEB-INF目录下.本章介绍了如何创建一个名为app01c的Servlet应用程序,并为它编写了一个web.

sqlserver2005-关于MVC+Jsp模式学生成绩管理系统中src下servlet和bean的设置问题

问题描述 关于MVC+Jsp模式学生成绩管理系统中src下servlet和bean的设置问题 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %> 无标题文档 /jsp:useBean <% if(stu_id==null){response.sendRedirect("login.jsp"

Apache+Servlet+Jsp环境设置(上)

apache|js|servlet 本文只讨论如何在Windows NT 4.0上安装Apache+Servlet+Jsp.本文中的配置情况如下: Windows NT 4.0 jdk1_2_2-001-win.exe apache_1_3_12_win32.exe ApacheModuleJServ.dll tomcat.zip(3.0) 一. 软件下载 JDK http://java.sun.com/products/jdk/1.2/ Apache Server http://www.apa

Apache+Servlet+Jsp环境设置(上)_JSP编程

本文只讨论如何在Windows NT 4.0上安装Apache+Servlet+Jsp.本文中的配置情况如下: Windows NT 4.0 jdk1_2_2-001-win.exe apache_1_3_12_win32.exe ApacheModuleJServ.dll tomcat.zip(3.0) 一. 软件下载 JDK http://java.sun.com/products/jdk/1.2/ Apache Server http://www.apache.org/dist/binar

JAVA进阶:Servlet/JSP服务器端重定向

js|servlet|服务器 通常,在一个设计良好的Web应用中,都会综合使用Servlet和JSP技术.Servlet控制业务流转,JSP则负责业务处理结果的显示.此时,将大量用到重定向技术.         通常,在一个设计良好的Web应用中,都会综合使用Servlet和JSP技术.Servlet控制业务流转,JSP则负责业务处理结果的显示.此时,将大量用到重定向技术.         重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向.客户端重定向可以通过设置特定的HTTP头

Servlet/JSP服务器端的重定向

js|servlet|服务器 通常,在一个设计良好的Web应用中,都会综合使用Servlet和JSP技术.Servlet控制业务流转,JSP则负责业务处理结果的显示.此时,将大量用到重定向技术. 重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向.客户端重定向可以通过设置特定的HTTP头,或者写JavaScript脚本实现.本文主要探讨服务器端重定向技术的实现. 服务器端的重定向相关类 服务器端的重定向技术涉及到javax.servlet.ServletContext.javax.

求助!!-javax.servlet.jsp.JspExceptiin

问题描述 javax.servlet.jsp.JspExceptiin Define tag cannot set a null value for bean with id :answerSingle 解决方案 如何得到javax.servlet.jsp包?eclipse下javax.servlet.jsp.*包找不到问题eclipse下javax.servlet.jsp.*包找不到问题 解决方案二: 如何得到javax.servlet.jsp包?eclipse下javax.servlet.j