1.2、在pom.xml文件的properties标签内加入如下依赖坐标的版本限定代码,方便管理依赖的版本号
<spring.version>5.0.16.RELEASE</spring.version> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.17</log4j.version> <mysql.version>5.1.6</mysql.version> <mybatis.version>3.4.5</mybatis.version> <aspectj.version>1.6.8</aspectj.version> <junit.version>4.12</junit.version>
1.3、添加完版本限定后,在dependencies标签中添加依赖坐标。坐标可以参考下面坐标代码
<dependency> <!-- Spring干系依赖坐标开始--> <!--spring容器--> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!--spring aop--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> <!--spring mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!--测试支持--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!--spring jdbc模板技能--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!--事务--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring依赖坐标结束--> <!--servlet--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!--jsp--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <!--jsp页面供应el表达式支持--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--mybatis框架--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!--用于spring整合mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!--连接池c3p0--> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> <type>jar</type> <scope>compile</scope> </dependency> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>compile</scope> </dependency>
1.4、创建实体类Users、Users的dao接口UsersDao、UsersDao的dao接口的实现类UsersDaoImpl、业务接口UsersService、业务接口UsersService的实现类UsersServiceImpl。本实例利用Spring的表明+xml办法配置。如果业务接口实现类中利用spring的表明注入UsersDao的工具到UsersServiceImpl实现类中,并且可以通过注入的工具访问到UsersDao接口中的方法,则表明Spring环境搭建成功1.4.1、Users.java类的紧张实当代码
/ 账号实体类 /public class Users implements Serializable { private String userName;//用户名 private String password;//密码 public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "Users{" + "userName='" + userName + '\'' + ", password='" + password + '\'' + '}'; }
1.4.2、UsersDao.java的紧张实当代码
/ 用户的dao接口 利用mybatis框架,dao接口可以不用实现例 /public interface UsersDao { / 查询所有用户 @return / public List<Users> findAll(); / 添加用户 @param users / public void saveUser(Users users);}
1.4.3、UsersDaoImpl.java的紧张实当代码
/ UserDao接口的实现类 /@Repositorypublic class UsersDaoImpl implements UsersDao { / 查询所有用户 @return / @Override public List<Users> findAll() { System.out.println("UsersDaoImpl类的findAlll方法实行了..."); return null; } / 添加用户 @param users / @Override public void saveUser(Users users) { System.out.println("UsersDaoImpl类的saveUser方法实行了..."); }}
1.4.4、业务接口UsersService.java的紧张实当代码
/ 用户的业务接口 /public interface UsersService { / 查询所有用户 @return / public List<Users> findAll(); / 添加用户 @param users / public void saveUser(Users users);}
1.4.5、业务接口的实现类UsersServiceImpl.java的紧张实当代码
/ 用户业务接口的实现类 /@Service("usersService")public class UsersServiceImpl implements UsersService { @Autowired private UsersDao usersDao; / 查询所有用户 @return / @Override public List<Users> findAll() { usersDao.findAll(); System.out.println("UserServiceImpl类的findAll方法实行了。。。"); return null; } / 添加用户 @param users / @Override public void saveUser(Users users) { usersDao.saveUser(users); System.out.println("UserServiceImpl类的saveUser方法实行了。。。."); }}
1.4.6、spring配置文件applicationContext.xml代码
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置spring加载包扫描--> <context:component-scan base-package="com.pankx"> <!--配置不加载的表明Controller--> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
1.4.7、Spring的测试类TestSpring代码如下
@Test public void testSpring(){ //加载spring配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); //获取UserService工具 UsersService usersService = applicationContext.getBean("usersService", UsersService.class); usersService.findAll(); Users users = new Users(); usersService.saveUser(users); }
运行测试类掌握台输入如下内容,表明Spring环境搭建成功
UsersDaoImpl类的findAlll方法实行了...UserServiceImpl类的findAll方法实行了。。。UsersDaoImpl类的saveUser方法实行了...UserServiceImpl类的saveUser方法实行了。。。.
2、SpringMVC环境搭建
2.1、在ssm项目上创建SpringMVC配置文件,掌握器类UsersController、testSpringmvc.jsp测试页面,如果通过测试页面的要求连接,能访问到掌握器类中的方法表示SpringMVC环境搭建成功。
2.2、SpringMVC配置文件springmvc.xml紧张配置包扫描、视图解析器等,详细配置如下
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" 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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置包扫描,只扫描controller--> <context:component-scan base-package="com.pankx"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--配置视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!--开启springmvc表明支持--> <mvc:annotation-driven/>
2.3、在web.xml配置文件中配置前端掌握器、处理中文乱码的过滤器,详细配置如下
<!--处理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> <!--配置前端掌握器--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--加载springmvc配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2.4、掌握器类UsersController.java紧张实当代码如下
/ Users掌握器类 /@Controller@RequestMapping("/user")public class UsersController { @RequestMapping("/testSpringmvc") public String testSpringmvc(){ System.out.println("UsersController类的testSpringmvc方法实行了"); //返回success经视图解析器解析将跳转到/WEB-INF/pages/目录下的success.jsp页面 return "success"; }}
2.5、测试页面testSpringmvc.jsp的紧张代码实现如下
<h1>测试SpringMVC环境</h1> <hr/> <a href="user/testSpringmvc">测试SpringMVC环境</a>
2.6、配置好Tomcat做事器把项目支配到做事并访问testSpringmvc.jsp页面中的超链接即可成功跳线到success.jsp页面,表明SpringMVC环境搭建成功。
3、Spring整合SpringMVC框架3.1、Spring整合SpringMVC框架也便是要实现表现层的springmvc框架可以访问到业务层的方法,由于做事器启动不会主动加载spring的配置文件,以是掌握器类实现不了UsersService工具的注入,因此Spring要整合SpringMVC就要实现项目启动时就要加载spring的配置文件,可以用配置ContextLoaderListener监听器实现。3.2、web.xml文件的监听器配置代码如下
<!--配置spring监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--配置监听器加载指定的路径,默认只加载目录WEB-INF目录下的applicationContext.xml配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
3.3、掌握器类UsersController编辑UsersService工具注入与及testfindAll方法验证通过页面要求利用入注入的工具访问业务层的方法。3.3.1、UsersController.java紧张代码实现
@Autowired private UsersService usersService; / 测试springmvc环境 @return / @RequestMapping("/testSpringmvc") public String testSpringmvc(){ System.out.println("UsersController类的testSpringmvc方法实行了"); //返回success经视图解析器解析将跳转到/WEB-INF/pages/目录下的success.jsp页面 return "success"; } / @return / @RequestMapping("/testfindAll") public String testfindAll(){ System.out.println("UsersController类的testfindAll方法实行了"); usersService.findAll(); return "list"; }
3.4、如果通过testspringmvc.jsp页面的链接要求掌握器的testfindAll方法实行,如果成功跳转到list.jsp页面,并且掌握台输出业务层方法打印的方法中实行输出的日志表明整合成功。3.4.1、testspringmvc.jsp紧张代码如下
<h1>测试SpringMVC环境</h1> <hr/> <a href="user/testSpringmvc">测试SpringMVC环境</a> <hr/> <a href="user/testfindAll">测试Spring整合SpringMVC环境</a>
3.4.2、测试成功掌握台输出的信息
UsersController类的testfindAll方法实行了UsersDaoImpl类的findAlll方法实行了...UserServiceImpl类的findAll方法实行了。。。
至此Spring整合SpringMVC已经完成,下面连续MyBatis框架的干系环境搭建。
4、MyBatis环境搭建4.1、创建ssm数据库与users表的命令如下
CREATE DATABASE ssm;CREATE TABLE users (id INT(11) PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20),password VARCHAR(30));INSERT INTO users VALUES(null,"pankx","123456");
4.2、创建mybatis.xml配置文件,配置mysql的环境,详细配置如下
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- 配置环境--> <environments default="mysql"> <environment id="mysql"> <!--事务类型--> <transactionManager type="jdbc"/> <!--数据源--> <dataSource type="POOLED"> <!--驱动--> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--数据库地址--> <property name="url" value="jdbc:mysql://localhost/ssm"/> <!--用户名--> <property name="username" value="root"/> <!--密码--> <property name="password" value="Pankx0128"/> </dataSource> </environment> </environments><!-- 引入映射文件--> <mappers> <!--由于利用表明,以是引入表明包目录--> <package name="com.pankx.dao"/> </mappers> </configuration>
4.2.1、给UsersDao类中方法加载mybatis的相应表明,利用MyBatis框架Dao接口可以不须要实现类,因此删除UserDao的实现类文件UsersDaoImpl.java。4.2.2、dao接口类UsersDao.java的紧张代码实现如下
/ 用户的dao接口 利用mybatis框架,dao接口可以不用实现例 /public interface UsersDao { / 查询所有用户 @return / @Select("SELECT FROM users") public List<Users> findAll(); / 添加用户 @param users / @Insert("INSERT INTO users (username,password) VALUES(#{userName},#{password})") public void saveUser(Users users);}
4.3.1、创建TestMyBatis.java测试类测试MyBatis的配置环境,如果能成功操作mysql数据库,表明MyBatis环境搭建成功4.3.2、TestMyBatis.java的紧张实当代码如下代码紧张实现查询数据库的所有数据和向数据库新增一条数据
public class TestMyBatis { @Test public void testMyBatis() throws IOException { //加载配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis.xml"); //创建SqlSessionFactory工具 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取SqlSession工具 SqlSession session = sqlSessionFactory.openSession(); //获取代理工具 UsersDao usersDao = session.getMapper(UsersDao.class); //实行查询方法 List<Users> list = usersDao.findAll(); for(Users users:list){ System.out.println(users); } Users users = new Users(); users.setUserName("test1"); users.setPassword("test123456"); //实行新增用户方法 usersDao.saveUser(users); //提交事务 session.commit(); //关闭资源 session.close(); inputStream.close(); }}
4.3.3、测试类实行成功掌握台将输出如下信息,这条记录是创建数据库时添加的,以是可以查询到。
Users{userName='pankx', password='123456'}
4.3.4、查看数据库可以看到成功插入了一条username为test1的记录。
mysql> select from users;+----+----------+------------+| id | username | password |+----+----------+------------+| 1 | pankx | 123456 || 2 | test1 | test123456 |+----+----------+------------+
4.3.5、因此到这里MyBatis的开拓环境搭建成功,接下来便是用Spring整合MyBatis。
5、Spring整合MyBatis5.1、Spring要整合MyBatis只需Spring的配置文件中完成MyBatis的干系配置,配置数据库连接池、SqSessionFactory工厂Bean,利用MapperScannerConfigurer来配置Dao接口所在的包。详细配置如下
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置spring加载包扫描--> <context:component-scan base-package="com.pankx"> <!--配置不加载的表明Controller--> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--spring整合MyBatis--> <!--配置连接池,此例利用c3p0连接池技能--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost/ssm"/> <property name="user" value="root"/> <property name="password" value="Pankx0128"/> </bean> <!--配置SqlSessionFactory工厂bean--> <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--传入数据源--> <property name="dataSource" ref="dataSource"/> </bean> <!--配置dao接口的包路径--> <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pankx.dao"/> </bean></beans>
5.2、配置好MyBatis后要把之前单独搭建时创建的mybatis.xml配置文件删除了,避免重复配置报错。5.3、创建testmybatis.jsp页面与userslist.jsp页面,通过要求办法测试MyBatis的整合环境,此处紧张测试数据库的查询,如果环境搭建成功,则可以在userslist.jsp页面显示查询到的用户数据。5.3.1、testmybatis.jsp页面的紧张代码实现如下
<h1>测试Spring整合MyBatis</h1> <hr/> <a href="user/testfindAll">测试Spring整合MyBatis</a>
5.3.2、userslist.jsp页面的紧张代码实现如下
<c:forEach items="${userslist}" var="user"> ${user}<br/> </c:forEach>
5.3.3、本实例经由测试可以正常显示查询到的数据,详细可以查看项目源码。5.4、给项目加入声明式事务管理,详细在spring的配置文件中加入下面代码即可
<!--配置事务管理--> <!--配置事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--配置关照--> <tx:advice id="transactionInterceptor" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="find" read-only="true"/> <tx:method name=""/> </tx:attributes> </tx:advice> <!--配置aop增强--> <aop:config> <aop:advisor advice-ref="transactionInterceptor" pointcut="execution( com.pankx.service.ServiceImpl.(..))"/> </aop:config> <!--配置dao接口的包路径--> <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pankx.dao"/> </bean>
5.5、到此ssm整合开拓环境搭建完成,详细可以参考项目源代码:https://github.com/pkx0128/ssm
关注我的公众号