初学SpringMVC之执行原理

Spring MVC 是基于 Java 实现 MVC 的轻量级 Web 框架

导入 jar 包

pom.xml 文件导入依赖:

    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.0.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.3</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>

配置 web.xml 文件:

注册 DispatcherServlet

org.springframework.web.servlet.DispatcherServlet

关联一个 SpringMVC 的配置文件 <init-param>

启动级别 <load-on-startup>

/ 匹配所有的请求,不包括 .jsp

/* 匹配所有的请求,包括 .jsp

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><!-- 注册DispatcherServlet --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 关联一个SpringMVC的配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!-- 启动级别 --><load-on-startup>1</load-on-startup></servlet><!-- /匹配所有的请求,不包括.jsp --><!-- /*匹配所有的请求,包括.jsp --><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

关联 SpingMVC 的配置文件 springmvc-servlet.xml(放在 resources 目录下)

添加处理器映射

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

添加处理器适配器

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter

添加视图解析器

org.springframework.web.servlet.view.InternalResourceViewResolver

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"><!-- 视图解析器:DispatcherServlet 给它的 ModelAndView1.获取 ModelAndView 的数据2.解析 ModelAndView 的视图名字3.拼接视图名字,找到对应的视图  /WEB-INF/jsp/hello.jsp4.将数据渲染到这个视图上--><!-- 添加处理器映射 --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!-- 添加处理器适配器 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!-- 添加视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/"/><!-- 后缀 --><property name="suffix" value=".jsp"/></bean><!-- Handle --><bean id="/hello" class="com.demo.controller.HelloController"/></beans>

实现 Controller 接口,重写方法

ModelAndView 模型和视图

封装对象、封装视图

package com.demo.controller;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class HelloController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {//ModelAndView 模型和视图ModelAndView modelAndView = new ModelAndView();//封装对象,放在ModelAdnView中modelAndView.addObject("msg","HelloSpringMVC!");//封装要跳转的视图,放在ModelAndView中modelAndView.setViewName("hello"); //  /WEB-INF/jsp/hello.jspreturn modelAndView;}
}

在 WEB-INF 目录下创建 jsp 目录

在 hello.jsp 页面写一行 ${msg}

注意 jsp 目录放在 WEB-INF 目录下

(之前放错了位置一直报 404,还在考虑是不是 web 环境问题,给我气笑了)

在 springmvc-servlet.xml 文件下添加一行

(注意:一定要加 /,不然找不到,又报 404)

<!-- Handle -->
<bean id="/hello" class="com.demo.controller.HelloController"/>

配置 Smart Tomcat,运行后地址栏添加后缀即可

输出成功!

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

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

相关文章

YOLOv9:一个关注信息丢失问题的目标检测

本文来自公众号“AI大道理” 当前的深度学习方法关注的是如何设计最合适的目标函数&#xff0c;使模型的预测结果最接近地面的真实情况。同时&#xff0c;必须设计一个适当的体系结构&#xff0c;以方便获取足够的预测信息。 现有方法忽略了一个事实&#xff0c;即输入数据在逐…

部署windows-exporter

一、安装 windows-exporter源码 下载对应版本 在windows中使用二进制方式部署 安装好之后,打开 http://127.0.0.1:9182/metrics 二、接入prometheus 1、通过静态文件配置加入 scrape_configs:# The job name is added as a label `job=<job_name>` to any timeser…

Nginx 是一个非常流行的 Web 服务器和反向代理服务器

Nginx 是一个非常流行的 Web 服务器和反向代理服务器&#xff0c;以其高性能、稳定性、丰富的功能集和低资源消耗而闻名。下面是一个简化的 Nginx 使用教程&#xff0c;包括基本的安装、配置和一些常见用途。 安装 Nginx 在 Ubuntu/Debian 上安装&#xff1a; sudo apt upda…

Ubuntu的奇葩bug汇总

键盘的Win键失效、被锁的解决办法 ——我还以为我电脑坏了&#xff0c;重装呜呜呜

docker安装以及简单使用

如何安装安装 yum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 列出可用的版本 yum list docker-ce.x86_64 --showduplicates | sort -r yum install -y docker-ce-23.0.6-1.el8 #开机自动启动 …

day02_员工管理

文章目录 新增员工需求分析和设计代码开发功能测试代码完善录入的用户名已存在&#xff0c;抛出异常后没有处理新增员工的时候&#xff0c;创建人id和修改人id设置为了固定值ThreadLocal&#xff08;面试题&#xff09; 分页查询问题解决 启用禁用员工账号需求和分析代码设计 编…

Vue3项目打包优化

前言 本文介绍在实际项目中进行打包优化过程 目前评分 good npm install web-vitals在App.vue加入如下代码测试网页性能指标 import { onLCP, onINP, onCLS, onFCP, onTTFP } from web-vitals/attributiononCLS(console.log) onINP(console.log) onLCP(console.log) onFCP(…

cfDNA甲基化疾病早筛研究思路分享

游离DNA&#xff08;Circulating free DNA&#xff0c;cfDNA&#xff09;是人体组织释放到血液等循环体系中降解的DNA片段&#xff0c;是一种新型的肿瘤分子标志物。ctDNA甲基化是重要的表观学修饰之一&#xff0c;可以在不改变基因序列的情况下&#xff0c;改变遗传表现&#…

Java中的数据备份与恢复策略

Java中的数据备份与恢复策略 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 数据备份与恢复是任何系统中至关重要的一部分。在软件开发和运维过程中&#xff…

身边的故事(十五):阿文的故事:再消失

物镜人非&#xff0c;沧海桑田。像我们这些普通的凡人&#xff0c;哪有什么试错的机会&#xff0c;每走一步都是如履薄冰&#xff0c;小心谨慎&#xff0c;错一步可能就会万劫不复。唉&#xff0c;如果...唉...哪有什么如果... 阿文的房子很快装修完成&#xff0c;入新房那天就…

go语言hassuffix的简单使用

在 Go 语言中&#xff0c;strings 包提供了 HasSuffix 函数&#xff0c;它用于检查一个字符串是否以指定的后缀结尾。这个函数返回一个布尔值&#xff0c;如果字符串以指定的后缀结尾&#xff0c;则返回 true&#xff0c;否则返回 false。 以下是 HasSuffix 函数的基本使用示例…

ubantu安装k8s集群服务

进行主机优化配置 参考&#xff1a; 修改主机名称 hostnamectl set-hostname k8s-node03 关闭swap分区 swapoff -a #临时关闭 sed -i /\/swap/s/^/# /etc/fstab #永久关闭 增加主机解析 cat >> /etc/hosts << EOF 10.1.60.119 k8s-master01 10.1.60.12…

zdppy+onlyoffice+vue3解决文档加载和文档强制保存时弹出警告的问题

解决过程 第一次排查 最开始排查的是官方文档说的 https://api.onlyoffice.com/editors/troubleshooting#key 解决方案。参考的是官方的 https://github.com/ONLYOFFICE/document-server-integration/releases/latest/download/Python.Example.zip 基于Django的Python代码。 …

短视频美化:成都柏煜文化传媒有限公司

短视频美化&#xff1a;创意与技术的艺术交融 在数字时代的浪潮中&#xff0c;短视频以其独特的魅力迅速崛起&#xff0c;成为人们生活中不可或缺的一部分。从记录生活点滴到分享创意灵感&#xff0c;短视频以其短小精悍、形式多样的特点&#xff0c;让每个人都能成为自己故事…

LLM生成的CUDA C++ Programming Guide LLM摘要

CUDA C编程指南介绍了CUDA模型和接口&#xff0c;强调了在版本12.4中的更新。关键知识点包括&#xff1a; GPU的优势&#xff1a;与CPU相比&#xff0c;GPU在相同价格和功耗范围内提供更高的指令吞吐量和内存带宽。这使得许多应用在GPU上运行速度更快&#xff0c;特别是在高度并…

Linux安装elasticsearch单机版

一、检查内核 uname -a uname -m 二、下载版本 下载版本选择自己服务器相同的内核版本 我这边是aaech64 ES下载地址 Kibana 下载地址 二、上传服务器解压 tar -xvf elasticsearch-8.14.1-linux-aarch64.tar.gz 三、安装ES 因为ES不能用root用户启动先创建用户 #新增 es …

算法训练营day71

题目&#xff1a;53. 寻宝&#xff08;第七期模拟笔试&#xff09; (kamacoder.com) 最小生成树-prim算法 #include<bits/stdc.h>using namespace std;int main(){int n, m;cin >> n >> m;vector<vector<int>> grid(n 1, vector<int>(n…

网络编程:拆分数据包---libpcap库

使用libpcap对抓到的数据报进行拆分 安装:sudo apt-get install libpcap-dev 1、打开网络设备 获取可用的网络设备名指针 char *pcap_lookupdev(char *errbuf)打开一个用于捕获数据的网络接口 pcap_t *pcap_open_live(const char *device,int snaplen,int promise,int to_ms,…

vue-cli 脚手架详细介绍

4 vue-cli 脚手架 1 脚手架介绍 vue-cli也叫vue脚手架,vue-cli是vue官方提供的一个全局命令工具&#xff0c;这个命令可以帮助我们快速的创建一个vue项目的基础架子。 脚手架&#xff1a;搭建好的一个架子&#xff0c;我们在架子上进行开发 开箱即用零配置基于webpack、webpac…

GEE代码实例教程详解:洪水灾害监测

简介 在本篇博客中&#xff0c;我们将使用Google Earth Engine (GEE) 进行洪水灾害监测。通过分析Sentinel-1雷达数据&#xff0c;我们可以识别特定时间段内的洪水变化情况。 背景知识 Sentinel-1数据集 Sentinel-1是欧洲空间局提供的雷达卫星数据集&#xff0c;它能够提供…