口碑好的免费网站建设,企业营销型网站建设方案,沧州网站排名优化,wordpress如何设置导航ApplicationContext应用上下文获取方式
应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的#xff0c;但是每次从容器中获 得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) #xff0c;这样的弊端是配置文件加载多次…ApplicationContext应用上下文获取方式
应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的但是每次从容器中获 得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) 这样的弊端是配置文件加载多次 应用上下文对象创建多次。
在Web项目中可以使用ServletContextListener监听Web应用的启动我们可以在Web应用启动时就加载 Spring的配置文件创建应用上下文对象ApplicationContext在将其存储到最大的域servletContext域中这样 就可以在任意位置从域中获得应用上下文ApplicationContext对象了。
Spring提供获取应用上下文的工具
Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装该监听器内 部加载Spring配置文件创建应用上下文对象并存储到ServletContext域中提供了一个客户端工具 WebApplicationContextUtils供使用者获得应用上下文对象。 所以我们需要做的只有两件事 ①在web.xml中配置ContextLoaderListener监听器导入spring-web坐标
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener
/web-app②使用WebApplicationContextUtils获得应用上下文对象ApplicationContext
SpringMVC开发步骤
①导入SpringMVC相关坐标 !--SpringMVC坐标--dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactIdversion5.0.5.RELEASE/version/dependency !--Servlet坐标-- dependency groupIdjavax.servlet/groupId artifactIdservlet-api/artifactId version2.5/version /dependency!--Jsp坐标--dependency groupIdjavax.servlet.jsp/groupIdartifactIdjsp-api/artifactId version2.0/version/dependency②配置SpringMVC核心控制器DispathcerServlet
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0
!-- context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener--servletservlet-namedispatcher/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:spring-mvc.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-namedispatcher/servlet-nameurl-pattern//url-pattern/servlet-mapping
/web-app③创建Controller类和视图页面 ④使用注解配置Controller类中业务方法的映射地址 Controller(controller)
public class QuickController {public QuickController() {System.out.println(aa);}RequestMapping(/qq)public String method(){System.out.println(controller);return success.jsp;}
}
⑤配置SpringMVC核心文件 spring-mvc.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
context:component-scan base-packagecom.controller /mvc:annotation-driven /
/beans⑥客户端发起请求测试
SpringMVC的执行流程 ①用户发送请求至前端控制器DispatcherServlet。 ②DispatcherServlet收到请求调用HandlerMapping处理器映射器。 ③处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)生成处理器对象及处理器拦截器(如果有则 生成)一并返回给DispatcherServlet。 ④DispatcherServlet调用HandlerAdapter处理器适配器。 ⑤HandlerAdapter经过适配调用具体的处理器(Controller也叫后端控制器)。 ⑥Controller执行完成返回ModelAndView。 ⑦HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。 ⑧DispatcherServlet将ModelAndView传给ViewReslover视图解析器。 ⑨ViewReslover解析后返回具体View。 ⑩DispatcherServlet根据View进行渲染视图即将模型数据填充至视图中。DispatcherServlet响应用户
SpringMVC组件解析
前端控制器DispatcherServlet 用户请求到达前端控制器它就相当于 MVC 模式中的 CDispatcherServlet 是整个流程控制的中心由它调用其它组件处理用户的请求DispatcherServlet 的存在降低了组件之间的耦合性。处理器映射器HandlerMapping HandlerMapping 负责根据用户请求找到 Handler 即处理器SpringMVC 提供了不同的映射器实现不同的映射方式例如配置文件方式实现接口方式注解方式等。处理器适配器HandlerAdapter 通过 HandlerAdapter 对处理器进行执行这是适配器模式的应用通过扩展适配器可以对更多类型的处理器进行执行。处理器Handler 它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由 Handler 对具体的用户请求进行处理。视图解析器View Resolver View Resolver 负责将处理结果生成 View 视图View Resolver 首先根据逻辑视图名解析成物理视图名即具体 的页面地址再生成 View 视图对象最后对 View 进行渲染将处理结果通过页面展示给用户。视图View SpringMVC 框架提供了很多的 View 视图类型的支持包括jstlView、freemarkerView、pdfView等。最常用的 视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户需要由程序员根据 业务需求开发具体的页面
3.3 SpringMVC注解解析
RequestMapping
作用用于建立请求 URL 和处理请求方法之间的对应关系
位置
类上请求URL 的第一级访问目录。此处不写的话就相当于应用的根目录
方法上请求 URL 的第二级访问目录与类上的使用ReqquestMapping标注的一级目录一起组成访问虚拟路径
属性
value用于指定请求的URL。它和path属性的作用是一样的
method用于指定请求的方式
params用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样
例如
params {“accountName”}表示请求参数必须有accountName
params {“moeny!100”}表示请求参数中money不能是10
Controller(controller)
public class QuickController {public QuickController() {System.out.println(aa);}RequestMapping(value {/qq},method {RequestMethod.GET},params {name})public String method(){System.out.println(controller);return success.jsp;}
}
3.4 SpringMVC的XML配置解析
SpringMVC有默认组件配置默认组件都是DispatcherServlet.properties配置文件中配置的该配置文件地址org/springframework/web/servlet/DispatcherServlet.properties该文件中配置了默认的视图解析器如下
org.springframework.web.servlet.ViewResolverorg.springframework.web.servlet.view.InternalResourceViewResolver翻看该解析器源码可以看到该解析器的默认设置如下
REDIRECT_URL_PREFIX redirect: --重定向前缀
FORWARD_URL_PREFIX forward: --转发前缀默认值
prefix ; --视图名称前缀
suffix ; --视图名称后缀视图解析器
我们可以通过属性注入的方式修改视图的的前后缀
!--配置内部资源视图解析器--
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
context:component-scan base-packagecom.controller /mvc:annotation-driven /bean idview classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty namesuffix value.jsp/property nameprefix value/WEB-INF///bean
/beans