• 为什么SpringMVC的Servlet写的是/而不是/*?-转载


    一、我们都知道在基于Spring的Application中,需要在web.xml中增加下面类似的配置信息:

      <listener>
      <listener-class>
      org.springframework.web.context.ContextLoaderListener
      </listener-class>
      </listener>

      <!-- Spring MVC Servlet -->

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

      <servlet-mapping>
      <servlet-name>servletName</servlet-name>
      <url-pattern>/</url-pattern>
      </servlet-mapping>
      此处需要特别强调的是 <url-pattern>/</url-pattern>使用的是/,而不是/*,如果使用/*,那么请求时可以通过DispatcherServlet转发到相应的Action或者Controller中的,但是返回的内容,如返回的jsp还会再次被拦截,这样导致404错误,即访问不到jsp。所以如果以后发现总是有404错误的时候,别忘了check一下 <url-pattern>/</url-pattern>的配置是否是/*.

      二、其实Spring 的Servlet拦截器匹配规则(即 <url-pattern>...</url-pattern> )都可以自己定义,例:当映射为@RequestMapping("/user/add")时

      1、拦截*.do、*.htm, 例如:/user/add.do

      这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。

      2、拦截/,例如:/user/add

      可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。

      弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。想实现REST风格,事情就是麻烦一些。后面有解决办法还算简单。

      3、拦截/*,这是一个错误的方式,请求可以走到Action中,但转到jsp时再次被拦截,不能访问到jsp。
  • 相关阅读:
    一个生成随机颜色的js函数
    实战vue代码
    vue练习用免费开源api大全
    vue-resource插件使用
    专题 查找与排序的Java代码实现(一)
    十字链表的画法
    20162322 朱娅霖 作业009 堆和优先队列
    20162322 朱娅霖 作业008 二叉查找树
    20162322 朱娅霖 实验报告二 树
    20162322 朱娅霖 作业007 树
  • 原文地址:https://www.cnblogs.com/lonely-buffoon/p/5582042.html
Copyright © 2020-2023  润新知