SSM框架良心之作

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

  1. 基本概念
    每次创建新的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.事务处理

**框架运行控制器层 到业务层 再到持久层!!!**

SpringMVC流程图帮助大家来理解
接下来就是流程顺序
持久层操作结束,接下来需要在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控制器异常
在这里插入图片描述
控制器层进行测试
接下来不同层的具体使用会再接下来的文章中介绍!!!

猜你喜欢

转载自blog.csdn.net/qq_43165760/article/details/86315286