SSM整合教程(MAVEN,相当的详细,细节)

本文详细介绍了如何使用Spring、SpringMVC和MyBatis(SSM)框架搭建一个完整的Java Web应用,包括创建Maven项目、配置依赖、设置Spring XML、注册DispatcherServlet、数据库测试及控制器视图层测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一,创建一个maven的项目

二,pom.xml中添加相关的依赖

三,创建spring.xml

四,在web.xml中注册前端控制器(DispatherServlet)

五,持久层测试

六,控制层测试和视图层测试

七,注意事项

八,下载地址   https://download.youkuaiyun.com/download/h2677lucy/10779427

九,关于数据库:自己创建一个数据库,创建表,以及修改数据源。


前言:跟着我的思路走,应该可以成功的完成一个SSM框架的整合

 一,创建一个maven的项目

  使用maven来构建项目的话,首先不用自己去导包之类的,使用eclipse中自带的maven或者你下载的maven都行,之前的文章也都了解关于maven知识。第一步主要做的事情就是修改jdk的版本。

这是我刚构建的maven项目的目录结构(J2SE-1.5),其中就确实了java和test,不需要我们去自己创建,修改版本号就可以。

还以一个地方就是这儿

这两个地方改完之后我们的maven项目就算完成了,完成之后的目录就够是这样的。

这里报错的原因是,index.jsp报错,因为我们没有导入servlet的依赖,但是没有任何的影响,接下来就是我们要做的正经事情。

二,pom.xml中添加相关的依赖

首先我们来理一下这里边我们到底要添加多少依赖。

第一组:spring web ,spring webmvc ,spring jdbc

第二组:mybatis , mybatis spring 

第三组: servlet , jstl , mysql connector(必须或者 oracle的驱动),json

第三组呢,主要是方便学习用的,可有可无。

看一下主要的依赖。

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.j2ee</groupId>
	<artifactId>ProSSM</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>ProSSM Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- spring web -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>5.0.8.RELEASE</version>
		</dependency>

		<!-- spring web mvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.0.8.RELEASE</version>
		</dependency>

		<!-- spring jdbc -->
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.0.8.RELEASE</version>
		</dependency>

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>

		<!-- mybatis spring -->
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.1</version>
		</dependency>

		<!-- servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.1</version>
			<scope>provided</scope>
		</dependency>
		<!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.0.8.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.32</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
</dependency>



	</dependencies>
	<build>
		<finalName>ProSSM</finalName>
	</build>
</project>

当然这些依赖全部添加保存之后,我们来看一下Jar包

三,创建spring.xml

在resources的文件下,创建spring.xml

    1.各种xsd文件的url
    2.自动扫秒的包(包中是类的使用自动扫描  是接口的使用bean扫描)
    3.数据源    
    4.会话工厂
    5.事务管理
    6.试图解析器

以上就是我们基本上要添加的内容。spring.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
       
      <!-- 视图解析器 -->
      <bean id="idvr" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      	<property name="suffix" value=".jsp" />
        <property name="prefix" value="/" />
      </bean>
      
      <!-- 数据源 -->
      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
      	<property name="url" value="jdbc:mysql://localhost:3306/democ" />
      	<property name="username" value="root" />
      	<property name="password" value="a123456" />
      </bean>
 
      <!-- 会话工厂 -->
      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      		<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
      </bean>
      
      <!-- 事务管理 -->
      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      	<property name="dataSource" ref="dataSource" />
      </bean>
      <!-- 通过注解 -->
      <tx:annotation-driven transaction-manager="transactionManager"/>
      <!-- 自动扫描 -->
      <mvc:annotation-driven />
      <context:annotation-config/>
      <context:component-scan base-package="bizImpl"/>
      <context:component-scan base-package="controller"/>
      
      <!-- 扫描mapper的内容  因为mapper是接口    代理类  需要sqlSessionFactory参数-->
      <bean id="msc" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      	<property name="basePackage" value="mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
      </bean>

</beans>

四,在web.xml中注册前端控制器(DispatherServlet)

平时我们可能不需要参数之类的,因为他自动会去加载 XXX-servlet.xml在WEB_INF目录下,这次我们来自己指定。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
  	<servlet-name>ssm</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 直接找项目中寻找spring.xml -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:spring.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>ssm</servlet-name>
  	<url-pattern>*.spring</url-pattern>
  </servlet-mapping>
</web-app>

 五,测试

说一下测试的要点

1.mysql数据库中democ数据库,在配置数据源的时候就可以看到。

2.bean 包 biz包 bizImpl包 mapper包 

3.bean -----------------UserInfo(POJO)

4.biz--------------------- biz Interface

5.bizImpl---------------biz interface instance class

6.mapper--------------mapperXML,mapper interface

7.test

先看目录结构: 其中的类,接口 我已经解释过了

实现:
 

package bean;

public class UserInfo {
	private Integer userId;
	private String userName;
	private String userSex;
	private Integer userAge;
	private String userAddress;
	
	public UserInfo() {
	}


	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserSex() {
		return userSex;
	}

	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}

	public String getUserAddress() {
		return userAddress;
	}
	
	

	public Integer getUserAge() {
		return userAge;
	}


	public void setUserAge(Integer userAge) {
		this.userAge = userAge;
	}


	public void setUserAddress(String userAddress) {
		this.userAddress = userAddress;
	}

	@Override
	public String toString() {
		return "UserInfoBean [userId=" + userId + ", userName=" + userName + ", userSex=" + userSex + ", userAddress="
				+ userAddress + "]";
	}
	
	
}
package biz;

/**
 * 业务接口
 */
import java.util.List;

import bean.UserInfo;

public interface UserBiz {

	/**
	 * 查询所有的用户
	 */
	public List<UserInfo> findAllUser();
	
}
package bizImpl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import bean.UserInfo;
import biz.UserBiz;
import mapper.User;

@Service
public class UserInfoImpl implements UserBiz{

	@Autowired
	private User um;
	
	//全查询 进行业务包装
	public List<UserInfo> findAllUser() {
		return um.findAllUser();
	}

}
package mapper;

import java.util.List;

import bean.UserInfo;

public interface User {
	
	public List<UserInfo> findAllUser();
	
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
 "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mabatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.User">
	<select id="findAllUser" resultType="bean.UserInfo">
		SELECT * FROM USERINFO
	</select>
</mapper>
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import bean.UserInfo;
import biz.UserBiz;
import bizImpl.UserInfoImpl;

public class Test {
	
	public static void main(String[] args) {
		/**
		 * 先使用这样的方式测试 , 只要查询数据 就会返回一个集合 查看集合的长度 ,我们会检测出 持久城的错误。
		 */
		ApplicationContext bean = new FileSystemXmlApplicationContext("src/main/resources/spring.xml");
		//代理
		UserBiz ub=bean.getBean("userInfoImpl",UserInfoImpl.class);
		List<UserInfo> list = ub.findAllUser();
		System.out.println(list.size());
	}

}

结果:

大功告成,接下来就是书写cotroller层的东西。你可以选择使用AJAX方式(esayUI)或者其他方式来实现,基本上已经完成。

六,控制层测试和视图层测试

使用很简单的方式是来测试

使用esayUI   查找esayUI的包添加进来 ,编写html

最终的目录结构:

完成。

七,注意事项

1.各个jar包的版本号,需要注意,我在整合的过程中版本号让我很难受。

2.关于mapper的注意事项很多

3.关于easyUI的url

4.在spring.xml中各个部分需要注意

5.在不清楚的情况下,可以直接复制到代码,整合是成功的!或者下载项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值