厦门最早做网站的公司,wordpress wp大学,做美食的视频网站,景安 怎么把网站做别名文章目录1、什么是SSM框架1.1、持久层1.2、业务层1.3、表现层1.4、View层1.5、SpringMVC执行流程1.6、MyBatis2、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、…
文章目录1、什么是SSM框架1.1、持久层1.2、业务层1.3、表现层1.4、View层1.5、SpringMVC执行流程1.6、MyBatis2、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.jsp2.12、项目结构2.13、部署1、tomcat准备2、IDEA配置Tomcat3、运行4、Tomcat乱码问题1、什么是SSM框架
SSM框架是Spring、Spring MVC 和MyBatis框架的整合是标准的MVC模式标准的SSM框架有四层分别是dao层mapperservice层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页面的表示
各层之间的关系 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实战搭建
搭建思路如下 2.1、创建工程 新建完成后工程目录结构如下 然后替换web.xml中的内容如下
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0
/web-app2.2、添加依赖
在pom.xml中添加依赖如下
?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcn.itsource/groupIdartifactIdSSMTest/artifactIdversion1.0-SNAPSHOT/versionpackagingwar/packagingnameSSMTest Maven Webapp/namepropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.target/propertiesdependencies!--spring-webmvc--dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.15.RELEASE/version/dependency!--mybatis依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version/dependency!--mybatis和spring整合的依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion2.0.6/version/dependency!--mysql驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.28/version/dependency!--druid连接池依赖--dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.1/version/dependency!--lombok依赖--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependency!--jackson java对象转换为json对象 ResponseBody--dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.13.2.2/version/dependency!--servlet-api依赖--dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.2.15.RELEASE/version/dependency!--sql日志--dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.30/version/dependency/dependencies/project2.3、配置spring.xml文件
在main目录下新建java和resources目录如下如果有就不需要新建了 然后在resources目录下新建spring.xml内容如下
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd!--包扫描--context:component-scan base-packagecn.itsource /!-- 声明视图解析器 --bean classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/jsp/ /property namesuffix value.jsp //bean!--静态资源放行--mvc:default-servlet-handler /!-- 声明springmvc注解驱动 --mvc:annotation-driven /!--数据源配置--bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName valuecom.mysql.cj.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/ssmtest?serverTimezoneAsia/Shanghai/property nameusername valueroot/property namepassword value123456/!--初始化连接数量根据你项目的并发进行评估--!--最少连接池的个数--property nameminIdle value5/!--初始的连接池的个数--property nameinitialSize value5/!--最大的连接个数--property namemaxActive value10/!--超过的最大连接池个数等待时间 单位是毫秒--property namemaxWait value3000//beanbean idsessionFactory classorg.mybatis.spring.SqlSessionFactoryBean!--设置数据源--property namedataSource refdataSource /!--设置mybatis映射文件的路径--property namemapperLocations valueclasspath:mapper/*.xml //bean!--为dao接口生成代理实现类--bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valuecn.itsource.dao //bean/beans2.4、配置web.xml文件
web.xml内容如下
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--servlet--servletservlet-namespring/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:spring.xml/param-value/init-param/servletservlet-mappingservlet-namespring/servlet-nameurl-pattern//url-pattern/servlet-mapping!-- 声明字符集过滤器 --filterfilter-nameCharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-paraminit-paramparam-nameforceRequestEncoding/param-nameparam-valuetrue/param-value/init-paraminit-paramparam-nameforceResponseEncoding/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-nameCharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping
/web-app2.5、log4j.properties
在resources目录下新建log4j.properties文件内容如下
log4j.rootLoggerDEBUG, Console
#Console
log4j.appender.Consoleorg.apache.log4j.ConsoleAppender
log4j.appender.Console.layoutorg.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSetINFO
log4j.logger.org.apacheINFO
log4j.logger.java.sql.ConnectionDEBUG
log4j.logger.java.sql.StatementDEBUG
log4j.logger.java.sql.PreparedStatementDEBUG2.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;/*** p用户信息表对应实体类/p** 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;/*** pUserMapper/p** author 波波老师(微信 javabobo0513)*/
public interface UserMapper {//保存用户信息到数据库int saveUser(User user);//查询数据库中所有用户信息ListUser selectAllUser();
}在resources下的mapper文件夹中新建UserMapper.xml文件代码如下
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecn.itsource.dao.UserMapper!-- 使用 insert、update、delete、select 标签编写sql语句 --!--保存用户信息到数据库--insert idsaveUserinsert into t_user(username, sex, age, intro) values (#{username}, #{sex}, #{age}, #{intro})/insert!--查询所有用户信息--select idselectAllUser resultTypecn.itsource.entity.Userselect id, username, sex, age, intro from t_user order by id desc/select
/mapper2.9、service
在service包下新建UserService类代码如下
package cn.itsource.service;import cn.itsource.entity.User;
import java.util.List;/*** pUserService/p** author 波波老师(微信 javabobo0513)*/
public interface UserService {//保存用户信息到数据库int saveUser(User user);//查询数据库中所有用户信息ListUser 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;/*** pUserServiceImpl/p** author 波波老师(微信 javabobo0513)*/
Service
public class UserServiceImpl implements UserService {//注入 UserMapper 对象Resourceprivate UserMapper userMapper;Overridepublic int saveUser(User user) {return userMapper.saveUser(user);}Overridepublic ListUser 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;/*** pUserController/p** author 波波老师(微信 javabobo0513)*/
RestController
RequestMapping(/user)
public class UserController {Resourceprivate 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 ListUser selectAllUser(User user){ListUser userList userService.selectAllUser();return userList;}
}2.11、前端页面
1、index.html
首先改造webapp目录下的index.html文件内容如下
% page contentTypetext/html;charsetutf-8 languagejava %
%String basePathrequest.getScheme() :// request.getServerName() : request.getServerPort() request.getContextPath() /;
%
html
headbase href%basePath%titleSSM实战案例/title
/head
body
div aligncenterpSSM整合小案例/ptabletrtda hrefaddUser.jsp注册用户/a/tdtdbr//tdtda hrefqueryUser.jsp查询用户/a/td/tr/table
/div
/body
/html效果如下 2、addUser.jsp
在webapp目录下新建文件addUser.jsp用来新增用户代码如下
% page contentTypetext/html;charsetutf-8 languagejava%
html
headtitle注册用户/title
/head
body
div aligncenterp注册用户/pform actionuser/saveUser methodposttabletrtd姓名/tdtdinput typetext nameusername/td/trtrtd年龄/tdtdinput typetext nameage/td/trtrtd性别/tdtdinput typetext namesex/td/trtrtd简介/tdtdinput typetext nameintro/td/trtrtd/tdtdinput typesubmit value注册/td/tr/table/form
/div
/body
/html效果如下 3、queryUser.jsp
在webapp目录下新建文件queryUser.jsp用来查询所有用户代码如下
% page contentTypetext/html;charsetutf-8 languagejava %
%String basePathrequest.getScheme() :// request.getServerName() : request.getServerPort() request.getContextPath() /;
%
html
headbase href%basePath%title查询学生/title%--script typetext/javascript srcjs/jquery-3.6.0.js/script--%script srchttps://code.jquery.com/jquery-3.6.0.min.js/scriptscript typetext/javascript$(function () {$(#myBtn).on(click,function () {$.ajax({url: user/selectAllUser,dataType: json,success: function (resp) {$(#userInfo).empty();$.each(resp, function (i,n) {$(#userInfo).append(trtd n.id /td td n.username /td td n.age /td td n.sex /td td n.intro /td/tr);})}})})})/scriptstyle.tdStyle{width: 100px;}/style
/head
body
div aligncenterp用户列表 button idmyBtn获取用户信息/button/ptabletheadtrtd classtdStyleid/tdtd classtdStyle姓名/tdtd classtdStyle年龄/tdtd classtdStyle性别/tdtd classtdStyle简介/td/tr/theadtbody iduserInfo/tbody/table
/div
/body
/html效果如下 4、success.jsp和fail.jsp
在webapp - WEB-INF目录下新建success.jsp和fail.jsp文件内容分别如下
success.jsp
% page contentTypetext/html;charsetutf-8 languagejava %
html
headtitlesuccess/title
/head
body
h3结果${msg}/h3
/body
/html效果 fail.jsp
% page contentTypetext/html;charsetutf-8 languagejava %
html
headtitlefail/title
/head
body
h3结果${msg}/h3
/body
/html2.12、项目结构
目前项目结构如下 2.13、部署
1、tomcat准备
本地部署到tomcat首先需要你本地有tomcat服务器下载地址
链接https://pan.baidu.com/s/1VpRboSME8R64yhXE4MwxiA
提取码nr43
下载下来后直接解压即可如下 我这里使用的tomcat版本是8.5.75
2、IDEA配置Tomcat
按照下面步骤一步一步做就可以在IDEA中配置好tomcat了 然后开始部署 然后 就成这样了 3、运行 启动成功后会自动打开页面如下 到此我们的SSM项目就部署完毕可以正常使用了
4、Tomcat乱码问题
上面我们可以看到Tomcat启动后控制台打印的日志出现了乱码按照下面方式做即可
打开tomcat安装目录下conf下的logging.properties文件 将该配置文件中的UTF-8全部改成GBK
然后再重启一下Tomcat就会发现已经没有乱码了 如果按照上面设置后还没有好的话就继续设置
查看下IDEA的字集是不是UTF-8确认一下不是的话改成UTF-8 打开IDEA的安装目录下的bin目录打开里面的idea64.exe.vmoptions文件 添加内容
-Dfile.encodingUTF-8
-Dconsole.encodingUTF-8