当前位置: 首页 > java >正文

ssm项目环境搭建

一、SSM 框架概述

(一)框架组成与优势

SSM(Spring + Spring MVC + MyBatis)是 Java 企业级开发中经典的三层架构组合:

  • Spring:核心容器负责 Bean 管理与依赖注入(DI),通过 AOP 实现事务管理、日志记录等功能,简化组件间协作。
  • Spring MVC:基于 MVC 模式的 Web 框架,分离控制器(Controller)、模型(Model)和视图(View),优化前端请求处理流程。
  • MyBatis:ORM(对象关系映射)框架,通过 XML 或注解配置实现 SQL 映射,简化 JDBC 操作,提升数据库访问效率。

优势:轻量级、灵活性高、社区资源丰富,适用于中大型 Web 项目开发。

(二)应用场景

  • 企业级信息管理系统(如 OA、ERP)
  • 电商平台、门户网站、内容管理系统(CMS)

二、环境搭建与依赖配置

(一)开发环境准备

  • JDK:建议 1.8+(需配置环境变量)
  • IDE:IntelliJ IDEA(推荐)/Eclipse
  • 服务器:Tomcat 8.5+
  • 数据库:MySQL 5.7+/Oracle
  • 构建工具:Maven 3.6+(管理项目依赖)

(二)Maven 项目创建与依赖配置

1. 创建 Maven Web 项目
  • 在 IDEA 中选择Create New Project → Maven → 勾选Create from archetype → 选择maven-archetype-webapp
2. 添加核心依赖(pom.xml)
    <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><!--springmvc--><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-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-test</artifactId><version>${spring.version}</version></dependency><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!--mybatis和siring的整合包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.6</version></dependency><!-- 连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.9</version></dependency><!-- junit测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!--Log4j日志--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--https://mvnrepository.com/artifact/com.qithub.pagehelper/pagehelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.0</version></dependency><!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.1</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!--Spring5和Thymeleaf整合包--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency>

三、核心配置文件详解

(一)Spring 配置(applicationContext.xml)

1. 数据库连接池配置
<!-- 加载属性文件 -->
<context:property-placeholder location="classpath:jdbc.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>
2. MyBatis 工厂 Bean 配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 配置MyBatis全局配置文件 --><property name="configLocation" value="classpath:mybatis-config.xml"/><!-- 自动扫描Mapper接口路径 --><property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean><!-- 扫描Mapper接口并注册为Bean -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.example.mapper"/>
</bean>

(二)Spring MVC 配置(springmvc.xml)

1. 注解驱动与视图解析器
<!-- 开启注解驱动 -->
<mvc:annotation-driven/><!-- 视图解析器(示例:使用html) -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".html"/>
</bean><!-- 静态资源放行 -->
<mvc:resources mapping="/static/**" location="/static/"/>
2. 扫描 Controller 包
<context:component-scan base-package="com.qcby.controller"/>

(三)Web.xml 配置

<!-- Spring容器初始化 -->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value>
</context-param><!-- Spring MVC前端控制器 -->
<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>springmvc</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping><!-- 编码过滤器 -->
<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><init-param><param-name>forceRequestEncoding</param-name><param-value>true</param-value></init-param>
</filter>
<filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

四、实战案例:用户管理模块开发

(一)项目结构规划

src/main/java
├── com.example
│   ├── controller (控制器层)
│   ├── service     (服务层)
│   ├── dao/mapper (数据访问层)
│   └── pojo        (实体类)
src/main/resources
├── mapper          (MyBatis映射文件)
├── mybatis-config.xml (MyBatis全局配置)
└── db.properties    (数据库配置)
src/main/webapp
├── WEB-INF/views    (视图层JSP)
└── static           (静态资源)

(二)实体类定义(User.java)

public class User {private Integer id;private String username;private String password;private Date createTime;// 省略getter/setter/toString
}

(三)Mapper 接口与映射文件

1. UserMapper.java
public interface UserMapper {List<User> selectAll();User selectById(Integer id);int insert(User user);int update(User user);int delete(Integer id);
}
2. UserMapper.xml
<mapper namespace="com.qcby.dao.UserMapper"><select id="selectAll" resultType="com.qcby.pojo.User">SELECT * FROM user</select><select id="selectById" resultType="com.qcby.pojo.User">SELECT * FROM user WHERE id = #{id}</select><insert id="insert" parameterType="com.qcby.pojo.User">INSERT INTO user (username, password, create_time)VALUES (#{username}, #{password}, #{createTime})</insert><!-- 省略update和delete语句 -->
</mapper>

(四)服务层实现(UserService.java)

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> getAllUsers() {return userMapper.selectAll();}// 省略其他业务方法
}

(五)控制器层(UserController.java)

@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/list")public String list(Model model) {List<User> userList = userService.getAllUsers();model.addAttribute("userList", userList);return "user/list"; // 对应视图文件user/list.jsp}// 省略新增、修改、删除接口
}

(六)视图层示例(list.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户列表</title>
</head>
<body><h1>用户管理系统</h1><table border="1"><tr><th>ID</th><th>用户名</th><th>创建时间</th></tr><c:forEach items="${userList}" var="user"><tr><td>${user.id}</td><td>${user.username}</td><td><fmt:formatDate value="${user.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td></tr></c:forEach></table>
</body>
</html>

五、常见问题与解决方案

(一)依赖冲突

  • 现象:编译时报类重复错误(如ClassNotFoundException)。
  • 解决:使用mvn dependency:tree命令查看依赖树,排除冲突版本,指定统一版本。

(二)MyBatis 映射失败

  • 检查点
    1. Mapper 接口与映射文件的namespace是否一致。
    2. SQL 语句的id是否与接口方法名一致。
    3. MyBatis 配置文件是否正确扫描mapperLocations

(三)Spring MVC 请求 404

  • 排查步骤
    1. 确认DispatcherServlet映射路径是否正确(如/*.do)。
    2. 检查 Controller 类是否添加@Controller注解,方法是否添加@RequestMapping
    3. 视图解析器路径是否与 JSP 文件路径匹配。

六、拓展与优化建议

(一)集成日志框架

  • 添加 Log4j 2 或 SLF4J 依赖,在 Spring 配置中加入日志配置文件,记录关键业务操作和异常信息。

(二)使用事务管理

  • 在 Service 方法上添加@Transactional注解,结合 Spring AOP 实现声明式事务控制,保证数据一致性。

(三)前后端分离改造

  • 将 Spring MVC 替换为 Spring Boot + Spring WebFlux,前端使用 Vue/React,通过 RESTful API 交互(需调整响应格式为 JSON)。

(四)性能优化

  • MyBatis 开启二级缓存,配置cacheEnabled="true"
  • 数据库层优化 SQL 语句,添加索引,使用连接池监控工具(如 Druid 监控面板)。

七、总结与学习资源推荐

(一)核心优势总结

  • 分层清晰:解耦各层职责,便于团队协作开发。
  • 灵活性高:可替换模块(如 MyBatis 换 Hibernate),适应不同项目需求。
  • 生态成熟:大量第三方库支持(如 Spring Security、Redis 集成)。

(二)学习资源

  • 官方文档
    • Spring Framework Reference
    • MyBatis Documentation

通过以上步骤,你已掌握 SSM 框架的核心配置与开发流程。实际项目中需结合业务场景灵活调整,逐步积累优化经验。如需进一步探讨某模块细节,欢迎留言交流!

http://www.xdnf.cn/news/7530.html

相关文章:

  • 【漫话机器学习系列】270.KNN算法(K-Nearest Neighbors)
  • JDK8到JDK17最常用的核心功能
  • mariadb-cenots8安装
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的社群构建与新型消费迎合策略研究
  • 【Linux】第二十二章 访问网络附加内存
  • OpenCv高阶(8.0)——答题卡识别自动判分
  • 驱动开发硬核特训 · Day 31:理解 I2C 子系统的驱动模型与实例剖析
  • 前端开发——前端样式BUG调试全指南2025终极版
  • 什么是数据中台
  • TYUT-企业级开发教程-第8章
  • RK3568 OH5.1 搭建环境及源码获取
  • C/C++ 整数类型的长度
  • 基于CodeBuddy的Craft完成一个数字华容道的小游戏
  • File的使用
  • 79、modelsim单独仿真altera带IP核的文件
  • 如何解决全局或静态变量被修改的bug
  • 基于R语言的空间异质性数据分析技术
  • Vue 3 ~ 3.5 版本useTemplateRef使用
  • Vue3.0教程005:watch监视ref定义的【基本类型】数据和【对象类型】数据
  • Vortex GPGPU的github流程跑通与功能模块波形探索(三)
  • 系统设计——项目设计经验总结1
  • arcgispro双击打开没反应怎么办
  • 基于 ABP vNext + CQRS + MediatR 构建高可用与高性能微服务系统:从架构设计到落地实战
  • ubuntu设置conda虚拟环境
  • es疑惑解读
  • 基于HTML的Word风格编辑器实现:从零打造功能完备的富文本编辑器
  • 【c# 类型转换中 as 和()】
  • 题解:AT_abc244_e [ABC244E] King Bombee
  • 如何使用AI辅助开发CSS3 - 通义灵码功能全解析
  • 杰发科技AC7840——如何把结构体数据写到Dflash中