SSM框架学习笔记07 | Spring MVC入门

文章目录

  • 1. HTTP协议
  • 2. Spring MVC
    • 2.1. 三层架构
    • 2.2. MVC(解决表现层的问题)
    • 2.3. 核心组件
  • 3. Thymeleaf
    • 3.1. 模板引擎
    • 3.2. Thymeleaf
    • 3.3. 常用语法
  • 代码


1. HTTP协议

网址:https://www.ietf.org/ (官网网址)
https://developer.mozilla.org/zh-CN/ (易于理解)

HyperText Transfer Potocal
用于传输HTML等内容的应用层协议
规定了浏览器和服务器之间如何通信,以及通信时的数据格式

在这里插入图片描述


2. Spring MVC

2.1. 三层架构

表现层、业务层、数据访问层

2.2. MVC(解决表现层的问题)

Model: 模型层
View: 视图层
Controller:控制层

在这里插入图片描述

2.3. 核心组件

前端控制器:DispatcherServlet
在这里插入图片描述

3. Thymeleaf

网址:http://thymeleaf.org/

3.1. 模板引擎

生成动态的HTML

3.2. Thymeleaf

倡导自然模板,即以HTML文件为模板

3.3. 常用语法

标准表达式、判断与循环、模板的布局

代码

package com.test.community.controller;import com.test.community.service.AlphaService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;/*** @ClassName AlphaController* @Description TODO* @Author lcx* @Date 2024/2/21 15:22* @Version 1.0*/
@Controller
@RequestMapping("/alpha")
public class AlphaController {@Autowiredprivate AlphaService alphaService;@RequestMapping("/hello")@ResponseBodypublic String sayHello() {return "Hello Spring Boot!";}@RequestMapping("/data")@ResponseBodypublic String getData() {return alphaService.find();}// SpringMVC获得请求对象和响应对象@RequestMapping("/http")public void http(HttpServletRequest request, HttpServletResponse response) {// 获取请求数据System.out.println(request.getMethod());System.out.println(request.getServletPath());Enumeration<String> enumeration = request.getHeaderNames();while (enumeration.hasMoreElements()) {String name = enumeration.nextElement();String value = request.getHeader(name);System.out.println(name + ":" + value);}// 请求体System.out.println(request.getParameter("code"));// 返回响应数据response.setContentType("text/html; charset=utf-8");try(PrintWriter writer = response.getWriter();) {writer.write("<h1>牛客网</h1>");} catch (IOException e) {e.printStackTrace();}}// GET请求// 查询所有学生  /students?current=1&limit=20@RequestMapping(path = "/students", method = RequestMethod.GET)@ResponseBodypublic String getStudents(@RequestParam(name = "current", required = false, defaultValue = "1") int current,@RequestParam(name = "limit", required = false, defaultValue = "10") int limit) {System.out.println(current);System.out.println(limit);return "some students";}// /student/123@RequestMapping(path = "/student/{id}", method = RequestMethod.GET)@ResponseBodypublic String getStudent(@PathVariable("id") int id) {System.out.println(id);return "a student";}// 浏览器向服务器提交数据// POST请求@RequestMapping(path = "/student", method = RequestMethod.POST)@ResponseBodypublic String saveStudent(String name, int age) {System.out.println(name);System.out.println(age);return "success";}// 响应HTML数据@RequestMapping(path = "/teacher", method = RequestMethod.GET)@ResponseBodypublic ModelAndView getTeacher() {ModelAndView mav = new ModelAndView();mav.addObject("name", "张三");mav.addObject("age", 12);mav.setViewName("/demo/view");return mav;}@RequestMapping(path = "/school", method = RequestMethod.GET)public String getSchool(Model model) {model.addAttribute("name", "北京大学");model.addAttribute("age", 123);return "/demo/view";}// 异步请求中响应JSON数据// java对象 -> JSON字符串 -> JS对象@RequestMapping(path = "/emp", method = RequestMethod.GET)@ResponseBodypublic Map<String, Object> getEmp() {Map<String, Object> emp = new HashMap<>();emp.put("name", "张三");emp.put("age", 12);emp.put("salary", 8000.00);return emp;}@RequestMapping(path = "/emps", method = RequestMethod.GET)@ResponseBodypublic List<Map<String, Object>> getEmps() {List<Map<String, Object>> list = new ArrayList<>();Map<String, Object> emp = new HashMap<>();emp.put("name", "张三");emp.put("age", 12);emp.put("salary", 8000.00);list.add(emp);emp = new HashMap<>();emp.put("name", "李四");emp.put("age", 22);emp.put("salary", 9000.00);list.add(emp);emp = new HashMap<>();emp.put("name", "王五");emp.put("age", 32);emp.put("salary", 10000.00);list.add(emp);return list;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dolphinscheduler单机版部署教程

文章目录 前言一、安装准备1. 安装条件2. 安装jdk3. 安装MySQL 二、安装dolphinscheduler1. 下载并解压dolphinscheduler2. 修改配置文件2.1 修改 dolphinscheduler_env.sh 文件2.2 修改 application.yaml 文件 3. 配置mysql数据源3.1 修改MySQL安全策略3.2 查看数据库3.3 创建…

使用Docker部署MinIO并结合内网穿透实现远程访问本地数据

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

Pytest教程:一种利用 Python Pytest Hook 机制的软件自动化测试网络数据抓包方法

随着计算机技术的发展&#xff0c;使得网络应用的数量不断增加&#xff0c;因此网络数据抓包成为了网络应用开发和测试中非常重要的一部分。目前&#xff0c;已有许多网络数据抓包工具可供使用&#xff0c;例如 Wireshark、Tcpdump、Fiddler 等&#xff0c;但这些工具需要手动配…

进程的学习

进程基本概念: 1.进程: 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息&#xff08;根据CPU占用率排序&#xf…

PHY6222系统级SOC蓝牙芯片低功耗高性能蓝牙MESH组网智能家居

简介 PHY6222是一款支持BLE 5.2功能和IEEE 802.15.4通信协议的系统级芯片&#xff08;SoC&#xff09;&#xff0c;集成了超低功耗的高性能多模射频收发机&#xff0c;搭载32-bit ARM?Cortex?-M0处理器&#xff0c;提供64K retention SRAM、可选128K-8M Flash、96KB ROM以及2…

十、线性代数二-线性相关

目录 1、线性相关的概念&#xff1a; 2、线性相关的代数表示&#xff1a; 3、线性相关的判断方法&#xff1a; 理解&#xff1a;线性相关指的是 向量组&#xff08;α1&#xff0c;α2&#xff0c;α3&#xff0c;...&#xff09;的 秩是 小于 k 的元数的&#xff0c;即齐次…

第二节:Vben Admin 登录逻辑梳理和对接后端准备

系列文章目录 上一节&#xff1a;第一节&#xff1a;Vben Admin介绍和初次运行 文章目录 系列文章目录前言项目路径的概述一、登录逻辑梳理loginApi接口查看Mock 二、后端程序对接准备关闭Mock 总结 前言 第一节&#xff0c;我们已经配置了前端环境&#xff0c;运行起来了我们…

文献速递:深度学习--深度学习方法用于帕金森病的脑电图诊断

文献速递&#xff1a;深度学习–深度学习方法用于帕金森病的脑电图诊断 01 文献速递介绍 人类大脑在出生时含有最多的神经细胞&#xff0c;也称为神经元。这些神经细胞无法像我们身体的其他细胞那样自我修复。随着年龄的增长&#xff0c;神经元逐渐死亡&#xff0c;因此变得…

el-form 表单文本标签label增加tooltip提示图标

需求&#xff1a;在el-form表单中&#xff0c;el-form-item的文本标签处增加提示语&#xff1b; 标签&#xff1a;el-form、el-form-item、el-tooltip&#xff1b; 实现&#xff1a; <el-form-item prop"basicScore"><span slot"label"><…

nginx之状态页 日志分割 自定义图表 证书

5.1 网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&#xff0c;在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module&#xff0c;否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态 server{…

【Git】Git命令的学习与总结

本文实践于 Learn Git Branching 这个有趣的 Git 学习网站。在该网站&#xff0c;可以使用 show command 命令展示所有可用命令。你也可以直接访问网站的sandbox&#xff0c;自由发挥。 一、本地篇 基础篇 git commit git commit将暂存区&#xff08;staging area&#xff…

采访影视行业人“Sora入局,或将改变游戏规则?”

自OpenAI发布Sora已经过去了半个月&#xff0c;人们对于这个新兴的“文生视频”&#xff08;text-to-video&#xff09;大模型工具都已经有了初步的认识&#xff0c;经过半个月的沉淀&#xff0c;他们也陆续发布了一些更加令人震惊的demo&#xff0c;话不多说&#xff0c;我们先…

Bootstrap引入和使用

Bootstrap 基础用法 目录 Bootstrap 基础用法什么是Bootstrap&#xff1f;引入Bootstrap布局容器栅格系统表格样式表单样式text样式按钮样式图标 什么是Bootstrap&#xff1f; Bootstrap是一个开源的前端框架&#xff0c;用于对HTML和CSS代码进行封装&#xff0c;因此可以直接…

Springboot集成Druid实现监控功能

Druid是阿里巴巴开发的号称为监控而生的数据库连接池&#xff0c;在功能、性能、扩展性方面&#xff0c;都超过其他数据库连接池&#xff0c;包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等&#xff0c;秒杀一切。Druid可以很好的监控DB池连接和SQL的执行情况&#…

打破数据孤岛,推动销售与财务协同升级!

客户介绍&#xff1a; 某科技有限公司是一家高科技公司&#xff0c;致力于为客户提供智能显示、物联网、云计算等领域的技术解决方案和产品。公司拥有强大的技术实力和研发团队&#xff0c;在业内享有盛誉。 客户痛点&#xff1a; 该公司在业务发展过程中&#xff0c;遇到了以…

如何在Window搭建Odoo并发布公网实现远程办公【内网穿透】

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…

win11家庭版安装Docker启动一直Starting the Docker Engine...

越多越多的应用通过Docker方式来运行&#xff0c;确实Docker方式运行也很方便&#xff0c;都是一个独立的运行环境&#xff0c;部署也很方便。于是决定安装下Docker试试&#xff0c;之前用Docker的时候还是win10&#xff0c;现在win11了。 安装倒是可以安装上&#xff0c;但是…

TextCNN:文本分类卷积神经网络

模型原理 1、前言2、模型结构3、示例3.1、词向量层3.2、卷积层3.3、最大池化层3.4、Fully Connected层 4、总结 1、前言 TextCNN 来源于《Convolutional Neural Networks for Sentence Classification》发表于2014年&#xff0c;是一个经典的模型&#xff0c;Yoon Kim将卷积神…

蓝桥杯-答疑

原题链接&#xff1a;用户登录 答疑 题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老师办公室答疑。一位同学答疑的过程如下 1.首先进入办公室&#xff0c;编号为 的同学需要 s&#xff0c;…

ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(三)

在人工智能成为我们日常互动中无处不在的一部分的时代&#xff0c;与大型语言模型(llm)有效沟通的能力是无价的。“良好提示的26条原则”为优化与这些复杂系统的交互提供了全面的指导。本指南证明了人类和人工智能之间的微妙关系&#xff0c;强调清晰、专一和结构化的沟通方法。…