浅析web.xml文件里的一些常用的标签

    技术2022-05-20  51

    这段时间在培训jsp,上午老师讲了web.xml的一些常用的标签,现在总结一下笔记,晒晒,网各位网友们指教一二。

    web.xmlWeb应用程序的部署描述文件,是用来给Web服务器解析并获取Web应用程序相关描述的

    <servlet>用来在Web应用中定义一个Servlet

    <servlet>

    <servlet-name>LoginServlet</servlet-name>

    <servlet-class>javaweb.LoginServlet</servlet-class>

    <init-param>

    <param-name>driver</param-name>

    <param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

    </servlet>

    <init-param>:是给servletinit()方法传递需要的信息的,这些值会被封装成ServletConfig对象。如:连接数据库需要的driverurluserpassword等数据,就可以写在<init-param>标签里,然后重载init()方法,new 一个ServletConfig对象,就可以取到这些值了。

    如:public void init() throws ServletException{

    ServletConfigconfig=getServletConfigString ;

    driver = config.getParameter(“driver”);

    }

    由于<init-param>是在<servlet>里面,属于<servlet>内部的标签,因此里面的值也只能是这一个servlet能取到,并且也只能在该servletinit()方法里取到。其他的servlet是不能取到这个servlet里的值的,因此如果遇到,大一点的一些项目,里面有很多servlet,这些servlet都需要访问数据库,那么这样写就很麻烦了。

    <context-param>为了解决<init-param>的局限性,我们有了<context-param>,它就相当于全局变量似的,整个工程中任何的servlet都可以用里面的值,并且也不仅限于在init()方法中取值,哪个方法里都可以取到值。

    <context-param>

    <param-name>configLocation</param-name>

    <param-value>/WEB-INF/myAppCofig.xml</param-value>

    </context-param>

    整个参数表明了一个配置文件的所在路径,在任一Servlet代码中可以使用如下方式获取其值

    String configLocation=getServletContext().getInitParameter(“configLocation”);

    不过它的缺点是:耗费资源。当访问量大的时候,用数据库连接池会比较好。

    因此我们在这里总结:

    小型项目:<init-param> ,中型项目:<context-param>,大型项目:连接池。

    <load-on-startup>设置服务器装载的顺序,如果你的级别高(也就是数字小),那么你就会被首先装载。

    <servlet-mapping>提供了能够使用某一Servlet处理请求的映射地址

    当客户端发送请求:http://www.yourserver.com/youwebapp/login,路径中含有“/login”,所以Web服务器将会把此请求交给匹配此路径的LoginServlet处理

    <servlet-mapping>

    <servlet-name>LoginServlet</servlet-name>

    <url-pattern>/login</url-pattern>

    </servlet-mapping>

     

    <error-page>可以通过定义特定的错误页面,当服务器产生错误时会选择相应的页面展示给用户。可以通过web.xml中的<error-page>元素来定义产生异常时需要返回的页面

    <error-page>

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

    <location>/404.html</location>

    </error-page>

    <error-page>

    <exception-type>java.lang.NullPointerException</exception-type>

    <location>/exception.html</location>

    </error-page>

    <welcome-file-list>:默认页面,在这里可以设置工程默认页

     

    <filter>:标签和<servlet>标签功能类似,这里是向容器定义并注册一个filter对象的

    <filter>

        <filter-name>Filter1</filter-name>

        <filter-class>com.neu.filter.filter1</filter-class>

    </filter>

    <filter>中的<init-param><servlet>中的功能一样,不过这个是封装成filterConfig

    <filter-mapping>

        <filter-name>Filter1</filter-name>

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

    </filter-mapping>

    <filter-mapping>标签和<servlet-mapping>功能类似,来匹配客户端请求路径的,如上面的<filter-mapping>就是对所有的请求都要经过过滤器的。

    <filter-mapping>中有个<servlet-name>这个标签的功能是指定该filter只对这个servlet有效,而对其他的无效。

     

     

     


    最新回复(0)