SSM
三大框架 Spring框架 SpringMVC框架 MyBatis框架
1.Spring框架作用
可以解决对象创建以及对象之间依赖关系的一种框架。
2.SpringMVC框架的作用 (解决控制器层存在的问题)
解决了V-C之间的问题,简化开发。
V表示View,即视图,通常表现为HTML或JSP页面,C表示Controller,即控制器,在此前的学习中,表示的是Servlet。
原有的Controller,即Servlet存在的问题:默认情况下,每个Servlet对应1个请求路径,在实际项目开发中,就可能存在请求路径的种类较多,进而Servlet的数量也会较多,存在的问题就比较明显:配置复杂、管理难度大、Servlet实例太多,内存开销大……
3.MyBatis框架作用 (解决持久层存在的问题)
解决持久层数据处理的问题,主要是基于JDBC技术的原生代码比较繁琐,没有经过任何优化,开发甚至执行效率低下!
使用MyBatis框架时,不必关心JDBC技术如何实现,只需要编写需要执行的操作的抽象方法,例如User findById(Integer id),然后,为这个方法映射所需执行的SQL语句即可。
4.AJAX的作用
在Java EE中,常见的响应方式有:转发和重定向。
无论是转发,还是重定向,都是由服务器端完成最终页面的显示,具体的表现为:用户提交请求后,页面完全由服务器端来完成!并且,伴随着页面的“刷新”!
例如:当用户尝试登录时,假设用户名错误,只能转发到某个页面(可能是错误提示页面),或重定向到某个页面,无论是哪种操作,用户在浏览器中看到的都不会再是原有的页面了!
使用这种做法,主要问题在于:(1)用户体验非常差;(2)服务器端压力较大,用户的请求次数也可能较多!(3)不适用于多种不同的客户端,例如PC端的浏览器、Android APP、iOS APP……
其实,服务器端并不一定需要把页面都处理掉,更多的应该是告之客户端此次操作的结果,例如客户端尝试登录时,服务器端应该给出“登录成功”或“登录失败!用户名或密码错误!”此类的结果即可,至于界面如何处理,可以交给客户端程序(例如Javascript)去进行处理!
SpringBoot
- 基本概念
每次创建新的SSM项目,都需要:创建Maven项目,添加依赖,配置web.xml,添加spring的配置文件,进行springmvc的相关配置,添加数据库的配置文件,配置mybatis等……准备工作相当的多,而且,随着项目的深入,可能还需要在开发过程中添加新的依赖或新的配置。
事实上,每个不同的项目,经历以上的过程是极为相似的!
使用SpringBoot可以快速的创建项目,却不用关心以上各种配置,在SpringBoot中,有一项开发理念就是“约定大于配置”,即:大多数人共同遵守的配置习惯,将在SpringBoot中成为默认配置,开发者就不必再关心这些配置了!
当然,SpringBoot还有更多特性,后续再补充!
重要 接下来介绍在框架操作时的操作流程!!!
图下面这三个层的作用需要大家重点记住!!!
Controller层 Service层 Mybatis持久层框架
1.表单校验 1.校验查询条件 Dao层
2.控制跳转 2.调用Dao层 1.执行数据库操作
3.调用服务 3.业务逻辑处理 2.事务控制
4.异常处理 4.数据封装 3.持久化数据
5.异常处理 4.连接数据库
6.事务处理
**框架运行控制器层 到业务层 再到持久层!!!**
接下来就是流程顺序
持久层操作结束,接下来需要在test层进行测试,确保在业务层 再到控制器层不会出现错误
1.创建数据库
2.创建实体类
3.持久层
3.1持久层接口mapper
3.2持久层配置xml
4.业务层
4.1业务接口
4.2业务异常
4.3业务实现类
业务层进行测试
5.控制器层
5.1控制器异常
控制器层进行测试
详细介绍!!!!!
1.创建数据库
如
2.创建实体类
public class User extends BaseEntity{
/**
*实体类
1.实现序列化
完成get set方法
这里面的变量不一定要和数据库里面的名字一样
*/
private static final long serialVersionUID = -1593226973032208283L;
private Integer id;
private String username;
private String password ;
private String salt ;
private Integer gender ;
private String phone ;
private String email ;
private String avatar ;
private Integer isDelete;
接下来项目的操作顺序 第一、持久层 ; 第二、业务层 ; 第三、控制器层;
3.持久层
3.1持久层接口mapper
/**
* 收货地址的持久层接口
*/
public interface AddressMapper {
/**
* 增加新的收货地址数据
* @param address 收货地址数据
* @return 受影响的行数
*/
Integer addnew(Address address);
3.2持久层配置xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!--映射接口文件 -->
<mapper namespace="cn.tedu.store.mapper.UserMapper">
<!-- 插入用户数据 -->
<!--Integer addnew(User user); -->
<insert id="addnew"
parameterType="cn.tedu.store.entity.User"
useGeneratedKeys="true"
keyProperty="id">
insert into t_user (
username,password,
salt,gender,
phone,email,
avatar, is_delete,
created_user,created_time,
modified_user,modified_time
) values(
#{username},#{password},
#{salt},#{gender},
#{phone},#{email},
#{avatar},#{isDelete},
#{createdUser},#{createdTime},
#{modifiedUser},#{modifiedTime}
)
</insert>
持久层操作结束,接下来需要在test层进行测试,确保在业务层 再到控制器层不会出现错误
4.业务层
4.1业务接口
4.2业务异常
4.3业务实现类
@Service
public class UserServiceImpl implements IUserService{
@Autowired private UserMapper userMapper;
@Override
public void changeInfo(User user) throws UpDateException, UserNotFoundException {
System.out.println(user);
// 根据user.getId()查询用户数据
User data=findById(user.getId());
System.out.println(data);
// 判断数据是否为null
if(data==null) {
// 是:抛出:UserNotFoundException
throw new UserNotFoundException("您查询的用户不存在");
}
// 判断is_delete是否为1
if(data.getIsDelete()==1) {
// 是:抛出:UserNotFoundException
throw new UserNotFoundException("您查询的用户已被删除");
}
// 向参数对象中封装:
// - modified_user > data.getUsername()
user.setModifiedUser(data.getUsername());
// - modified_time > new Date()
user.setModifiedTime(new Date());
// 执行修改:gender,phone,email,modified_user,modified_time
System.out.println(user);
updateInfo(user);
System.out.println("修改完毕");
}
业务层进行测试
5.控制器层
5.1控制器异常
控制器层进行测试
接下来不同层的具体使用会再接下来的文章中介绍!!!