Spring MVC入门 - web.xml

  SpringMVC使用xml和注解(内部使用代理工厂模式和反射机制处理)来简化配置。Spring启动前先载入web.xml,获取一些不可或缺的和重要的配置。比如在SpringMVC中,重要的前置控制器(DispatcherServlet)就是在web.xml中配置的。
  SpringMVC入口就是web.xml配置文件,里面定义了一些监听器(Listener)、调度服务程序(DispatcherServlet)、过滤器(Filter)等。这些组件共同完成Spring MVC项目。

  • 过滤器(filter)
  • 监听器(listener)
  • 调度服务程序(servlet)
  • 默认URL(welcome-file-list)
  • 错误页(error-page)

一、调度服务程序(servlet)

  前端控制器(DispatcherServlet),就是这个servlet。

<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <load-on-startup>1</load-on-startup> 
</servlet>

<servlet-mapping>
   <servlet-name>dispatcher</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

  < servlet >就是DispatcherServlet,通过servlet告诉SpringMVC,控制器是哪个,叫什么,< servlet-name >指定了使用哪个XML来配置控制器,默认情况下在/WEB-INF/< servlet-name >-servlet.xml。用< load-on-startup >来指定启动顺序。 < servlet-mapping >的做拦截器的,定义要拦截的URL请求。

二、过滤器(filter)

  过滤器放在web资源之前,可以在请求抵达它所应用的web资源(可以是一个Servlet、一个Jsp页面,甚至是一个HTML页面)之前截获进入的请求,并且在它返回到客户之前截获输出请求。Filter:用来拦截请求,处于客户端与被请求资源之间,目的是重用代码。Filter链,在web.xml中哪个先配置,哪个就先调用。在filter中也可以配置一些初始化参数。
  Filter 有如下几个种类:

  • 用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求。
  • 日志Filter: 详细记录某些特殊的用户请求。
  • 负责解码的Filter: 包括对非标准编码的请求解码。
  • 能改变XML 内容的XSLTFilter 等。

  Filter 有如下几个用处:

  • 在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
  • 根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
  • 在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
  • 根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。

  如下就是一个设置编解码的过滤器:

 <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
</filter>

  可以指定过滤器运行的范畴。

 <filter-mapping>
     <filter-name>encodingFilter</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>

三、监听器(listener)

  监听器故名思议就是起到监听作用,对某个对象所进行的一系列动作进行监听,并记录下来。JavaWeb主要有三种类型的监听器ServletContextListener,HttpSessionListener,ServletRequestListener, 这三种类型监听器对应的作用域分别是application, session, request。这一节我们看看这三个监听器的用法   ContextLoaderListener实现了ServletContextListener接口,可以监听所有的servlet。这样对于每个用户请求,都被contextLoaderlistener监听到,执行请求都要先经过这个类。

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
设置会话超时时间,单位分钟。
<session-config>
    <session-timeout>20</session-timeout>
</session-config>

四、welcome-file-list

  在web项目中,当用户在浏览器中输入的URL不包含某个特定的Servlet、html、jsp页面时,web.xml中、< welcome-file-list >标签元素就会指定显示的默认文件。

五、error-page

  在java web项目中,有时我们需要在错误发生时,给出用户提示信息,或者显示站点维护者信息,再或者将错误替换为另一种表达以舒缓情绪。这时可以采用web.xml的error-page标签来实现。由于相关资料较多,此篇只为简单指引。

一. 通过错误码来配置error-page
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
注:系统出现404错误时,跳到处理页面error.jsp

二. 通过异常的类型配置error-page.
<error-page>
<exception-type>java.lang.NullException</exception-type>
<location>/error.jsp</location>
</error-page>

猜你喜欢

转载自blog.csdn.net/myt0929/article/details/80103807