使用maven整合Spring,Spring mvc,mybatis框架

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>



在src/main/java下新建一个com.demo.servicer包,添加IUsersService接口

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";
	}
}


在src/main/webapp下新建login.jsp

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框架搭建完成!

如果搭建过程中遇到什么问题欢迎在评论区留言,谢谢



猜你喜欢

转载自blog.csdn.net/java_mike/article/details/77915119