ssm框架(即Spinrg + Spring mvc + mybatis)是现在比较主流的框架,使用maven整合这三个框架非常简单,下面就给大家分享使用maven整合ssm框架的过程。
注:博文中的代码已上传到我的资源库
使用的环境
jdk1.8
tomcat9
STS(带有spring插件的eclipse)
新建maven项目
若pom.xml报 web.xml is missing and <failOnMissingWebXml> is set to true错误,则选择项目 -> 右键 -> Java EE Tools -> Generate Deployment Descriptor Stub,点击就行了。
导入相关的jar包
使用maven直接在pom.xml中配置jar包的路径就可以了(中央仓库地址:http://mvnrepository.com/)
ssm配置的pom.xml(版本可根据实际情况修改)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>ssmdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- https://mvnrepository.com/artifact/c3p0/c3p0 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency> <!-- https://mvnrepository.com/artifact/jstl/jstl --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.3</version> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.7.RELEASE</version> <scope>test</scope> </dependency> </dependencies> </project>
整合配置文件
spring的配置文件是applicationContext.xml,spring mvc的配置文件是spring-mvc.xml,mybatis对应的配置文件是mybatis-config.xml,现在要这整合三个配置文件。
首先在web.xml中配置applicationContext.xml和spring-mvc.xml
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns: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>ssmdemo</display-name> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <!-- needed for ContextLoaderListener --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- Bootstraps the root web application context before servlet initialization --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>encodingFilter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- The front controller of this Spring Web application, responsible for handling all application requests --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
在src/main/resources下新建mapper文件夹,还有applicationContext.xml,db.properties,mybatis-config.xml,spring-mvc.xml四个文件。
applicationContext.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" 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-4.3.xsd"> <!-- 不扫controller层 --> <context:component-scan base-package="com.demo" use-default-filters="false"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- 引入db.properties --> <context:property-placeholder location="classpath:db.properties"/> <!-- 配置ComPooledDataSource数据源 --> <bean id="comboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="${jdbcUrl}"></property> <property name="driverClass" value="${driverClass}"></property> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> </bean> <!-- Spring Mybatis整合:配置SqlSessionFactoryBean --> <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 配置mybatis-config.xml --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <!-- 引入c3p0数据源 --> <property name="dataSource" ref="comboPooledDataSource"></property> <!-- 配置mapper映射文件 --> <property name="mapperLocations" value="classpath:mapper/*.xml"></property> </bean> <!-- 扫描整个com.dgut.dao包接口路径,可以获取所有的Mapper接口 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.demo.mapper"></property> </bean> </beans>
db.properties(根据自己的数据库修改)
jdbcUrl=jdbc:mysql://localhost:3306/demo driverClass=com.mysql.jdbc.Driver user=root password=123456
spring-mvc.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" 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-4.3.xsd"> <!-- 只扫描指定的Controller层 <context:component-scan base-package="com.demo" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>--> <!-- 默认扫描全部包 --> <context:component-scan base-package="com.demo"> </context:component-scan> <!-- 赋值前缀,后缀 (ctrl + alt + t)--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="views/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
mybatis-config.xml
<?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> </configuration>
现在框架已经搭好了,下面测试一下整合后的框架有没有什么问题。
首先建一个demo数据库,在数据库中新建一个users表,
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
并在数据库中添加一条用户
在src/main/java下新建一个com.demo.bean包,添加Users实体类
Users
package com.demo.bean; public class Users { private int id; private String name; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
在src/main/java下新建一个com.demo.mapper包,添加UsersMapper接口
UsersMapper.java
package com.demo.mapper; import org.apache.ibatis.annotations.Param; import com.demo.bean.Users; public interface UsersMapper{ Users selectByName(@Param("name")String name); }
在src/main/resources下的mapper文件夹添加UsersMapper.xml
UsersMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.demo.mapper.UsersMapper"> <resultMap id="BaseResultMap" type="com.demo.bean.Users"> <id column="ID" jdbcType="INTEGER" property="id" /> <result column="NAME" jdbcType="VARCHAR" property="name" /> <result column="PASSWORD" jdbcType="VARCHAR" property="password" /> </resultMap> <sql id="Base_Column_List"> ID, NAME, PASSWORD </sql> <select id="selectByName" parameterType="java.lang.String" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from users where name = #{name,jdbcType=VARCHAR} </select> </mapper>
IUsersServicejava
package com.demo.service; import com.demo.bean.Users; public interface IUsersService { Users selectByName(String name); }
在src/main/java下新建一个com.demo.servicer.impl包,添加UsersServiceImpl实现类
UsersServiceImpl.java
package com.demo.service.impl; import org.springframework.beans.factory.annotation.Autowired; import com.demo.bean.Users; import com.demo.mapper.UsersMapper; import com.demo.service.IUsersService; @Service public class UsersServiceImpl implements IUsersService{ @Autowired UsersMapper usersMapper; public Users selectByName(String name) { return usersMapper.selectByName(name); } }
在src/main/java下新建一个com.demo.controller包,添加UsersController控制器
UsersController.java
package com.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.demo.service.IUsersService; @Controller public class UsersController { @Autowired IUsersService usersService; @RequestMapping("/login") public String login(String name,String password,Model model){ if(usersService.login(name)!=null && password.equals(usersService.login(name).getPassword())){ model.addAttribute("message","Hello World!"); }else{ model.addAttribute("message","Error!"); } return "index"; } }
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录</title> </head> <body> <form action="login" method="post"> <h1>登录</h1> 用户名:<input type="text" name="name"/><br/> 密码:<input type="password" name="password"/><br/> <input type="reset"/> <input type="submit"/> </form> </body> </html>
将web.xml中的welcome-file改成login.jsp
<welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list>
在src/main/webapp下新建views文件夹,并添加index.jsp
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> ${message} </body> </html>
将项目部署到服务器并运行,在浏览器输入localhost:8080/ssmdemo,会出现下面的页面:
输入数据库中添加的用户信息,成功的话就会跳转到成功页面:
否则就会跳到以下界面:
如果你看到Hello world!页面,那么恭喜你,ssm框架搭建完成!
如果搭建过程中遇到什么问题欢迎在评论区留言,谢谢