spring mvc学习的一点总结
来源:互联网 发布:大数据时代风险 编辑:程序博客网 时间:2024/05/20 07:59
spring mvc是spring框架的一部分,spring mvc和spring无需通过中间整合层进行整合。spring mvc是一个基于mvc的web框架,是基于方法开发的,可进行单例开发。这边文章记录了一些学习过程中基础问题,包括执行过程,xml文件配置问题,ssm整合,参数绑定
一、spring mvc 执行过程
1.发送请求到前端控制器(DispatcherServlet)
2.前端控制器请求HandlerMapping查找Handler(根据xml配置、注解查找)
3.处理器映射器HandlerMapping向前端控制器返回Handler
4.前端控制器调用处理器适配器执行Handler
5.处理器适配器执行Handler
6.向前端控制器返回ModelAndView
7.前端控制器请求视图解析器进行视图解析
8.视图解析器向前端控制器返回view
9.前端控制器进行视图渲染
10.向用户响应结果
二、web.xml下spring mvc 前端控制器配置
<!--配置DispatcherServlet --> <servlet> <servlet-name>spring-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置SpringMVC需要加载的配置文件 spring-xxx.xml --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-dispatcher</servlet-name> <!--默认匹配所有的请求 --> <url-pattern>/</url-pattern> </servlet-mapping>
三、spring-servlet.xml配置处理器映射器、处理器适配器、Handler
<!-- 处理器映射器 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
注解方式的适配器、映射器
<!-- 注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <!-- 注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
可以简化配置
<!--简化配置: 1、自动注册RequestMappingHandlerMapping,RequestMappingHandlerAdapter 2、提供一系列:数据绑定,数字和日期的format,@NumberFormat,@DataTimeFormat,xml,json默认读写支持 --><mvc:annotation-driven/>
注解方式配置Handler使用组件扫描
<context:component-scan base-package=" "></context:component-scan>
在控制层需要对类进行@Controller的标记,在@RequestMapping(“”)里边定义映射的url。
四、ssm整合
1.整合dao层:mybatis和spring整合,通过spring管理mapper接口
mybatis-config.xml配置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!--配置全局属性--> <settings> <!--使用jdbc的getGeneratekeys获取自增主键值--> <setting name="useGeneratedKeys" value="true"/> <!--使用列别名替换别名 默认true--> <setting name="useColumnLabel" value="true"/> <!--开启驼峰命名转换Table:create_time到 Entity(createTime)--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 配置别名 --> <typeAliases> <!-- 批量配置别名 --> <package name=""/> </typeAliases></configuration>
spring-dao.xml配置(数据源,SqlSessionFactory,mapper扫描器)
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://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"> <!--配置整合mybatis过程--> <!--1、配置数据库相关参数--> <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/> <!--2.数据源druid --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="${druid.pool.size.init}" /> <property name="minIdle" value="${druid.pool.size.min}" /> <property name="maxActive" value="${druid.pool.size.max}" /> <!-- 配置监控统计拦截的filters,wall用于防止sql注入,stat用于统计分析 --> <property name="filters" value="wall,stat" /> </bean> <!--3、配置SqlSessionFactory对象--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--注入数据库连接池--> <property name="dataSource" ref="dataSource"/> <!--配置mybatis全局配置文件:mybatis-config.xml--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <!--扫描entity包,使用别名,多个用;隔开--> <property name="typeAliasesPackage" value="com.sqy.ssm.entity"/> <!--扫描sql配置文件:mapper需要的xml文件--> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <!--4、配置扫描Dao接口包,动态实现DAO接口,注入到spring容器--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--注入SqlSessionFactory--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 给出需要扫描的Dao接口--> <property name="basePackage" value="com.sqy.ssm.dao"/> </bean></beans>
注意注入SqlSessionFactory时, 使用的是value而不是ref
2.整合service层:通过spring管理service接口,实现事务控制
spring-service.xml配置
<?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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://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/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!--扫描service包(包含子包)下所有使用注解的类型--> <context:component-scan base-package="com.sqy.ssm.service"/> <!--配置事务管理器(mybatis采用的是JDBC的事务管理器)--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!--配置基于注解的声明式事务,默认使用注解来管理事务行为--> <tx:annotation-driven transaction-manager="transactionManager"/></beans>
3.整合springmvc
配置spring-servlet.xml文件,配置处理器映射器,适配器、视图解析器
<?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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 激活组件扫描功能,扫描aop的相关组件组件 --> <context:component-scan base-package="com.sqy.ssm.aop"/> <!-- 启动对@AspectJ注解的支持 --> <aop:aspectj-autoproxy proxy-target-class="true" /> <!--简化配置: 1、自动注册RequestMappingHandlerMapping,RequestMappingHandlerAdapter 2、提供一系列:数据绑定,数字和日期的format,@NumberFormat,@DataTimeFormat,xml,json默认读写支持 --> <mvc:annotation-driven/> <!--静态资源默认servlet配置 1、加入对静态资源的处理:js,css,gif,png 2、允许使用"/"做整体映射 --> <mvc:default-servlet-handler/> <!--配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!--扫描web相关的controller--> <context:component-scan base-package="com.sqy.ssm.controller"/> </beans>
五、springmvc参数绑定
处理器适配器通过调用springmvc提供的参数绑定组件,将客户端请求的key/value数据转成controller方法的形参。
参数绑定组件:早期使用PropertyEditor,但因其只能将字符串传成java对象,converter能进行任意类型的转换,所以后期使用converter,在特殊情况下,如日期数据的绑定可以自定义converter。
1、参数绑定过程中,HttpServletRequest、HttpServletResponse、HttpSession、Modle/ModleMap(将Modle数据填充到Request域)直接进行绑定。
2、简单类型的参数进行绑定:@RequestParam(value=”“,required=true,defaultValu=“”),属性value可以指定request传入参数名称和形参进行绑定,属性required指定参数是否必须要传入,属性 defaultValu设置默认值。
3、POJP类型的参数进行绑定:页面中input的name属性和controller的POJO形参中的属性名称一致,将页面中数据绑定到POJO
4、自定义参数绑定(日期):
<mvc:annotation-driven conversion-service="conversionService"/><!-- 自定义参数绑定 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <!-- 转换器 --> <property name="converters"> <list> <bean class="com.sqy.ssm.converter.DateConverter"/> </list> </property> </bean>
参数绑定还有包装类型、数组、list等。
- spring mvc学习的一点总结
- spring mvc学习的一点体会
- Spring mvc 学习总结
- Spring MVC 学习总结
- Spring mvc学习总结
- Spring mvc学习总结
- 我学习spring的一点小总结(二)
- Spring MVC list的一点笔记
- Spring MVC学习总结一
- spring mvc框架学习总结
- Spring MVC 框架学习总结
- Spring MVC漏洞学习总结
- Spring MVC 框架学习总结
- spring mvc的学习
- Spring mvc的学习
- Spring学习总结(2.3)-Spring MVC:handlerAdapter
- spring MVC 学习笔记与总结1----spring MVC 介绍与基本的.xml文件配置
- Spring MVC学习总结(6)——一些Spring MVC的使用技巧
- struts中使用servlet
- STL中的swap函数
- intValue()的用法,以及与parseInt()和valueOf 的区别
- Python中常见的异常(类)
- 顺序表查找和折半查找
- spring mvc学习的一点总结
- Matrix Calculus 学习笔记
- ml-预处理交叉检验
- 欢迎使用CSDN-markdown编辑器
- Windows7(MBR)与Ubuntu(GPT)双分区表grub引导被删除修复
- jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)
- MapReduce基础知识梳理
- JS 自定义事件
- LINUX利用多线程完成多个客户端向服务器发送数据