IDEA 整合 SSM 详细步骤

mac2025-03-12  15

此教程确认可以正常运行,如需代码可添加微信:18610688249,备注curtain


环境配置

JDK 1.8.0_144Apache-tomcat-8.0.46IntelliJ IDEA Ultimate 2019.2.1Maven 3.5.2MySQL 5.7

1、配置Maven

1.1 选择 Configure > Settings

1.2 按照图示步骤配置本地Maven,Apply > OK


2、搭建 SSM 环境

2.1 创建新项目 Create New Project

2.2 按照图示步骤进行创建,这里我们不使用模板进行创建

2.3 根据图示填写 GroupId 和 ArtifactId

GroupId:项目组唯一标识,实际对应 Java 的包的结构,是 main 目录里 java 的目录结构

ArtifactId:项目唯一标识,实际对应项目名称,就是项目根目录的名称

2.4 此步骤默认即可,也可以自行修改项目名称:Project name,项目路径:Project location

2.5 由于目录不存在,IDEA 为我们创建目录

2.6 等待 IDEA 创建完成后,在界面右下角会有下图提示:

我们选择 Enable Auto-Import 即可,在每次修改完 pom 文件后会自动进行下载依赖包

如果想取消自动导入依赖,可以根据下图进行设置,取消勾选即可

2.7 至此 Maven 环境搭建完成


3、完善项目目录

3.1 在 src/main 目录下新建Directory:"webapp"

3.2 在 webapp 目录下新建Directory:"WEB-INF"

3.3 至此,完善项目目录完成


4、项目源码包及配置文件创建

4.1 在 src/main/java 目录下新建Package:"com.curtain"

4.2 在 src/main/java/com.curtain 目录下新建Package:"controller","mapper","pojo","service"

4.3 在 src/main/resources 目录下新建File:applicationContext.xml,db.properties,log4j.properties,mybatis-conf.xml,spring-mvc.xml

4.4 在 WEB-INF 目录下新建File:web.xml

4.5 至此,项目源码包及配置文件全部创建完成


5、项目搭建

5.1 完善 pom.xml,添加项目所需依赖

<?xml version="1.0" encoding="UTF-8"?> <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.curtain</groupId> <artifactId>ssm</artifactId> <version>1.0-SNAPSHOT</version> <!-- 以下均为新添加内容--> <packaging>war</packaging> <!-- 提取版本属性--> <properties> <spring.version>4.2.4.RELEASE</spring.version> <mybatis.version>3.2.8</mybatis.version> <mybatis.spring.version>1.2.2</mybatis.spring.version> <slf4j.version>1.6.4</slf4j.version> <log4j.version>1.2.17</log4j.version> <jackson.version>2.4.2</jackson.version> <druid.version>1.0.9</druid.version> <mysql.version>5.1.32</mysql.version> <jstl.version>1.2</jstl.version> <servlet-api.version>2.5</servlet-api.version> <jsp-api.version>2.0</jsp-api.version> <commons-io.version>1.3.2</commons-io.version> <commons-fileupload.version>1.3.1</commons-fileupload.version> </properties> <!-- 版本锁定--> <dependencyManagement> <dependencies> <!-- Spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</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-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- 日志处理--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!-- Jackson Json处理工具包--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!-- 连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- Mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- io包--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> <!-- 文件上传组件--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- JSP相关--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api.version}</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement> <!-- 添加依赖--> <dependencies> <!-- Spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <!-- Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </dependency> <!-- 日志处理--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </dependency> <!-- Jackson Json处理工具包--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <!-- 连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <!-- Mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- io包--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> <!-- 文件上传组件--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> </dependency> <!-- JSP相关--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <!-- java编译插件--> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <!-- 配置资源文件映射--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project>

5.2 完善 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_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ssm</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- Spring监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 指定spring核心配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 处理POST提交乱码问题--> <filter> <filter-name>encoding</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>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置前端控制器--> <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:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>

5.3 完善 applicationContext.xml,其中的 <!-- dao mapper--> 后面进行介绍

<?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: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/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 加载数据库连接信息配置文件--> <context:property-placeholder location="classpath:db.properties"/> <!-- druid连接池--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!-- 配置Mybatis工厂--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- dao mapper--> <!--<property name="mapperLocations" value="classpath:mapper/*.xml"/>--> <property name="configLocation" value="classpath:mybatis-conf.xml"/> </bean> <!-- Mapper动态代理开发 扫包 给定报下的接口文件名和映射文件名必须相同 创建接口的实现类--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.curtain.mapper"/> <!-- dao mapper--> <!--<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>--> </bean> <!-- 开启事务--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 事务注解驱动--> <tx:annotation-driven/> </beans>

5.4 完善 db.properties,注意将配置改为自己的数据库配置

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8 jdbc.username=root jdbc.password=xxx

5.5 完善 log4j.properties

log4j.rootLogger=ERROR, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG

5.6 完善 mybatis-conf.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> <!-- 别名--> <typeAliases> <package name="com.curtain.pojo"/> </typeAliases> </configuration>

5.7 完善 spring-mvc.xml,配置静态资源映射中 用到的路径自行将注释放开,此文件夹均新建在 webapp 目录下即可

<?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" 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"> <!-- 配置扫描注解 @Controller @Service--> <context:component-scan base-package="com.curtain"/> <!-- SpringMVC使用<mvc:annotation-driver>自动加载RequestMppingHandlerMapping和RequestMappingHandlerAdapter--> <mvc:annotation-driven/> <!-- 配置静态资源映射--> <!-- <mvc:resources mapping="/js/**" location="/js/"/> <mvc:resources mapping="/css/**" location="/css/"/> <mvc:resources mapping="/imgs/**" location="/imgs/"/> <mvc:resources mapping="/font/**" location="/font/"/> --> <!-- 配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>

5.8 至此,项目搭建完成


6、代码编写

6.1 创建测试数据库(本人还在用SQLyog)

CREATE TABLE `users` ( `id` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

6.2 插入数据

INSERT INTO users VALUES(DEFAULT,"张三","2") INSERT INTO users VALUES(DEFAULT,"李四","2") INSERT INTO users VALUES(DEFAULT,"王五","2") INSERT INTO users VALUES(DEFAULT,"赵六","2")

6.3 在 pojo 包下新建 Java Class:Users

package com.curtain.pojo; import java.io.Serializable; /** * ClassName: Users * Function: 用户实体类 * Date: 2019/11/1 13:29 * author Curtain * version V1.0 */ public class Users implements Serializable { private Integer id; private String username; // 用户名 private String password; // 密码 /** * 空参构造器 */ public Users() { } /** * 带参构造器 * @param username // 用户名 * @param password // 密码 */ public Users(String username, String password) { this.username = username; this.password = password; } /*get set 方法*/ public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } 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; } /** * 方便在控制台查看数据 * @return */ @Override public String toString() { return "Users{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }

6.4 不知道大家是否还记得前面 applicationContext.xml 配置文件中的 <!-- dao mapper-->

如果放开 <!-- dao mapper--> 对应的注释语句,那么我们的创建路径可以是这样

我们此教程则未使用这种方式,主要还是在于本人喜欢将这部分内容放在同一个包下,就是这么人性

好了,我们在 mapper 下新建 Java Class > Interface:UserMapper

package com.curtain.mapper; import com.curtain.pojo.Users; import java.util.List; /** * ClassName: UserMapper * Function: 用户映射接口 * Date: 2019/11/1 13:38 * author Curtain * version V1.0 */ public interface UserMapper { /** * 查询全部用户 * @return */ List<Users> selAll(); }

6.5 在 mapper 下新建File:UserMapper.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.curtain.mapper.UserMapper"> <!-- 查询全部用户 id:对应接口中的方法名 resultType:由于 mybatis 配置了别名,这里可以直接使用 --> <select id="selAll" resultType="Users"> select * from users </select> </mapper>

6.6 在 service 包下新建Interface:UserService

package com.curtain.service; import com.curtain.pojo.Users; import org.springframework.stereotype.Service; import java.util.List; /** * ClassName: UserService * Function: 用户服务层接口 * Date: 2019/11/1 13:44 * author Curtain * version V1.0 */ public interface UserService { /** * 查询全部用户 * @return */ List<Users> selAll(); }

6.7 在 service 包下新建Package:impl,并在 impl 包下新建Java Class:UserServiceImpl 实现类

注意:@Service

package com.curtain.service.impl; import com.curtain.mapper.UserMapper; import com.curtain.pojo.Users; import com.curtain.service.UserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * ClassName: UserServiceImpl * Function: 服务层用户接口实现 * Date: 2019/11/1 13:47 * author Curtain * version V1.0 */ @Service public class UserServiceImpl implements UserService { @Resource private UserMapper userMapper; @Override public List<Users> selAll() { return userMapper.selAll(); } }

6.8 在 controller 下新建Java Class:UserController

注意:@Controller,@RequestMapping("getAllUser") 

package com.curtain.controller; import com.curtain.pojo.Users; import com.curtain.service.UserService; import com.sun.xml.internal.ws.resources.HttpserverMessages; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpSession; import java.util.List; /** * ClassName: UserController * Function: 用户控制器 * Date: 2019/11/1 13:49 * author Curtain * version V1.0 */ @Controller public class UserController { @Resource private UserService userServiceImpl; @RequestMapping("getAllUser") public String getAllUser(HttpSession session){ // 获取所有的用户 List<Users> list = userServiceImpl.selAll(); // 把数据保存到session session.setAttribute("list", list); return "userList"; } }

6.9 我们在 spring-mvc 中,视图解析器配置 jsp 文件在 WEB-INF/jsp/*.jsp,在 jsp 下新建 userList.jsp

其中通过 jstl 将数据打印在页面中

<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/11/1 Time: 13:56 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <table> <tr> <td>username</td> <td>password</td> </tr> <c:forEach items="${list}" var="users"> <tr> <td>${users.username}</td> <td>${users.password}</td> </tr> </c:forEach> </table> </body> </html>

6.10 至此测试代码全部完成


7、服务器配置

7.1 在菜单中找到 run > Edit Configurations 或 点击下图位置

7.2 在后面弹出窗口按图示操作

7.3 至此服务器配置完成


8、运行项目

8.1 点击图示位置或 alt+R

8.2 在浏览器中输入:http://localhost:9090/getAllUser (9090 为本人改后本地 Tomcat 端口)

8.3 至此,SSM整合完成

 

最新回复(0)