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://xiahunao.cn/news/2810298.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

伪原创一键生成软件:为你创作有价值的文章

伪原创一键生成软件是一种现代写手必备的得力助手。无论您是写作新手还是经验丰富的老手&#xff0c;它都能帮助您快速生成有吸引力的文章&#xff0c;让您在竞争激烈的市场中脱颖而出。伪原创一键生成软件是一款让写作变得轻松且高效的神奇工具。它为写手们节省了大量的时间和…

零感佩戴的开放式耳机,音质悦耳更耐听,西圣Air体验

每天都用蓝牙耳机的朋友应该不少&#xff0c;我平时也经常戴&#xff0c;不过最近我用的不是常规的入耳式耳机&#xff0c;因为它佩戴不舒适&#xff0c;戴久了耳朵特别难受。所以现在我换上了开放式耳机&#xff0c;这种耳机叫做OWS&#xff0c;我的这款是西圣Air&#xff0c;…

【appium】appium连接模拟器/android真机启动app测试+代码

目录 一、搭建环境 1、准备Android设备&#xff08;真机Android手机/模拟器&#xff09; 2、Android开发环境&#xff08;Android SDK&#xff09; 3、安装Appium 安装Appium-desktop 4、让adb连接测试设备 4.1 怎么让adb去连接上夜神模拟器&#xff1f;不使用connect 打…

创建spring项目报错:read time out

在新电脑使用idea创建spring项目时&#xff0c;提示read time out多次尝试无果。 发现只要取消这个选择就可以正常下载。&#xff08;版本是202202&#xff09; 取消勾选后可以正常下载 &#xff08;下载完成后&#xff0c;再次创建sprin项目勾上无影响。&#xff09;

强大的安卓文件传输工具:Android File Transfer for Mac

Android File Transfer for Mac是一款专为Mac用户开发的安卓文件传输工具。它提供了一种无缝连接Mac电脑与安卓设备的方式&#xff0c;使我们能够轻松地在两者之间传输文件。不管是照片、音乐、视频还是文档&#xff0c;我们都可以通过这个工具将它们从安卓设备传输到Mac电脑上…

375FPS! 谷歌提出MaskConver“重校正用于全景分割的纯卷积模型

https://arxiv.org/2312.06052 近年来&#xff0c;基于Transformer的模型由于其强大的建模能力以及对语义类和实例类的统一表示为全局二值掩码&#xff0c;在全景分割中占据主导地位。 在本文中&#xff0c;我们回顾了纯粹的卷积模型&#xff0c;并提出了一种新的结构MaskConve…

Orange3数据预处理(转置组件)

选项 "Remove redundant instance" 是在转置时进行数据去重的选项。当勾选此选项时&#xff0c;如果在原始数据中存在多个相同的记录&#xff08;即每个特征列中的数据完全一样&#xff09;&#xff0c;则在转置操作中只保留其中唯一的一个记录&#xff0c;并从转置后…

【MySQL面试复习】什么是覆盖索引?/MySQL超大分页怎么处理?

系列文章目录 在MySQL中&#xff0c;如何定位慢查询&#xff1f; 发现了某个SQL语句执行很慢&#xff0c;如何进行分析&#xff1f; 了解过索引吗&#xff1f;(索引的底层原理)/B 树和B树的区别是什么&#xff1f; 什么是聚簇索引&#xff08;聚集索引&#xff09;和非聚簇索引…

C++ 实现Socket交互式服务端

在 Windows 操作系统中&#xff0c;原生提供了强大的网络编程支持&#xff0c;允许开发者使用 Socket API 进行网络通信&#xff0c;通过 Socket API&#xff0c;开发者可以创建、连接、发送和接收数据&#xff0c;实现网络通信。本文将深入探讨如何通过调用原生网络 API 实现同…

点云数据处理常用外部库(C++/Windows)的项目配置

一、点云数据处理常用外部库&#xff08;C版本&#xff09;的下载安装与项目配置 &#xff08;一&#xff09;PCL 基于VS2019编程平台的PCL外部库下载安装及项目配置已有大量博客&#xff0c;本文不再赘述。具体下载安装及项目配置流程可参考外部库编译配置参考资料/*1*/ 。需…

OPENSSL-PKCS7入门知识介绍

1 PKCS7数据结构说明 p7包括6种数据内容&#xff1a;数据(data),签名数据&#xff08;sign&#xff09;&#xff0c;数字信封数据&#xff08;enveloped&#xff09;&#xff0c;签名数字信封数据&#xff08;signed_and_enveloped&#xff09;&#xff0c;摘要数据&#xff08…

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘无密码如何解决

1.修改my.cnf配置文件 &#xff08;1&#xff09;找到my.cnf位置&#xff0c;在[mysqld]下面添加skip-grant-tables cd / vim /etc/my.cnf &#xff08;2&#xff09;添加完成后保存&#xff0c;并重启mysql服务 按下esc 输入:wq 执行 servcie mysqld restart 2.进入mysql数据…

300分钟吃透分布式缓存-14讲:大数据时代,MC如何应对新的常见问题?

大数据时代 Memcached 经典问题 随着互联网的快速发展和普及&#xff0c;人类进入了大数据时代。在大数据时代&#xff0c;移动设备全面融入了人们的工作和生活&#xff0c;各种数据以前所未有的 速度被生产、挖掘和消费。移动互联网系统也不断演进和发展&#xff0c;存储、计…

Matlab论文插图绘制模板第138期—极坐标直方图

在之前的文章中&#xff0c;分享了Matlab一系列极坐标下的插图绘制模板&#xff1a; 本期再来分享一下极坐标直方图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋友可以…

MySQL多实例与Mycat分布式读写分离的架构实践

文章目录 1.Mycat读写分离分布式架构规划2.在两台服务器中搭建八个MySQL实例2.1.安装MySQL软件2.2.创建每个MySQL实例的数据目录并初始化2.3.准备每个实例的配置文件2.4.准备每个实例的启动脚本2.6启动每台机器的MySQL多实例2.7.为每个MySQL实例设置密码2.8.查看每个MySQL实例的…

项目启动∣新一代亿元级国民零食品牌「比比赞」携手企企通,合力打造企业级数字化采购与供应链管理平台

为进一步提升企业的核心供应链一体化协同管理&#xff0c;助力企业效益提升&#xff0c;近日&#xff0c;泉州市丰泽区尚客食品有限公司&#xff08;以下简称“比比赞”&#xff09;与企企通携手&#xff0c;成功召开SRM项目启动会。 会议期间&#xff0c;双方对项目背景、项目…

Oracle内存计算应用模式

前言 内存计算是利用内存来加速数据访问和应用的性能&#xff0c;并降低应用开发复杂度的技术。近十年来&#xff0c;随着软硬件技术的发展和用户需求的成熟&#xff0c;内存计算技术已经得到了广泛地应用。 Oracle在内存计算领域具有非常重要的地位&#xff0c;这主要得益于…

开了抖店该怎么玩?不知道运营流程的,今天一文带你了解!

大家好&#xff0c;我是电商小布。 在电商的快速发展下&#xff0c;越来越多的新手小伙伴开始加入其中。 抖音小店作为当前的低成本创业项目&#xff0c;吸引到了很多的新手朋友加入其中。 但是开店后怎么玩&#xff0c;如何做好运营操作呢&#xff1f; 今天&#xff0c;小…

WampServer环境下载安装并结合内网穿透实现远程访问管理界面

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

AI论文速读 | 【综述】(LLM4TS)大语言模型用于时间序列

题目&#xff1a;Large Language Models for Time Series: A Survey 作者&#xff1a;Xiyuan Zhang , Ranak Roy Chowdhury , Rajesh K. Gupta and Jingbo Shang 机构&#xff1a;加州大学圣地亚哥分校&#xff08;UCSD&#xff09; 网址&#xff1a;https://arxiv.org/abs/…