springMVC++Mybatis整合
整个项目在mysql IDEA 开发环境
需要的jar包
1.spring
2.mybatis
3.mybatis-spring整合包
4.数据库驱动包
5.json依赖包
Dao层:
1、SqlMapConfig.xml,空文件即可,但是需要文件头。
a) 数据库 jdbc.properties
mysql.dirver=com.mysql.jdbc.Driver
mysql.username=root
mysql.password=root
mysql.url=jdbc:mysql://127.0.0.1:3306/test?userUnicode=true&characterEncoding=utf-8
b) SqlSessionFactory对象,需要spring和mybatis整合包下的。
c) 配置mapper文件扫描器。Mapper动态代理开发
Service层:
1、applicationContext.xml包扫描器,扫描@service注解的类。
<context:component-scan base-package="com.soft863">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--加载jdbc.properties配置文件-->
<context:property-placeholder location="classpath:jdbc.properties" file-encoding="UTf-8" order="1"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${mysql.dirver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</bean>
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--配置事务切点-->
<aop:config>
<aop:pointcut id="txCut" expression="execution(* com.soft863.service..*.*(..))"></aop:pointcut>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txCut"></aop:advisor>
</aop:config>
2、applicationContext-trans.xml配置事务。
Controller层:
1、Springmvc.xml
a) 包扫描器,扫描@Controller注解的类。
<!--扫描控制层packe-->
<context:component-scan base-package="com.soft863.contorller"/>
b) 配置注解驱动
<!--开启springmvc注解驱动,代表使用注解方式映射核处理器并加载很多配置-->
<mvc:annotation-driven conversion-service="myDateConversionService" validator="validator"/>
c) 配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/items/"/>
<property name="suffix" value=".jsp"/>
</bean>
Web.xml文件:
1、配置spring监听器
2、配置前端控制器。
第一步 配置springmvc 前端控制器web.xml
修改<!--默认读取的配置文件在WEB-INF/servlet名字-servlet.xml(springmvc-servlet.xml)-->
第二步 配置tomcat
springMVC一般都是用注解 一般我们只配置 mvc标签
使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
mvc:annotation-driven默认加载很多的参数绑定方法,比如json转换解析器就默认加载了,
如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter
实际开发时使用mvc:annotation-driven
<!-- <mvc:annotation-driven></mvc:annotation-driven> -->
开启springmvc注解驱动,代表使用注解方式映射核处理器并加载很多配置
<mvc:annotation-driven></mvc:annotation-driven>
第三步 一般为了我们的工作我们都会,配置视图解析器-->
配置applicationContext.xml 来连接数据库 之后配置集成文件 配置web.xml文件
一.定义控制器方法返回值
string
1)返回物理视图的路径
2)返回跳转资源路径
ModelAndView:
void: 使用servlet跳转方式
通过response指定相应结果,例如响应json数据
二.跳转
forward: redirect: 以及原始servlet 都不会经过视图解析器
(404找不到类
400 传递参数有问题
500服务器配置错误)
1 前台传递参数参数
1.1 后台接受可以跟前台传过来的名字相同
1.2 名字不相同我们可以加注解@RequestParam("id") Integer items_id,
当前台不传值可以加注解设置默认值required = true(true必须要传,不传报400),defaultValue = "1" 默认传参 value=1
1.3 使用pojo对象接受参数参数是pojo对象属性名
1.4 值对像接受参数(vo)
CustomerItems citems
items.id=1000&items.name=xxx&address=helloworld
1,5 集合或者数组接受参数在方法参数声明 int[] ids
前台传值 ids=1&ids=2.....
Ⅱ 把值放入页面
①我们吧值放入ModlMap
②调用modlMap.addAttribute("items",items);
3 日期格式不对的时候需要配置日期转换器 (springmvc.xml)
3.1 <bean id="myDateConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.soft863.mydataCortorller.MydataCortorller"/>
</list>
</property>
</bean>
然后写一个日期转化得类MydataCortorller,指定日期格式如 yyyy-MM-dd hh-mm-ss
3.2 在方法加注解 @DateTimeFormat(pattern="yyyy-MM-dd HH-mm-ss") Date date 或者在pojo类中
可以再实体类属性上加注解 @DateTimeFormat(pattern= "yyyy-MM-dd HH-mm-ss")
4 出现乱码
4.1 我们可以配置过滤器
4.2 File->stting->fileEncoding 全部设置:utf-8
4.3 在web.xml文件中配置文件
<!--spring 编码过滤器-->
<filter>
<filter-name>encodFilter</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>
4.4 在tomcat文件中server.xml设置Connection 设置属性URIEncoding="utf-8"
4.5 设置XXX.jsp的页面编码
4.6 如果前台参数传递到前台到数据库乱码 在url test?userUnicode=true&characterEncodong=utf-8
5 文件上传(步骤)
5.1 更改form属性,method=post,entype=multipart/form-data
5.2 配置springmvc多部见解析器
<!--上传文件,文件上传有固定写法 不用关联映射配置器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxInMemorySize">
<value>10485760</value>
</property>
</bean>
5.3 配置tomcat虚拟目录 并导入项目
5.4 导入相应的架包
6 spring高级校验
使用hibernate校验框架
导入架包-
思路
1. 页面提交参数请求contorller方法中
配置前步骤
1. 配置校验器springmvc
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!--校验厂商-->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<property name="validationMessageSource" ref="errorMessage"/>
</bean>
<!--校验错误信息-->
<bean id="errorMessage" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<!--校验源文件路径-->
<value>classpath:validationMessages</value>
</list>
</property>
2. 注入校验器
BindingResult bindingResult
3. 在pojo类中添加校验规则
@Size(min = 3,max = 30,message = "{itemes.name.length.error}",groups = Mygroup1.class)
4. 分组异常 (在pojo类属性上直接加校验)
7. 异常处理
系统dao
我们自定义一个异常继承 Exception
写一个实现HandlerExceptionResolver 方法
配置springmvc
<bean class="com.soft863.execption.ExceptionResolver"></bean>
8. jsonSpringMVC的json解析
json是一个非常重要的数据格式
它是一个非常轻量级的,解析起来非常方便的对象
通过@RequestBody可以接受前台传送的json对象并自动封装成一个Javabean
9. @ModelAttribute("mm")
把值放入request域 在 前台取值