美文网首页
<JavaWeb>Servlet配置

<JavaWeb>Servlet配置

作者: 普通一般社会人 | 来源:发表于2016-04-20 03:59 被阅读211次

    一个Web应用程序的结构一般而言都如下图所示,


    webapp目录结构

    首先是公共资源部份,即用户可以通过URL访问到的静态资源,通常包括前四个文件目录,即css,html,js和images。在使用这些资源的时候,要记得根据资源的类型进行分类,会显得更有条理。
    Web应用一般还会包括一个META-INF目录,存放了架构包的源信息,定义了包扩展属性,类的加载路径等,还可以定义一些自定义属性。
    Web应用的核心部分是WEB-INF目录,它是web应用的专用区,并不提供给用户,也无法通过URL访问到。在这个目录下存放的主要是类文件以及类所依赖的库,它主要包括classes和lib这两个子目录,其中classes目录中存放的主要是编译后的类文件以及编写的代码,lib目录存放的主要是web应用依赖的架包,比如说第三方库等。Servlet的核心配置文件,web.xml文件也存放在这个目录下。

    Web.xml

    Web.xml也被称作部署描述符,采用xml语法,主要是用来描述一个web应用,设置web应用程序的组件部署信息。
    而对于Servlet容器来说,需要支持部署描述符中的所有元素。
    今天所记录的所有元素,都属于web.xml文件。
    Servlet声明
    Servlet的声明依靠两个元素,分别是<servlet>和<servlet-mapping>元素,它们的结构如下:

    <servlet>
        <servlet-name>名称</servlet-name>
        <servlet-class>Servlet类的package路径</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>名称,要和上方的名字相同</servlet-name>
        <url-pattern>对外映射的相对路径/url</url-pattern>
        <url-pattern>映射路径可以有多个,指向同一个Servlet</url-pattern>
        <url-pattern>路径支持模糊匹配,即/hello/*,所有的URL都会指向这个servlet</url-pattern>
    </servlet-mapping>
    

    servlet-mapping在进行路径匹配时,按照从高到低的优先级规则进行匹配,直到匹配到为止。如果没有匹配到,就会返回错误信息。
    匹配规则:
    1.精确路径匹配,完全匹配
    2.最长路径匹配,最长前缀匹配
    3.扩展名匹配(如/admin.jsp)
    4.default servlet(/)或者放弃匹配
    需要说明的是,如果servlet的url是/hello,而请求url为/hello.jsp,并不会转发给/hello的servlet,而是给*.jsp的servlet,/hello/a.jsp才会给/hello的servlet。
    ServletConfig配置
    ServletConfig配置主要是用来存放固定的配置信息,以Servlet为单位,无法共享,配置也在Servlet元素当中。

    <servlet>
        <init-param>
            <param-name>配置名称key</param-name>
            <param-value>配置值value</param-value>
        </init-param>
    </servlet>
    

    存放在哪个<servlet>标签中,就属于哪个servlet。
    ServletContext配置
    ServletContext不依赖于Servlet,属于一个webapp,可以在多个Servlet之间共享。

    <context-param>
        <param-name>Context名</param-name>
        <param-value>Context值</param-value>
    </context-param>
    

    由于ServletContext属于webapp,所以在层次上与<servlet>标签属于同一层。
    启动
    默认情况下,Servlet会在第一次被请求时,才会加载到Servlet容器中,执行init方法,如果我们想要在Servlet容器启动时进行操作的话,需要进行一些配置。

    <servlet>
        <load-on-startup>0</load-on-startup>
    </servlet>
    

    它支持改变servlet的默认初始化时间,当load-on-startup的值大于等于0的时候,就表示Servlet容器在启动时,加载对应的Servlet,没有设置或者为负数时,采用默认设置。
    当多个Servlet都设置了加载时间时,会按照值的大小,从小到大依次加载。
    自定义错误界面

    <error-page>
        <error-code>404</error-code>//HTTP错误状态码
        <location>/404.html</location>//跳转指定页面位置,路径相对于webapp目录
    </error-page>
    

    更高级的做法可以添加exception-type元素来捕获一个JAVA异常类型。当系统中出现了对应的异常,就会跳转到对应的界面。
    请求访问中不包含servlet
    如果我们请求了一个不包含特定servlet的界面,会跳转到index.html页面,即欢迎页面。

    <welcome-file-list>
        <welcome-file>/index.html</welcome-file>
    </welcome-file-list>
    

    MIME类型影射
    MIME(Multipurpose Internet Mail Extensions),即多用途互联网邮件拓展类型。最初是为了标记邮件附件类型,后来拓展为一个描述消息类型的互联网标准,即描述一个特定的扩展名文件用特定应用程序打开。当特定扩展名的文件被访问时,浏览器会自动调用对应的应用程序去打开。

    <mime-mapping>//对应扩展名文件映射类型
        <extension>扩展名</extension>
        <mime-type>mime标准</mime-type>
    </mime-mapping>
    

    mime扩展标准跳转

    相关文章

      网友评论

          本文标题:<JavaWeb>Servlet配置

          本文链接:https://www.haomeiwen.com/subject/xryzlttx.html