From f3ac3b02d06e8654d7762f3aca880e653b844d2e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B7=AF=E7=8E=B2?= <1516489926@qq.com>
Date: Mon, 1 Jan 2024 23:44:48 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...345\212\240\345\210\235\345\255\246mvc.md" | 260 ++++++++++++++++++
1 file changed, 260 insertions(+)
create mode 100644 "29 \350\267\257\347\216\262/20231229 \345\244\215\344\271\240\345\212\240\345\210\235\345\255\246mvc.md"
diff --git "a/29 \350\267\257\347\216\262/20231229 \345\244\215\344\271\240\345\212\240\345\210\235\345\255\246mvc.md" "b/29 \350\267\257\347\216\262/20231229 \345\244\215\344\271\240\345\212\240\345\210\235\345\255\246mvc.md"
new file mode 100644
index 0000000..2305f85
--- /dev/null
+++ "b/29 \350\267\257\347\216\262/20231229 \345\244\215\344\271\240\345\212\240\345\210\235\345\255\246mvc.md"
@@ -0,0 +1,260 @@
+## 笔记
+
+## SpringMVC 5大核心组件
+
+
+
+
+
+
+
+## 1.前端控制器 DispatcherServlet
+
+DispatcherServlet本质上是一个Servlet,相当于一个中转站,所有的访问都会走到这个Servlet中,再根据配置进行中转到相应的Handler中进行处理,获取到数据和视图后,在使用相应视图做出响应。
+
+## 2.处理器映射器 HandlerMapping
+
+HandlerMapping本质上就是一段映射关系,将访问路径和对应的Handler存储为映射关系,在需要时供前端控制器查阅。
+
+## 3.处理器适配器 HandlerAdapter
+
+本质上是一个适配器,可以根据要求找到对应的Handler来运行。
+
+由于 Handler 涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发 Handler。
+
+## 4.视图解析器(ViewResolver)
+
+本质上也是一种映射关系,可以将视图名称映射到真正的视图地址。前端控制器调用处理器适配完成后得到model和view,将view信息传给视图解析器得到真正的view。
+
+## 5.视图渲染(View)
+
+View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)。
+本质上就是将handler处理器中返回的model数据嵌入到视图解析器解析后得到的页面中,向客户端做出响应。
+
+## SpringMVC5大组件关系
+
+- DispatcherServlet 控制器入口 负责分发请求
+- HandlerMapping 负责根据请求 找到对应的控制器
+- Controller 真正处理请求的控制器
+- ModelAndView 封装数据信息和视图信息的
+- ViewResolver 视图处理器 通过处理找到对应的页面
+
+
+
+
+
+
+
+DispatcherServlet收到请求后,依据HandlerMapping的配置,调用相应的Controller来处理,Controller将处理结果封装成ModelAndView对象,返回给DispatcherServlet,DispatcherServlet依据ViewResolver的解析,调用相应的视图对象,(如jsp)来生成相应的页面。
+
+一言概之,request请求到中央控制器——>传到映射处理器——>转发到指定controller——>获取数据和view ,组成成ModelAndView组件——>通过ViewResolver返回到特定的前台页面。
+
+## 作业
+
+mvc雏形,pom.xml
+
+```xml
+
+ 4.0.0
+ com.xxu
+ mvc
+ war
+ 1.0-SNAPSHOT
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.1.0
+ provided
+
+
+ org.springframework
+ spring-webmvc
+ 5.2.9.RELEASE
+
+
+
+
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+
+ 886
+ /
+
+
+
+
+
+```
+
+user的增加删除修改
+
+再之前的app的基础上加一个service的包,在这里创建UserService接口
+
+```java
+package com.mdd.service;
+
+import com.mdd.domain.User;
+
+import java.util.List;
+
+public interface UserService {
+ //查询所有用户
+ List findAll();
+
+ //按照id查询某个用户
+ User findById(int id);
+
+ //按照id删除某个用户
+ void deleteById(int id);
+
+ //按照某个用户
+ void update(User user);
+
+ //新增用户
+ void insert(User user);
+
+
+}
+
+service
+```
+
+在service包下,再创建一个包impl
+
+```java
+package com.mdd.service.impl;
+
+import com.mdd.domain.User;
+import com.mdd.mapper.UserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class UserService implements com.mdd.service.UserService {
+
+ @Autowired
+ private UserMapper userMapper;
+
+ @Autowired
+ public List findAll(){
+ System.out.println("业务开始");
+ return userMapper.findAll();
+
+ }
+
+ @Override
+ public User findById(int id) { return userMapper.findById(id);}
+
+ @Override
+ public void deleteById(int id) {userMapper.deleteById(id);}
+
+ @Override
+ public void update(User user) {userMapper.update(user);}
+
+ @Override
+ public void insert(User user) {userMapper.insert(user);}
+
+
+
+}
+```
+
+在测试test下创建一个com.mdd.test.UserTest
+
+```java
+package com.mdd.test;
+
+import com.mdd.config.SpringConfig;
+import com.mdd.domain.User;
+import com.mdd.mapper.UserMapper;
+import com.mdd.service.UserService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.util.List;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = SpringConfig.class)
+public class UserTest {
+
+ @Autowired
+ private UserMapper userMapper;
+
+ @Autowired
+ private UserService userService;
+
+ @Test
+ public void test01(){
+ System.out.println("-------------查询所有---------------");
+ List all = userMapper.findAll();
+ System.out.println(all);
+ }
+
+ @Test
+ public void test02(){
+ System.out.println("--------------根据id查询-------------------");
+ User byId = userMapper.findById(1);
+ System.out.println(byId);
+
+ }
+
+ @Test
+ public void test03(){
+ System.out.println("------------------根据id删除--------------------");
+ userMapper.deleteById(3);
+ System.out.println("删除成功!!!");
+
+ }
+
+ @Test
+ public void tets04(){
+ System.out.println("----------------------修改用户--------------------------");
+ //模块浏览器传参
+ String Username = "王鹤棣";
+ String gender = "男";
+ int age = 18;
+ int id = 3;
+
+ User user = new User(id,userName,age,gender);
+ userMapper.update(user);
+ System.out.println("修改成功");
+ }
+
+ @Test
+ public void test05(){
+ System.out.println("--------------------新增用户----------------");
+ //模块浏览器传参
+ String Username = "张万森";
+ String gender = "男";
+ int age = 18;
+
+ User user = new User(null, userName, age, gender);
+ userMapper.insert(user);
+ System.out.println("添加成功");
+
+ }
+
+ @Test
+ public void test06(){
+ List all02 = userService.findAll();
+ System.out.println(all02);
+ }
+
+
+
+
+}
+
+```
+
--
Gitee