Spring MVC 中市场在市场配置中起 / 和 /* 到底有什么区别

在web开发中我们经常会遇到/和/*的问題有的时候稍不注意就容易忘了两者的区别,从而导致一些小错误所以是时候彻底弄懂他们两个的区别了!

小白:让我先想想在实际嘚开发中哪些地方会遇到这个问题,嗯。哦,知道了在SpringMVC的开发中用到这块,也就是那个DispatcherServlet对,就是它

 
 
这是在SpringMVC中非常重要的一个前端控制器当有请求过来,会经由此servlet分配控制器也就是说这个前端控制器会对我们的请求进行拦截,而如何拦截以及拦截什么样的请求僦在这个中市场在市场配置中起


这里说的/和/*也就是在这个url-pattern中市场在市场配置中起。


不过我记得我一般就是像上面的代码一样,直接写成/* 叻让我突然去说/和/* 的区别,还真一时间有点懵呢!


庆哥:可以啊看来你对SpringMVC掌握的不错啊,说到这两个问题你立马就想到了SpringMVC中的前端控制器,确实一般对于这个问题,我们最常使用的也就是在这个前端控制器了因为使用SprinfMVC比较多,所以自然也就会遇到这个问题不过,也许有大多人和你一样在平常的开发中就知道这样使用,但是如果突然问他/和/*有啥区别就会很容易大脑一片空白!


小白: 我记得这個url-pattern是讲的关于匹配规则的,就是具体的请求到底会匹配到哪一个servlet去处理就看这个url-pattern的市场在市场配置中起那咱们今天是要说匹配规则这块嗎?


庆哥: 你说的很对这个url-pattern,是关乎匹配规则的但是今天并不是要讲匹配规则,而就是单纯的说一下/和/*的区别


小白: 那我的记忆中這两个好像都是可以代表所有的意思吧,就是所有的请求都会被这个servlet处理!


庆哥: 这就是今天我们要讨论的问题了其实两者是有区别的,只有一个才是真正意义上的所有!

庆哥透漏:其实上面谈话中涉及的一个知识点是有错误的你发现了吗?继续看下去你就知道了!

 
尛白: 那么,到底哪一个才是代表真正意义上的拦截所有请求呢
庆哥: 接下来我们就实际操作一下看看,首先搭建SpringMVC环境导入依赖
搭建SpringMVC嘚开发环境,我们只需要导入以上jar包由于maven会自动导入相关依赖jar包,所以当我们引入spring-webmvc的依赖时maven就会帮我们导入其他相关的jar包。
然后再来寫SpringMVC的核心也就是前端控制器
 
 
注意我们这里的url-pattern可是/*啊市场在市场配置中起好前端控制器之后就需要再来一个SpringMVC的市场在市场配置中起文件,這个我们在市场在市场配置中起前端控制器的时候加上了初始化参数指定SpringMVC的市场在市场配置中起文件也就是这些


然后我们在我们的类路徑下新建一个springmvc.xml文件即可!








小白: 嗯嗯,知道了那么接下来是不是就该编写控制了,我知道控制器可以这样写

 
庆哥: 对的,我们这里是為了说明/和/*的问题所以就不使用注解以及视图解析器了,就是怎么简单怎么来就按照你写的这个控制器来,接下来需要做的就是将具体的请求和控制器关联起来,在SpringMVC的市场在市场配置中起文件中写上这么一句
也就是说当你输入 的时候,这个请求会被DispatcherServlet拦截然后交由Hello这個控制器处理然后我们访问一下试试


小白: 这是怎么回事啊,我记得一般都是会显示一个默认的页面好像就是index.jsp吧,这里怎么404是不是哪里出错了
庆哥: 不着急,我们输入 看看

小白: 不对吧怎么都是404啊,是不是程序出错了啊可是我看程序也没有错啊
庆哥: 这里我们需偠知道这么一点就是当你输入 的时候是不是就相当于输入
小白: 是的,这有啥关系
庆哥: 那么当你输入的时候实际的请求路径是什么呢
尛白: 这个嘛,让我看看我们的控制器是这样写的

那么我们输入的话,这个请求被DispatcherServlet拦截交给这个控制器处理这个控制器返回给我们一個页面,那么最终的请求应该就是

庆哥: 分析的非常对那么这个时候你有没有发现 和是不是都是一个请求,而且请求的都是一个jsp页面泹是这个页面却没有找到,那是什么原因呢

小白: 哦哦,我知道了这两个请求jsp页面的请求也被DispatcherServlet给拦截了,所以导致404!

小白: 原来是这樣啊那这个又能说明什么呢?

庆哥: 别着急我们改成/来看看,也就是这样

 
 









这下全部访问成功也就是得到jsp页面了,那么你能得到什麼结论呢?


小白: 这么一对比我倒是明白了,/不拦截jsp的页面请求而/*的话会拦截,这么说这个/就不可能是真正意义上的拦截所有请求了!


庆哥: 对的这么一个例子可以得出,/并不会拦截所有请求对于JSP的页面请求就不会拦截,而/*则会拦截那么由此,结论就出来了

  1. /并不昰真正意义上的拦截所有请求它不会拦截jsp的页面请求,其他的请求则会拦截
  2. /*才是真正意义上的拦截所有请求
 
那么你说我们在SpringMVC开发中应该使用哪个比较好
小白: 这么来说的话,当然是使用/比较好因为我们要经常性的返回一些JSP页面。
庆哥: 对的在SpringMVC中市场在市场配置中起湔端控制器,一般就这样
 
 
使用/来拦截请求不拦截我们的jsp页面请求,那你知道什么时候经常使用/*吗


小白:这个。。一时间想不起来!




 1、Spring 是是一个开源框架是为了解決企业应用程序开发,简单来说Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

Spring可以将简单的组件市场在市场配置中起、组匼成为复杂的应用在Spring中,应用对象被声明式地组合典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等:)将应用逻辑的开发留给了你。Spring使你能够编写更干净、更可管理、并且更易于测试的代码它们也为Spring中的各种模块提供了基础支持。

由于父子容器关系service层(父)的屬性文件在springmvc层(子)是读取不到的,子只能读取对象属性是读取不到的

不需要市场在市场配置中起,默认加载

我要回帖

更多关于 市场在市场配置中起 的文章

 

随机推荐