SpringMVC学习笔记

ops/2024/9/22 21:36:45/

SpringMVC搞定以后就可以开始整合了

文章目录

  • 一、随便讲点儿
    • 1.1 SpringMVC底层原理 [ 执行流程
    • 1.2 SpringMVC组件
  • 二、xml配置 开发
    • 2.1 web.xml配置前端控制器
    • 2.2 springmvc.xml配置其他
    • 2.3 开发处理器:就是写和上面不一样的东西
    • 2.4 前端视图
    • 2.5 配置Tomcat访问前端
  • 三、注解 开发
    • 3.2 springmvc.xml 配置其他
    • 3.3 开发处理器:注解版


一、随便讲点儿

SpringMVC是Spring框架的一个模块儿,是一个基于Spring的Web框架

1.1 SpringMVC底层原理 [ 执行流程

流程示意图

  1. 发送请求到前端控制器DispatcherServlet
  2. 前端控制器请求处理器映射器HandlerMapping查找Handler(就是Controller
    可以根据web.xml进行查找、注解进行查找
  3. 处理器映射器前端控制器返回Handler
  4. 前端控制器调用处理器适配器去执行Handler
  5. 处理器适配器执行Handler,向前端控制器返回ModelAndView
  6. 前端控制器请求进行视图解析
  7. 视图解析器解析完毕后返回View
  8. 前端控制器进行视图渲染
  9. 前端控制器向用户响应结果

1.2 SpringMVC组件

组件

  • 前端控制器:接收请求 响应结果 相当于一个转发器 中央处理器
  • 处理器映射器: 根据请求的url查找handler
  • 处理器适配器: 按照一定的规则执行Handler
  • Handler处理器:编写Handler的时候需要依照功能需求进行
  • 视图解析器:对视图进行解析,根据逻辑视图名得到真正的视图
  • 视图:View是一个接口,支持不同的视图

二、xml配置 开发

导入相关依赖就不说了嗷,还有头文件自己搜吧

2.1 web.xml配置前端控制器

<!--    配置前端控制器  --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>

2.2 springmvc.xml配置其他

<!--配置处理器适配器--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--配置处理器映射器--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/><!--配置处理器:这玩意儿和上面的不一样--><bean name="/test.action" class="com.test"/>

2.3 开发处理器:就是写和上面不一样的东西

package com;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;//要实现org.springframework.web.servlet.mvc.Controller
public class test implements Controller {//处理器处理完返回的是ModelAndView @Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {//测试数据List<User> userList = new ArrayList<>();userList.add(new User("zhangsan",20));userList.add(new User("lisqi",21));userList.add(new User("wangwu",23));//创建ModelAndView ModelAndView mav = new ModelAndView();//将数据给到前端视图mav.addObject("userList",userList);//设置视图mav.setViewName("test.jsp");return mav;}
}

2.4 前端视图

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Title</title>
</head>
<body><c:forEach items="${userList}" var="users">${users.name} &nbsp;  &nbsp; &nbsp; ${users.age}<hr/></c:forEach>
</body>
</html>

2.5 配置Tomcat访问前端

http://localhost:8080/MySpringMVC_war_exploded/test.action

三、注解 开发

上面的开发的时候,处理器要实现接口,所以不是很方便。
我们利用注解可以在一个处理器里面实现多个方法。

3.2 springmvc.xml 配置其他

<!--注解日常扫描--><context:component-scan base-package="com"/>
<!--配置处理器适配器、配置处理器映射器:一句话的事儿--><mvc:annotation-driven/><!--配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--设置前缀:拼接到视图的前面--><property name="prefix" value="/"/><!--设置后缀:拼接到视图的后面--><property name="suffix" value=".jsp"/></bean>
<!--配置处理器:不配置啦!直接注解-->

3.3 开发处理器:注解版

@Controller //注解:有四个
@RequestMapping("/")//窄化路径:访问时候的路径
public class Test {@RequestMapping("test")//还有其他的写法:主要是返回值和输入参数的区别。public ModelAndView list() {List<User> lists = new ArrayList<>();lists.add(new User("aaa",13));lists.add(new User("cccc",14));lists.add(new User("mmm",15));ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("userList",lists);modelAndView.setViewName("user/list");return modelAndView;}
}

唉……感觉自己效率好低,学海无涯啊


http://www.ppmy.cn/ops/3712.html

相关文章

自定义Vue 2双向绑定指令:实现与解析

自定义Vue 2双向绑定指令&#xff1a;实现与解析 Vue.js以其简洁的语法和强大的数据绑定功能深受开发者喜爱。其中&#xff0c;内置的v-model指令实现了输入控件与数据模型之间的双向绑定&#xff0c;简化了表单交互的处理。然而&#xff0c;在某些特定场景下&#xff0c;我们…

Python-VBA函数之旅-getattr函数

目录 一、getattr函数的常见应用场景&#xff1a; 二、getattr函数使用注意事项&#xff1a; 1、getattr函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.21…

分类算法——模型选择与调优(三)

交叉验证 交叉验证&#xff1a;将拿到的训练数据&#xff0c;分为训练和验证集。以下图为例&#xff1a;将数据分成4份&#xff0c;其中 一份作为验证集。然后经过4次&#xff08;组&#xff09;的测试&#xff0c;每次都更换不同的验证集。即得到4组模型的 结果&#xff0c;取…

深入探索Apache ZooKeeper:关键技术学习与实践指南

导语 Apache ZooKeeper&#xff0c;作为一款广受认可的分布式协调服务&#xff0c;为大型分布式系统提供了强大的数据一致性、服务注册与发现、分布式锁、配置管理等基础服务。本文将深入剖析ZooKeeper的技术内核&#xff0c;梳理其关键学习点&#xff0c;并结合实践场景给出学…

用友U8 CRM swfupload 任意文件上传漏洞复现(XVE-2024-8597)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

关于Zookeeper+Kafka集群

文章目录 一、Zookeeper1、Zookeeper定义2、Zookeeper工作机制3、Zookeeper特点4、Zookeeper数据结构5、Zookeeper应用场景5.1 统一命名服务5.2 统一配置管理5.3 统一集群管理5.4 服务器动态上下线5.5 软负载均衡 6、Zookeeper 选举机制6.1 第一次启动选举机制6.2 非第一次启动…

html2pdf,qrcode库及url参数拼接

概览 此篇文章主要是对html2pdf,qrcode库及url参数拼接的零散整理 一. html2pdf html2pdf 是一个可以将 HTML 内容转换为 PDF 文件的库。它通常用于前端或服务器端&#xff0c;将网页或 HTML 字符串转换为可打印或可分享的 PDF 格式。这对于需要将网页内容保存为 PDF 或者生…

<个人笔记>基础算法模板题

1.基础算法 &#xff08;1&#xff09;一维前缀和 #include<iostream>using namespace std;const int N 1e510;int p[N],res[N]; int n,Q,l,r;int main() {cin >> n >> Q;for(int i 1;i<n;i){cin >> p[i];res[i] res[i - 1] p[i];}while(Q--)…