springMVC配置文件详解
web.xml的配置web.xml应该是整个项目最重要的配置文件了,不过servlet3.0中已经支持注解配置方式了。
在servlet3.0以前每个servlet必须要在web.xml中配置servlet及其映射关系。
但是在spring框架中就不用了,因为Spring中是依赖注入(Dependency Injection)的也叫控制反转(Inversion of Control)。
但是也要配置一个重要的servlet,就是前端控制器(DispatcherServlet)。
配置方式与普通的servlet基本相似。
配置内容如下:<!-- 配置前端控制器--><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!-- ContextconfigLocation配置springmvc加载的配置文件适配器、处理映射器等--><param-name>contextConfigLocation</param-name><param-value>WEB-INF/classes/spring/springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>spring</servlet-name><!-- 1、.action访问以.action结尾的由DispatcherServlet进行解析2、/,所有访问都由DispatcherServlet进行解析--><url-pattern>/</url-pattern></servlet-mapping>这里需要注意,springmvc.xml是spring配置文件,将在后面讨论。
在<servlet-mapping>中url如果是.action,前端控制器就只会拦截以.action结尾的请求,并不会理会静态的文件。
对静态页面的控制就要通过其他的手段。
以/作为url的话就会拦截所有的请求,包括静态页面的请求。
这样的话就可以拦截任何想要处理的请求,但是有一个问题。
如果拦截了所有的请求,如果不在拦截器中做出相应的处理那么所有静态的js、css以及页面中用到的图片就会访问不到造成页面无法正常显示。
但这可以通过静态资源的配置来解决这个问题。
后面会提到。
配置spring容器:<context-param><param-name>contextConfigLocation</param-name><param-value>WEB-INF/classes/spring/applicationContext-*.xml</param-value></context-param>其中applicationContext-*.xml包含3个配置文件,是springIoC容器的具体配置。
后面会提到。
配置一个监听器:<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>web.xml的完整配置是这样的:<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name><!-- 404错误拦截--><error-page><error-code>404</error-code><location>/error404.jsp</location></error-page><!-- 500错误拦截--><error-page><error-code>500</error-code><location>/error500.jsp</location></error-page><!-- 加载spring容器--><context-param><param-name>contextConfigLocation</param-name><param-value>WEB-INF/classes/spring/applicationContext-*.xml</param-value> </context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><!-- 配置前端控制器--><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!-- ContextconfigLocation配置springmvc加载的配置文件适配器、处理映射器等--><param-name>contextConfigLocation</param-name><param-value>WEB-INF/classes/spring/springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>spring</servlet-name><!-- 1、.action访问以.action结尾的由DispatcherServlet进行解析2、/,所有访问都由DispatcherServlet进行解析--><url-pattern>/</url-pattern></servlet-mapping><!-- 解决post乱码问题的过滤器--><filter><filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>welcome.jsp</welcome-file></welcome-file-list></web-app>看到配置文件中多了两块内容,一个是error page是用来友好的处理错误的,可以使用错误代码来区别并跳转到相应的处理页面。
这段配置代码最好放到最前面,在前端控制器拦截之前处理。
还有一块内容是一个解决post乱码问题的过滤器,拦截post请求并编码为utf8。
springmvc.xml的配置视图解析器的配置:<!-- 配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 使用前缀和后缀--><property name="prefix" value="/"></property><property name="suffix" value=".jsp"></property></bean>在Controller中设置视图名的时候会自动加上前缀和后缀。
Controller的配置自动扫描方式,扫描包下面所有的Controller,可以使用注解来指定访问路径。
<!-- 使用组件扫描的方式可以一次扫描多个Controller --><context:component-scan base-package="com.wxisme.ssm.controller">也可以使用单个的配置方式,需要指定Controller的全限定名。
SpringMVC文件上传大小和类型限制以及超大文件上传bug问题
SpringMVC⽂件上传⼤⼩和类型限制以及超⼤⽂件上传bug问题在上⼀篇⽂章中,主要介绍了Spirng MVC环境下的正常情况下⽂件上传功能实现。
在实际开发的时候,还会涉及到上传⽂件⼤⼩和类型的限制,接下来就会对Spirng MVC环境下⽂件上传⼤⼩和类型的限制进⾏介绍,还会讲解到⽂件上传⼤⼩tomcat服务器bug问题及解决⽅案。
⼀、⽂件上传⼤⼩限制这⾥还是接着上篇⽂章先介绍Spring MVC下的⽂件上传⼤⼩限制,⽂件上传⼤⼩的限制在springmvc-config.xml中配置⽂件解析器CommonsMultipartResolver时即可配置,⽰例如下:<!-- 配置⽂件上传类型解析器 multipartResolver--><bean id="multipartResolver" class="monsMultipartResolver"><!-- 设置上传⽂件最⼤尺⼨,单位为B --><property name="maxUploadSize" value="5242880" /></bean>关于Spring MVC中⽂件上传⼤⼩的限制就这么简单,问题是Spring MVC并没有像Struts2那样的配置,如果单纯配置⼀个限制⽂件上传⼤⼩的配置,当超过上传限制后就会出现异常:所以当在⽂件解析器中配置了⽂件⼤⼩的限制后,必须将抛出的MaxUploadSizeExceededException(上传⽂件过⼤异常)进⾏接收并跳转。
关于异常接收,在Spring MVC官⽅⽂档中介绍了有3种⽅法,这⾥主要介绍其中2种:(1)直接在配置⽂件spring-config.xml中使⽤Spring MVC提供的SimpleMappingExceptionResolver(异常解析映射器)来接收异常信息:<!-- 1.在⽂件上传解析时发现异常,此时还没有进⼊到Controller⽅法中 --><bean id="exceptionResolver" class= "org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><property name="exceptionMappings"><props><!-- 遇到MaxUploadSizeExceededException异常时,跳转到error.jsp页⾯ --><prop key= "org.springframework.web.multipart.MaxUploadSizeExceededException">/error </prop></props></property></bean>这样当再出现⽂件上传⼤⼩的异常时,配置⽂件会⾃动捕获异常并进⾏匹配,匹配到对应的MaxUploadSizeExceededException异常,就跳转到指定的error.jsp错误页⾯。
最全最经典spring_mvc教程
spring mvc学习教程(一)-入门实例引言1.MVC:Model-View-Control框架性质的C层要完成的主要工作:封装web请求为一个数据对象、调用业务逻辑层来处理数据对象、返回处理数据结果及相应的视图给用户。
2.简要概述springmvcSpring C 层框架的核心是DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即使用了一种被称为Front Controller 的模式(后面对此模式有简要说明)。
Spring 的C 层框架使用了后端控制器来、映射处理器和视图解析器来共同完成C 层框架的主要工作。
并且spring 的C 层框架还真正地把业务层处理的数据结果和相应的视图拼成一个对象,即我们后面会经常用到的ModelAndView 对象。
一、入门实例1. 搭建环境在spring的官方API文档中,给出所有包的作用概述,现列举常用的包及相关作用:org.springframework.aop-3.0.5.RELEASE.jar:与Aop编程相关的包org.springframework.beans-3.0.5.RELEASE.jar:提供了简捷操作bean的接口org.springframework.context-3.0.5.RELEASE.jar:构建在beans包基础上,用来处理资源文件及国际化。
org.springframework.core-3.0.5.RELEASE.jar:spring核心包org.springframework.web-3.0.5.RELEASE.jar:web核心包,提供了web层接口org.springframework.web.servlet-3.0.5.RELEASE.jar:web 层的一个具体实包,DispatcherServlet也位于此包中。
后文全部在spring3.0 版本中进行,为了方便,建议在搭建环境中导入spring3.0 的所有jar 包(所有jar 包位于dist 目录下)。
Spring-Mvc-ppt课件
BeanNameUrlHandlerMapping
dispatcher-servlet.xml
<bean class="org.springframework.web.servlet. handler.BeanNameUrlHandlerMapping"/>
Jsp model 2架构
Model 2采用面向对象技术实现MVC模式 从而扩展
JSP/Servlet的模式。 Model2是MVC在Web上的应用。
一个Model 2规范实现的Web框 架
一个Model 2规范实现的Web框 架
视图层采用JSP实现;控制层采用Servlet实现, 整个框架采用同一个Servlet,以实现请求的中转; 模型层采用Java实现,主要决定用来做什么;在模型 层后添加了一个DAO,目的是将决定做什么和具体怎 么做分开。
<property name="mappings"> <value> /simple.htm=simpleController /test*=testController </value>
</property> </bean> …
ControllerClassNameHandlerMapping
• 支持惯例优先原则 • 在它的应用上下文中找出所有不同的处理
JSP表单标签库:在Spring2.0中引入的表单标签库,使得在JSP中编写 表单 更加容易。
Spring Bean的生命周期可以被限制在当前的HTTP Request或者HTTP Session。
Java注解机制之Spring自动装配实现原理详解
Java注解机制之Spring⾃动装配实现原理详解Java中使⽤注解的情况主要在SpringMVC(Spring Boot等),注解实际上相当于⼀种标记语⾔,它允许你在运⾏时动态地对拥有该标记的成员进⾏操作。
注意:spring框架默认不⽀持⾃动装配的,要想使⽤⾃动装配需要修改spring配置⽂件中<bean>标签的autowire属性。
⾃动装配属性有6个值可选,分别代表不同的含义:byName ->从Spring环境中获取⽬标对象时,⽬标对象中的属性会根据名称在整个Spring环境中查找<bean>标签的id属性值。
如果有相同的,那么获取这个对象,实现关联。
整个Spring环境:表⽰所有的spring配置⽂件中查找,那么id不能有重复的。
byType ->从Spring环境中获取⽬标对象时,⽬标对象中的属性会根据类型在整个spring环境中查找<bean>标签的class属性值。
如果有相同的,那么获取这个对象,实现关联。
缺点:如果存在多个相同类型的bean对象,会出错;如果属性为单⼀类型的数据,那么查找到多个关联对象会发⽣错误;如果属性为数组或集合(泛型)类型,那么查找到多个关联对象不会发⽣异常。
constructor ->使⽤构造⽅法完成对象注⼊,其实也是根据构造⽅法的参数类型进⾏对象查找,相当于采⽤byType的⽅式。
autodetect ->⾃动选择:如果对象没有⽆参数的构造⽅法,那么⾃动选择constructor的⾃动装配⽅式进⾏构造注⼊。
如果对象含有⽆参数的构造⽅法,那么⾃动选择byType的⾃动装配⽅式进⾏setter注⼊。
no ->不⽀持⾃动装配功能default ->表⽰默认采⽤上⼀级标签的⾃动装配的取值。
如果存在多个配置⽂件的话,那么每⼀个配置⽂件的⾃动装配⽅式都是独⽴的。
注解使⽤需要三个条件包括注解声明,使⽤注解的元素,操作使⽤注解元素的代码。
Spring Mvc 课件
可适配、非侵入:可以根据不同的应用场景,选择合适 的控制器子类 (simple型、command型、form型、wizard 型、multi-action型或者自定义),而不是从单一控制器 (比如Action/ActionForm)继承。
业务模型还有一个很重要的模型那就是数据模型。数据模型主 要指实体对象的数据保存(持续化)。比如将一张订单保存到数据 库,从数据库获取订单。我们可以将这个模型单独列出,所有有关 数据库的操作只限制在该模型中。
第六页,共62页。
MVC设计(shèjì)思想
控制(Controller)可以理解为从用户接收请求, 将模型与 视图匹配在一起,共同完成用户的请求。划分控制层的作用也 很明显,它清楚地告诉你,它就是一个(yī ɡè)分发器,选择 什么样的模型,选择什么样的视图,可以完成什么样的用户请 求。控制层并不做任何的数据处理。
❖ 如果不作其它配置,会加载默认(mòrèn)组件
第二十一页,共62页。
在web.xml配DispatcherServlet
web.xml
…
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
第十五页,共62页。
Spring MVC 特点(tèdiǎn)
可定制的本地化和主题(theme)解析:支持在JSP中可选择 地使用Spring标签库、支持JSTL、支持Velocity(不需要 (xūyào)额外的中间层)等等。
Java EE企业级应用开发(SSM) (11)
14
14
案例步骤详解
1. 导入案例所需要的坐标
Spring框架坐标
Spring JDBC坐标
mysql数据库驱动坐 标
MyBatis框架坐 标
MyBatis整合Spring坐标
单元测试坐标
15
案例步骤详解
1. 导入案例所需要的坐标
SpringMVC框架坐 标
jackson坐标
16
案例步骤详解
2. 创建User实体类
23
23
案例步骤详解
9. 编写SpringMVC核心配置文件spring-mvc.xml
24
24
案例步骤详解
10. 打开浏览器,进行测试
直接通过浏览器访问该路径 后台响应回来的json格式的数据
【作业4】使用三大框架25整合实现账2户5 的CRUD
接下来,咱们一起来看一看,通过一个案例,来学会Spring + MyBatis框架的 整合。
3
案例实现步骤
【课程案例】1101:MyBatis和Spring整合
实现步骤: 1. 导入案例所需要的坐标 2. 创建User实体类 3. 创建UserMapper接口 4. 创建UserService接口和UserServiceImpl实现类 5. 编写映射文件UserMapper.xml 6. 编写Spring核心配置文件applicationContext.xml 7. 编写测试类UserController,进行测试
互联网服务器端开发技术【ch03】Spring 培训教学课件
Spring IoC容器
二、Bean的实例化
2.使用静态工厂方法创建Bean 静态工厂方法创建Bean实例时,必须指定class 属性,但是这里的class 属性并不是 指定Bean实例的实现类,而是静态工厂类。Spring需要根据静态工厂类的静态方法来创 建Bean实例,除此之外,还需要使用factory-method 属性来指定静态工厂方法名。 Spring 便会调用.静态工厂方法返回Bean的一个实例,使用静态工厂方法创建Bean实例 时,Spring 先解析配置文件,并根据配置文件指定的信息,然后通过反射调用静态工厂 类的静态工厂方法,将该静态工厂方法的返回值作为Bean的实例。
04
面向切面编程
面向切面编程
一、AOP概念
面向切面编程在扩展功能时不修改源代码,只是将功能代码从业务逻辑代码中分离 出来。AOP的主要功能是日志记录、性能统计、安全控制、事务处理、异常处理等,其 主要意图是将日志记录、性能统计等代码从业务逻辑代码中划分出来。通过对这些行为 的分离,可以将其独立到非指导业务逻辑的方法中,进而在改变这些行为时不会影响业 务逻辑的代码。
Spring IoC容器
一、Spring容器
以下是Spring的主 要接口设计关系,如图 3-2所示。
Spring IoC容器
二、Bean的实例化
Spring框架中创建Bean的方式通常有以下三种方式: ●调用构造器(默认无参)创建Bean实例。 ●靡使用静态工厂方法创建Bean。 ●使用实例工厂方法创建Bean.
Spring IoC容器
三、IoC容器的概念及详解IoC容器
1.容器实现 (1) XmlBeanFactory: BeanFactory 实现,提供基本的IoC容器功能,可以从 classpath或文件系统等渠道获取资源; (2) ClassPathXmlApplicationContext: ApplicationContext 实现,可从classpath获 取配置文件; (3) FileSystemXmlApplicationContext: ApplicationContext 实现,可从文件系统获 取配置文件。
Spring3.0 MVC 中文教程
Spring3 MVC - 3到Spring MVC框架简介Spring3 MVC框架简介Spring MVC是Spring的框架的Web组件。
它提供了丰富的功能,为建设强大的Web应用程序。
Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。
此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。
这意味着,你甚至可以告诉Spring使用Web框架中的任何一个。
比Spring更不紧耦合的servlet或JSP 向客户端呈现视图。
喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能。
Spring3.0 MVC系列∙第1部分:到Spring 3.0 MVC框架简介∙第2部分:在Spring 3.0 MVC创建Hello World应用程序∙第3部分:在Spring 3.0 MVC的形式处理∙第4部分:Spring3 MVC的Tiles Support与Eclipse中的例子插件教程∙第5部分:Spring3 MVC的国际化及本地化教程与范例在Eclipse∙第6部分:Spring3 MVC示例教程Spring主题∙第7部分:创建Spring3 MVC Hibernate 3的示例在Eclipse中使用Maven的在Spring Web MVC,你可以使用任何对象作为命令或表单支持对象,你不需要实现框架特定的接口或基类。
Spring的数据绑定是高度灵活的:例如,将验证错误类型不作为应用系统错误,可以通过评估的不匹配。
因此,你不必重复你的业务对象的属性,简单的无类型的字符串,在表单对象仅仅是为了处理无效的意见,或正确转换的字符串。
相反,它往往是最好直接绑定到业务对象。
请求处理生命周期Spring的Web MVC框架是,像许多其他Web MVC框架,要求为导向,围绕一个中心的servlet,它把请求分派给控制器,提供其他功能,有利于开发Web应用而设计的。
SpringMVC框架知识点详解
SpringMVC框架知识点详解官⽅的下载⽹址是:⼀、Spring MVC简介1.1Spring MVC⼯作流程映射器:主要是根据浏览器上输⼊的url来映射所有满⾜要求的Handle(控制器类)适配器:主要是决定调⽤哪个Handler来实现具体的业务逻辑1.2Spring MVC VS Struts21)springmvc的⼊⼝是⼀个servlet,即前端控制器;struts2⼊⼝是⼀个filter过虑器,即前端过滤器,2)springmvc是基于⽅法开发(控制器类是单例的,不可能维护实体变量),传递参数是通过⽅法形参,可以设计为单例;struts2是基于类开发(维护⼀个实体变量),传递参数是通过类的属性,只能设计为多例3)springmvc通过参数解析器是将request对象内容进⾏解析成⽅法形参,将响应数据和页⾯封装成ModelAndView对象,最后⼜将模型数据通过request对象传输到页⾯;struts采⽤值栈存储请求和响应的数据,通过OGNL存取数据4)springmvc开发运⾏速度快于struts2⼆、Spring MVC⼯程搭建(xml)2.1导⼊springioc,springweb , springmvc相关的jar包2.2在/WEB-INF/ web.xml⽂件配置SpringMVC的前端控制器DispatcherServlet(前端控制器)<!-- 注册springmvc核⼼控制器 --><servlet><!-- servlet-name名字随便写 --><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 通知DispatcherServlet去指定的⽬录下加载springmvc.xml配置⽂件classpath:是在⼯程的src路径下寻找如果不配置init-param的话,控制器会⾃动寻找/WEB-INF/<servlet-name>-servlet.xml⽂件--><init-param><!-- 值是固定的,相当于键值对 --><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>*.action</url-pattern>//拦截请求</servlet-mapping>注:在默认情况下:springmvc框架的配置⽂件必须叫<servlet-name>-servlet.xml且必须放在/WEB-INF/⽬录下,我们可以在web.xml⽂件中,为DispatcherServlet配置⼀个初始化参数,让它去我们指定的⽬录下加载springmvc.xml配置⽂件2.3配置springmvc.xml注:该配置⽂件的命名规则遵循web.xml⽂件中核⼼控制器配置。
配置文件application.properties参数详解
配置⽂件application.properties参数详解springboot提供了许多启动器starter,⼤部分的启动器都有配置属性,这些配置属性⼀般可以在这⾥找到:xxxxxxxx-autoconfigure-xxxxx.jar/META-INF/spring-configuration-metadata.jsonapplication.properties# 这些属性是否⽣效取决于对应的组件是否声明为 Spring 应⽤程序上下⽂⾥的 Bean(基本是⾃动配置的),# 为⼀个不⽣效的组件设置属性是没有⽤的。
################ ⽂件上传 ################# 开启上传⽀持, 默认是truespring.servlet.multipart.enabled=true# 最⼤⽂件⼤⼩, 单位MB, 默认是1MBspring.servlet.multipart.max-file-size=1MB# 最⼤请求⼤⼩, 单位MB, 默认是10MBspring.servlet.multipart.max-request-size=10MB# ⽂件上传位置spring.servlet.multipart.location=/upload# ⼤于该值的⽂件会被写到磁盘上, 单位B, 默认是0Bspring.servlet.multipart.file-size-threshold=0B################ 服务器配置 ################# 服务器地址server.address=127.0.0.1# 端⼝号, 默认是8080server.port=8080# 应⽤上下⽂路径server.servlet.context-path=/appContext# servlet 上下⽂参数# server.servlet.context-parameters.[param name] = [param value]server.servlet.context-parameters.email = lin@m################ mvc配置 ################# 异步请求处理超时前的等待时间(单位为毫秒)。
