SSM项目搭建保姆级教程

您所在的位置:网站首页 ssm实战项目 SSM项目搭建保姆级教程

SSM项目搭建保姆级教程

2023-11-07 05:59| 来源: 网络整理| 查看: 265

文章目录 1、什么是SSM框架1.1、持久层1.2、业务层1.3、表现层1.4、View层1.5、SpringMVC执行流程1.6、MyBatis 2、SSM实战搭建2.1、创建工程2.2、添加依赖2.3、配置spring.xml文件2.4、配置web.xml文件2.5、log4j.properties2.6、准备表2.7、实体类2.8、mapper2.9、service2.10、controller2.11、前端页面1、index.html2、addUser.jsp3、queryUser.jsp4、success.jsp和fail.jsp 2.12、项目结构2.13、部署1、tomcat准备2、IDEA配置Tomcat3、运行4、Tomcat乱码问题

1、什么是SSM框架 SSM框架是Spring、Spring MVC 和MyBatis框架的整合,是标准的MVC模式标准的SSM框架有四层,分别是dao层(mapper),service层,controller层和View层使用spring实现业务对象管理,使用spring MVC负责请求的转发和视图管理,mybatis作为数据对象的持久化引擎 1.1、持久层

持久层,也就是我们常说的dao层或者mapper层

作用:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此

Dao层首先设计的是接口,然后再Spring的配置文件中定义接口的实现类然后可以在模块中进行接口的调用来进行数据业务的处理(不在关心接口的实现类是哪个类)数据源的配置以及有关数据库连接的参数都在Spring的配置文件中进行配置 1.2、业务层

业务层,也就是我们常说的service层

作用:Service层主要负责业务模块的逻辑应用设计

先设计接口然后再设计实类,然后再在Spring的配置文件中配置其实现的关联业务逻辑层的实现具体要调用到自己已经定义好的Dao的接口上,这样就可以在应用中调用Service接口来进行业务处理建立好Dao之后再建立service层,service层又要在controller层之下,因为既要调用Dao层的接口又要提供接口给controller层,每个模型都有一个service接口,每个接口分别封装各自的业务处理的方法 1.3、表现层

表现层,也就是我们常说的Controller层

作用:负责具体的业务模块流程的控制

配置也同样是在Spring的配置文件里面进行调用Service层提供的接口来控制业务流程业务流程的不同会有不同的控制器,在具体的开发中可以将我们的流程进行抽象的归纳,设计出可以重复利用的子单元流程模块 1.4、View层

作用:主要和控制层紧密结合,主要负责前台jsp页面的表示

各层之间的关系:

image-20221228114700648

1.5、SpringMVC执行流程

复杂版:

1、 用户发送请求至前端控制器DispatcherServlet 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet 4、 DispatcherServlet调用HandlerAdapter处理器适配器 5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器) 6、 Controller执行完成返回ModelAndView 7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器 9、 ViewReslover解析后返回具体View 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中) 11、 DispatcherServlet响应用户

简单版:

1.客户端发送请求到DispacherServlet(分发器) 2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller 3.Controller调用业务逻辑处理后,返回ModelAndView 4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图 5.视图负责将结果显示到客户端

1.6、MyBatis MyBatis是对jdbc的封装,它让数据库底层操作变的透明MyBatis的操作都是围绕一个SqlSessionFactory实例展开的MyBatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射在每次与数据库交互时,通过SqlSessionFactory拿到一个SqlSession,再执行sql命令所以,MyBatis的核心是SqlSession 2、SSM实战搭建

搭建思路如下:

image-20221229085956979

2.1、创建工程

image-20221228123037107

image-20221228123137046

image-20221228123228941

新建完成后工程目录结构如下:

image-20221228123430878

然后替换web.xml中的内容如下:

2.2、添加依赖

在pom.xml中添加依赖,如下:

4.0.0 cn.itsource SSMTest 1.0-SNAPSHOT war SSMTest Maven Webapp UTF-8 1.8 1.8 org.springframework spring-webmvc 5.2.15.RELEASE org.mybatis mybatis 3.5.6 org.mybatis mybatis-spring 2.0.6 mysql mysql-connector-java 8.0.28 com.alibaba druid 1.2.1 org.projectlombok lombok 1.18.24 com.fasterxml.jackson.core jackson-databind 2.13.2.2 javax.servlet javax.servlet-api 4.0.1 org.springframework spring-jdbc 5.2.15.RELEASE log4j log4j 1.2.17 org.slf4j slf4j-log4j12 1.7.30 2.3、配置spring.xml文件

在main目录下,新建java和resources目录,如下:(如果有就不需要新建了)

image-20221228123823850

然后在resources目录下新建spring.xml,内容如下:

2.4、配置web.xml文件

web.xml内容如下:

spring org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring.xml spring / CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 forceRequestEncoding true forceResponseEncoding true CharacterEncodingFilter /* 2.5、log4j.properties

在resources目录下新建log4j.properties文件,内容如下:

log4j.rootLogger=DEBUG, 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 2.6、准备表

在本地MySQL服务器中新建数据库【ssmtest】,然后新建表【t_user】,建表语句如下:

DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名', `sex` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别', `age` int(3) NULL DEFAULT NULL COMMENT '年龄', `intro` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '个人简介', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_user_username`(`username`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC; 2.7、实体类 package cn.itsource.entity; import lombok.Data; /** *

用户信息表对应实体类

* * @author 波波老师(微信 : javabobo0513) */ @Data public class User { private Long id; private String username; private String sex; private Integer age; private String intro; } 2.8、mapper

在dao包下新建UserMapper类,代码:

package cn.itsource.dao; import cn.itsource.entity.User; import java.util.List; /** *

UserMapper

* * @author 波波老师(微信 : javabobo0513) */ public interface UserMapper { //保存用户信息到数据库 int saveUser(User user); //查询数据库中所有用户信息 List selectAllUser(); }

在resources下的mapper文件夹中新建UserMapper.xml文件,代码如下:

DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> insert into t_user(username, sex, age, intro) values (#{username}, #{sex}, #{age}, #{intro}) select id, username, sex, age, intro from t_user order by id desc 2.9、service

在service包下新建UserService类:代码如下:

package cn.itsource.service; import cn.itsource.entity.User; import java.util.List; /** *

UserService

* * @author 波波老师(微信 : javabobo0513) */ public interface UserService { //保存用户信息到数据库 int saveUser(User user); //查询数据库中所有用户信息 List selectAllUser(); }

然后在service包下新建impl包,其下新建UserServiceImpl类,代码如下:

package cn.itsource.service.impl; import cn.itsource.dao.UserMapper; import cn.itsource.entity.User; import cn.itsource.service.UserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** *

UserServiceImpl

* * @author 波波老师(微信 : javabobo0513) */ @Service public class UserServiceImpl implements UserService { //注入 UserMapper 对象 @Resource private UserMapper userMapper; @Override public int saveUser(User user) { return userMapper.saveUser(user); } @Override public List selectAllUser() { return userMapper.selectAllUser(); } } 2.10、controller

在controller包下新建UserController类,代码如下:

package cn.itsource.controller; import cn.itsource.entity.User; import cn.itsource.service.UserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import java.util.List; /** *

UserController

* * @author 波波老师(微信 : javabobo0513) */ @RestController @RequestMapping("/user") public class UserController { @Resource private UserService userService; /** * 新增用户 * @param user * @return */ @PostMapping("/saveUser") public ModelAndView saveUser(User user){ ModelAndView mv = new ModelAndView(); int saveCount = userService.saveUser(user); if(saveCount > 0){ mv.addObject("msg", "新增用户成功"); mv.setViewName("success"); }else{ mv.addObject("msg", "新增用户失败"); mv.setViewName("fail"); } return mv; } /** * 查询所有用户信息 * @param user * @return */ @GetMapping("/selectAllUser") public List selectAllUser(User user){ List userList = userService.selectAllUser(); return userList; } } 2.11、前端页面 1、index.html

首先改造webapp目录下的index.html文件,内容如下:

SSM实战案例

SSM整合小案例

注册用户 查询用户

效果如下:

image-20221228143114725

2、addUser.jsp

在webapp目录下新建文件addUser.jsp,用来新增用户,代码如下:

注册用户

注册用户

姓名: 年龄: 性别: 简介:

效果如下:

image-20221228143042628

3、queryUser.jsp

在webapp目录下新建文件queryUser.jsp,用来查询所有用户,代码如下:

查询学生 $(function () { $("#myBtn").on("click",function () { $.ajax({ url: "user/selectAllUser", dataType: "json", success: function (resp) { $("#userInfo").empty(); $.each(resp, function (i,n) { $("#userInfo").append("" + n.id + "" + "" + n.username + "" + "" + n.age + "" + "" + n.sex + "" + "" + n.intro + ""); }) } }) }) }) .tdStyle{ width: 100px; }

用户列表 获取用户信息

id 姓名 年龄 性别 简介

效果如下:

image-20221228143206573

4、success.jsp和fail.jsp

在webapp - WEB-INF目录下新建success.jsp和fail.jsp文件,内容分别如下:

success.jsp:

success 结果:${msg}

效果:

image-20221228143322002

fail.jsp:

fail 结果:${msg} 2.12、项目结构

目前项目结构如下:

image-20221228143711302

2.13、部署 1、tomcat准备

本地部署到tomcat,首先需要你本地有tomcat服务器,下载地址:

链接:https://pan.baidu.com/s/1VpRboSME8R64yhXE4MwxiA

提取码:nr43

下载下来后,直接解压即可,如下:

image-20221228143542493

我这里使用的tomcat版本是:8.5.75

2、IDEA配置Tomcat

按照下面步骤一步一步做就可以在IDEA中配置好tomcat了

image-20221228143824954

image-20221228143909733

image-20221228144038540

image-20221228144206292

image-20221228144228706

image-20221228144249243

image-20221228144313541

然后开始部署:

image-20221228144421773

image-20221228144449980

image-20221228144529397

然后:

image-20221228144623293

就成这样了:

image-20221228144659317

3、运行

image-20221228144807680

image-20221228145017340

启动成功后,会自动打开页面,如下:

image-20221228145038065

到此,我们的SSM项目就部署完毕,可以正常使用了

4、Tomcat乱码问题

上面我们可以看到,Tomcat启动后,控制台打印的日志出现了乱码,按照下面方式做即可

打开tomcat安装目录下conf下的logging.properties文件:

image-20221228150624243

将该配置文件中的UTF-8全部改成GBK

然后再重启一下Tomcat,就会发现已经没有乱码了:

image-20221228150830314

如果按照上面设置后还没有好的话,就继续设置:

查看下IDEA的字集是不是UTF-8,确认一下,不是的话,改成UTF-8:

image-20221228145524466

打开IDEA的安装目录下的bin目录,打开里面的idea64.exe.vmoptions文件:

image-20221228145746705

添加内容:

-Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3