第九讲 整合 Spring MVC+Spring+MyBatis
来源:互联网 发布:node.js高级编程 微盘 编辑:程序博客网 时间:2024/05/29 07:58
一、导入相关jar包
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.20.0-GA</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.7</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
二、编写配置文件
web.xml ---> 配置Spring,配置Spring MVC
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>springmvc_spring_mybatis</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- 配置spring的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置spring mvc的配置文件 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
mvc.xml ---> Spring MVC使用注解 (如果需要JSON或其他处理,需填写相关配置)
<beansxmlns="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">
<!-- 扫描该包下的注解 -->
<context:component-scanbase-package="com.liujie.controller"></context:component-scan>
</beans>
applicationContext.xml ---> Spring
<beansxmlns="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">
<!-- 读取属性文件 -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<propertyname="location"value="classpath:db.properties"/>
</bean>
<!-- 配置数据源 -->
<beanid="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName"value="${driver}"></property>
<propertyname="url"value="${url}"></property>
<propertyname="username"value="${username}"></property>
<propertyname="password"value="${password}"></property>
</bean>
<!-- 声明式事务配置 -->
<!-- 配置事务管理器 -->
<beanid="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<propertyname="dataSource"ref="dataSource"/>
</bean>
<!-- 配置事务通知 -->
<tx:adviceid="txAdvice"transaction-manager="txManager">
<tx:attributes>
<!-- 配置哪些方法使用什么样的事务,配置事务的传播特性 -->
<tx:methodname="add"propagation="REQUIRED"/>
<tx:methodname="insert"propagation="REQUIRED"/>
<tx:methodname="update"propagation="REQUIRED"/>
<tx:methodname="delete"propagation="REQUIRED"/>
<tx:methodname="remove*"propagation="REQUIRED"/>
<tx:methodname="get"read-only="true"/>
<tx:methodname="*"propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 切入点应该是service.impl下的所有类的所有方法,这里为了方便测试所以直接用了dao.impl -->
<aop:pointcutexpression="execution(* com.liujie.dao.impl.*.*(..))"
id="pointcut"/>
<aop:advisoradvice-ref="txAdvice"pointcut-ref="pointcut"/>
</aop:config>
<!-- 声明式事务配置结束 -->
<!-- 配置sqlSessionFactory -->
<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
<propertyname="dataSource"ref="dataSource"></property>
<propertyname="configLocation"value="classpath:mybatis-config.xml"></property>
</bean>
<!-- 自动扫描所配置包下的所有注解
dao:@Repository("userDao")
service:@Service("userService")
action:@Controller("userAction") @Scope("prototype")
属性的注入:@Autowired
-->
<context:component-scanbase-package="com.liujie"></context:component-scan>
</beans>
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
mybatis-config.xml ---> MyBatis
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfigurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<packagename="com.liujie.model"/>
</typeAliases>
<mappers>
<!-- 所有mapper文件填写位置 -->
<mapperresource="config/mybatis/user.mapper.xml"/>
</mappers>
</configuration>
三、编码
@Repository("userDao")
publicclassUserDaoImpl extendsSqlSessionDaoSupportimplementsUserDao {
@Autowired
@Override
publicvoidsetSqlSessionFactory(SqlSessionFactorysqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
}
publicList<User> list() {
returngetSqlSession().selectList("com.liujie.model.UserMapper.selectList");
}
}
这里
@Autowired
@Override
publicvoidsetSqlSessionFactory(SqlSessionFactorysqlSessionFactory)
实际上就是去装配
<!-- 配置sqlSessionFactory -->
<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
<propertyname="dataSource"ref="dataSource"></property>
<propertyname="configLocation"value="classpath:mybatis-config.xml"></property>
</bean>
@Service("userService")
publicclassUserServiceImpl implementsUserService {
@Autowired
privateUserDaouserDao;
publicvoidsetUserDao(UserDaouserDao) {
this.userDao=userDao;
}
publicList<User> list() {
returnuserDao.list();
}
}
@Controller
publicclassUserController {
@Autowired
privateUserServiceuserService;
publicvoidsetUserService(UserServiceuserService) {
this.userService=userService;
}
@RequestMapping("/list")
publicString list(ModelMapmodel) {
model.addAttribute("list",userService.list());
return"/list.jsp";
}
}
四、配置乱码过滤器
CharacterEncodingFilter.java:
@WebFilter("/*")
publicclassCharacterEncodingFilter implements Filter {
Stringencoding=null;
publicvoiddestroy() {
encoding=null;
}
publicvoidinit(FilterConfig filterConfig)throwsServletException {
encoding=filterConfig.getInitParameter("encoding");
}
publicvoiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throwsIOException, ServletException {
System.out.println("filter req:" + request);
if(encoding==null || "".equals(encoding)) {
encoding="utf-8";
}
// 解决的post请求
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
HttpServletRequestWrapperreq= newHttpServletRequestWrapper((HttpServletRequest)request) {
publicString getParameter(Stringname) {
// 对于get请求特殊处理
if("get".equals(this.getMethod().toLowerCase())) {
Stringvalue= super.getParameter(name);
try{
returnnewString(value.getBytes("iso-8859-1"),encoding);
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
returnvalue;
}
returnsuper.getParameter(name);
}
};
chain.doFilter(req,response);
System.out.println("-------------CharacterEncodingFilter("+encoding + ")-------------");
}
}
阅读全文
0 0
- 第九讲 整合 Spring MVC+Spring+MyBatis
- Spring MVC Mybatis 整合
- spring mvc mybatis 整合
- Spring MVC整合MyBatis
- spring mvc mybatis 整合
- spring mvc mybatis 整合
- Spring mvc+Mybatis整合
- Spring MVC整合Mybatis
- Spring+MVC+Mybatis整合
- 整合spring+spring mvc+mybatis
- Spring+Spring MVC+MyBatis整合
- spring spring-mvc mybatis 整合
- Spring + Spring MVC + MyBatis 整合
- Spring + Spring MVC + MyBatis 整合
- Spring mvc+Spring+Mybatis整合
- Spring mvc+Spring+Mybatis整合
- Spring+Spring MVC+MyBatis整合
- spring + spring mvc + mybatis 整合
- 1、intellij idea 常用快捷键 加快开发速度
- L
- ACM International Collegiate Programming H.动态规划
- COM内部接口调用方式
- iOS 数组求和的一种简单方法
- 第九讲 整合 Spring MVC+Spring+MyBatis
- JAVA知识点总结15-多线程
- HBase 事务和并发控制机制原理
- SQL Server 触发器的使用,实现多字段自增长
- HeadFirstJava 12 图形用户接口
- 天天特惠系统秒杀优化方案
- Castle.MVC框架介绍
- C++重载输入运算符<<自定义打印类信息
- UOJ #34. 多项式乘法