springMVC下的param-name

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC下的param-name相关的知识,希望对你有一定的参考价值。

<param-name>contextConfigLocation</param-name>我想问下MVC的配置文件里的这句话,是干什么作用的?

参考技术A 这里是配置你的spring的配置文件,在tomcat启动的时候,会通过servlet的初始化去加载你的配置文件 。 参考技术B 系统初始化参数设置,<param-name>contextConfigLocation</param-name>就是初始化参数名,就是系统初始化是要加载spring-mvc.xml文件,并解析。 参考技术C 1234567891011121314151617<!-- springMVC前端控制器 希望应用启动的时候核心控制器同时创建对象. --><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:config/spring/*-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>
↑是web.xml中设置的。

之后你还要创建一个<selvlet-name>-servlet.xml的配置文件,前面的那个servletname就是你在web.xml中配置的那个,我上面的这种配置方法我就要创建一个叫做SpringMVC-servlet.xml的配置文件
123456789101112131415161718192021222324252627282930313233343536373839404142<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd " > <!-- 映射器 ,SpringMVC框架使用映射器,适配器,视图解析器都是通过类型查询对象的. 最简单的映射器:BeanNameUrlHandlerMapping 使用Bean的名称和url地址进行一对一映射. --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 适配器 使用简单控制器适配逻辑.SimpleControllerHandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 视图解析器 使用内部资源视图解析器 处理内部资源请求转发,最擅长的解析器. 定义JSP页面的时候,最常用的非JSP默认标签组有:JSTL标签库. 建议解析视图页面的时候,最好能够解析JSTL的标签库 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean> <!--配置自定义控制器 SpringMVC-使用配置文件形式定义代码,请求地址的后缀名不会被前端控制器过滤掉 当前对性爱那个处理请求地址为:/first.mvc 前端控制器过滤请求为: *.mvc 经过前端控制器过滤后的路径地址为:/first --> <bean name="/first.mvc" class="controller.FirstController"></bean> <bean name="/second.mvc" class="controller.SecondController"></bean> </beans>

SpringMvc父子容器

 
使用监听器listener来加载spring的配置文件:如下

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-beans.xml</param-value>
</context-param>

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

 

Spring会创建一个WebApplicationContext的上下文,称为父上下文(父容器),key是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,保存在ServletContext(Servlet上下文全局)中

可以使用Spring提供的工具类取出上下文对象:

WebApplicationContextUtils.getWebApplicationContext(ServletContext);

DispatcherServlet是一个Servlet,可以配置多个,每个DispatcherServlet有一个自己的上下文对象(WebApplictionContext)

称为子上下文(子容器),子上下文可以访问父上下文中的内容,但是父上下文不能范文子上下文中的内容,他也保存在ServletContext中

key是:"org.springframework.web.serrvlet.FrameworkServlet.CONTEXT"+Servlet名字,

当一个Request对象产生是会把这个自上下文对象(WebApplicationContext)保存在Request对象中,

key是DispatcherServlet.class.getName()+"CONTEXT";

可以通过使用工具类获取上下文:RequestContextUtils.getWebApplicationContext(request);

 

说明:spring并没有限制我们,必须使用父子上下文,我们可以自己决定如何时候如何使用

方案一:使用传统的父子容器的概念:分为controler,service,dao,这些层,service负者业务逻辑并管理事物,dao负责持久

方案二:小项目情况,不需要service,dao,将事物的控制加到controller中,只用springmvc的子容器,web.xml文件中不使用

    listener监听器来加载spring的配置文件,只使用DispatcherServlet来加载spring的配置,不需要父容器,只使用

    DispatcherServlet,事情就简单了,什么麻烦事都没有。(不推荐:只是为了说明sping的容器)

 

以上是关于springMVC下的param-name的主要内容,如果未能解决你的问题,请参考以下文章

Springmvc下的jquery,ajax和json的等技术的运用

springMVC下的param-name

springboot下的Filter过滤器;springmvc的HandlerInterceptorAdapter拦截器

springmvc框架下的国内地区级联效果(共享一下给学习的小伙伴)

springmvc

框架原理和入门配置