Spring MVC 的 研发之路 (二)
二、web.xml的简单配置介绍1
一、
<span style="font-size:18px;"><context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/spring/application-datasource.xml
</param-value>
</context-param></span></span>
该元素用来声明应用范围内的上下文初始化參数(整个web项目中)比如对数据库连接池的配置等
param-name 设定上下文的參数名称。名称必须唯一
param-value 设定的參数名称的值 指定响应的xml文件名称,假设有多个文件能够写在一起用“,”分隔
能够採用通配符形式applicationContext-*.xml 能够将此类开头的文件所有加载
1、能够直接将之放到/web-inf下
2、放到classpath下 classpath:/spring/application-datasource.xml
如:
<span style="font-size:18px;"><!-- Context Configuration locations for Spring XML files -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param> </span><span style="font-size: 14px;">
</span></span>
以此供web容器载入
二、
<span style="font-size:18px;"><listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener></span></span>
listener标签是用于监听的,ContextLoaderListener实现了ServletContextListener接口,能够监听全部的servlet、session、request等接口。
ServletContext:每一个web应用都有一个servletContext与之相关.servletContext对象在应用启动的时候被创建,在应用关闭的时候被销毁。
ervletContextListener: 使用listener接口。开发人员可以在为client请求提供服务之前向ServletContext中加入随意的对象。
这个对象在ServletContext启动的时候被初始化,然后在ServletContext整个执行期间都是可见的。
该接口拥有两个方法例如以下所看到的:
三、
<filter>
<filter-name></filter-name>
<filter-class></filter-class>
</filter>
<filter-name></filter-name>
<filter-class></filter-class>
</filter>
<span style="font-size:18px;"> <filter>
<filter-name>Character Encoding</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> </filter> <filter-mapping>
<filter-name>Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></span><span style="font-size: 14px;">
</span>
以上是防止乱码
<span style="font-size:18px;"><filter>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
<init-param>
<param-name>entityManagerFactoryBeanName</param-name>
<param-value>entityManagerFactory</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></span><span style="font-size: 14px;">
</span>
在Java Web项目中使用Hibernate常常会遇到LazyInitializationException。
这是由于controller和model层(java代码)将通过JPA的一些启用了延迟载入功能的领域(如用getRefrence()方法或者在关联关系中採用fetch=FetchType.LAZY)返回给view层(jsp代码)的时候,由于载入领域对象的JPA Session已经关闭,导致这些延迟载入的数据訪问异常。
这时就能够使用OpenEntityManagerInViewFilter来将一个JPAsession与一次完整的请求过程相应的线程相绑定。
假设没使用OpenEntityManagerInViewFilter,session会在service.find()方法后就被关闭。用了以后session在整个view层结束后才关闭。
四、
<span style="font-size:18px;"><servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping></span><span style="font-size: 14px;">
</span>
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中訪问点。并且负责职责的分派。并且与Spring IoC容器无缝集成,从而能够获得Spring的全部优点。
详细请參考第二章的图2-1。
DispatcherServlet主要用作职责调度工作。本身主要用于控制流程,主要职责例如以下:
1、文件上传解析,假设请求类型是multipart将通过MultipartResolver进行文件上传解析;
2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包含一个处理器、多个HandlerInterceptor拦截器)。
3、 通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);
4、通过ViewResolver解析逻辑视图名到详细视图实现;
5、本地化解析;
6、渲染详细的视图等;
7、假设运行过程中遇到异常将交给HandlerExceptionResolver来解析。
load-on-startup:表示启动容器时初始化该Servlet;
url-pattern:表示哪些请求交给Spring WebMVC处理, “/” 是用来定义默认servlet映射的。也能够如“*.html”表示拦截全部以html为扩展名的请求。
DispatcherServlet默认使用WebApplicationContext作为上下文。Spring默认配置文件为“/WEB-INF/[servlet名字]-servlet.xml”。
以上是看了众多关于web.xml文章中整理出来的easy理解的部分。
Spring MVC 的 研发之路 (二)的更多相关文章
- Spring MVC 使用介绍(十二)控制器返回结果统一处理
一.概述 在为前端提供http接口时,通常返回的数据需要统一的json格式,如包含错误码和错误信息等字段. 该功能的实现有四种可能的方式: AOP 利用环绕通知,对包含@RequestMapping注 ...
- Spring MVC和Struts2的比较(二)
1.Spring MVC的controller+command object模式比Struts2的Action模式更安全一些.而在Struts2中,自动数据绑定发生在Action对象上.这样,在Act ...
- spring mvc DispatcherServlet详解之二---request通过Controller获取ModelAndView过程
整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet通过request获取控制器Controller的过程,现在来讲解DispatcherServletDisp ...
- 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)
前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后 ...
- spring MVC之注解开发控制器(二)
开发表单控制器 在传统的Spring MVC开发方法中,是通过扩展SimpleFormController类来创建简单的表单控制器.这样就定义了基本的表单处理流程,并允许通过覆盖几个生命周期方法来定制 ...
- 【FreeMarker】Spring MVC与FreeMarker整合(二)
前一篇介绍了FreeMarker的基本使用,本例介绍Spring MVC与FreeMarker整合 不熟悉项目搭建,可参考 [FreeMarker]FreeMarker快速入门(一) 整合 1.新建S ...
- Spring MVC源码分析(二):SpringMVC的DispatcherServlet的设计与实现
概述 DispatcherServlet是SpringMVC的一个前端控制器,是MVC架构中的C,即controller的实现,用于拦截这个web应用的所有请求,具体为在web.xml中配置这个s ...
- Spring MVC 的 研发之路
翻译器:intellij idea 一个.创建spring mvcproject 一个. 二. 三. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcX ...
- Spring MVC基本配置和实践(二)
1. springmvc: 是一个表现层框架,作用是从请求中接收传入的参数,将处理后的结果数据返回给页面展示 2. ssm整合: 1)Dao层 pojo.mapper接口.mapper映射文件(使用逆 ...
随机推荐
- v4l2程序实例
#include <stdio.h> #include <string.h> #include <errno.h> #include <stdlib.h> ...
- word上怎么打钩
原文:http://www.wordlm.com/html/2291.html 有时我们在Word中制作一份特殊的表格时,可能会用到这样一些特殊符号,“在方框里打钩”或打叉.这些符号虽看起来简单不起眼 ...
- b.WHERE使用中多行子查询(适用于in,any,all条件)
b.多行子查询(适用于in,any,all条件) //查询与SCOTT和MARTIN在同一个部门的同事的编号和名称 select empno,ename from emp where ...
- 记一次在BroadcastReceiver或Service里弹窗的“完美”实践
事情是这样的,目前在做一个医疗项目,需要定时在某个时间段比如午休时间和晚上让我们的App休眠,那么这个时候在休眠时间段如果用户按了电源键点亮屏幕了,我们就需要弹出一个全屏的窗口去做一个人性化的提示,“ ...
- 怎样用批处理来执行多个exe文件
怎样用批处理来运行多个exe文件 @echo off start *****.exe start *****.exe start *****.exe start *****.exe 接着我们就能够运行 ...
- simple_strtoul()分析
此函数有以下几点值得注意:1.第一个参数中的const.一般在函数的形参中,如果我们只是希望调用者使用该参数,而不会去改变该参数内容(一般是指针指向的内容),则可以声明为const.2.第二个参数.C ...
- luogu 1558 色板游戏
写这篇博客不是为了总结我的算法,而是为了纪念让我爆零的套路..... 色板游戏 色板长度为\(L\),\(L\)是一个正整数,所以我们可以均匀地将它划分成\(L\)块\(1\)厘米长的小方格.并从左到 ...
- Android之通过HttpURLConnection.getResponseCode状态码抛出异常的问题以及解决方法
1.最近,在学习解析json数据的时候遇到一个错误信息,错误信息如下图所示: 发现解析出来的数据为空,错误信息如上图所示,发现程序中的HttpUtils工具类的22行出现了错误和MainActiv ...
- 【原创】Apache服务器500错误失去响应的问题解决
某生产网站部署在Apache上,使用tomcat集群,偶尔网站失去响应,查看首页发现无法打开,页面假死,出现过多次,查看apache的日志,发现经常出现以下提示: [Fri Dec :: ] [war ...
- 【原创】关于not in的一些事情
早上到公司,收到一条cocall消息,是某哥们遇到的疑惑,可能很多新手并不知情: 请教个问题 我执行 . select * from t_htgl_htpswj t where t.c_wjmc = ...