SpirngMVC框架学习笔记(一):SpringMVC基本介绍

news/2024/7/20 17:52:33/文章来源:https://blog.csdn.net/2301_76144723/article/details/139202114

1 SpringMVC 特点&概述

  • SpringMVC 从易用性,效率上 比曾经流行的 Struts2 更好 
  • SpringMVC WEB 层框架,接管了 Web 层组件, 比如控制器, , 视图解析, 返回给用户的数据格式, 同时支持 MVC 的开发模式/开发架构
  • SpringMVC 通过注解,让 POJO 成为控制器,不需要继承类或者实现接口
  • SpringMVC 采用低耦合的组件设计方式,具有更好扩展和灵活性.
  • 支持 REST 格式的 URL 请求.
  • SpringMVC 是基于 Spring , 也就是 SpringMVC 是在 Spring 基础上的。SpringMVC 的核心包 spring-webmvc-xx.jar spring-web-xx.jar
  • SpringMVC 执行流程如下

2 Spring、SpringMVC和SpringBoot 的关系

  • Spring MVC 只是 Spring 处理 WEB 层请求的一个模块/组件, Spring MVC 的基石是Servlet[Java WEB]
  • Spring Boot 是为了简化开发者的使用, 推出的封神框架(约定优于配置,简化了 Spring 的配置流程), SpringBoot 包含很多组件/框架,Spring就是最核心的内容之一,也包含 SpringMVC
  • 他们的关系大概是: Spring Boot > Spring > Spring MVC

SpringMVC-快速入门(构建项目)

(1)新建一个java项目

 (2)添加web框架

 点击确定后,可以看到项目目录下自动生成了一个web目录

 

(3)在WEB-INF目录下新建一个lib目录,存放jar包

 

(4)将需要使用的jar包复到lib目录下(所需jar包可在文章顶部获取)

 全选复制

粘贴到lib目录

(5)将所有jar包添加为库

(6)在src目录下创建spring容器文件

 

 (7)配置 web/WEB-INF/web.xml 文件

<?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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--配置前端控制器/中央控制器/分发控制器--><!--1.用户的请求都会经过它的处理--><servlet><!--servlet-name可以自己定义--><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置属性contextConfigLocation,指定 DispatcherServlet 去操作的spring配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-mvc.xml</param-value></init-param><!--在web项目启动时,就自动加载DispatcherServlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><!--需要和上面的servlet-name保持一致--><servlet-name>springDispatcherServlet</servlet-name><!--1.这里配置的 url-pattern 是 / ,表示用户的请求都经过DispatcherServlet2.这样配置也支持 rest 风格的 url 请求--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

(8)在web目录下创建 login.jsp 作为登录页面

<%--Created by IntelliJ IDEA.User: xxxDate: 2024-05-25Time: 20:50To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title>
</head>
<body>
<h3>登录页面</h3>
<%--
action="login" 表示的url 是 http://localhost:8080/springmvc/login
--%>
<form action="login">u:<input name="username" type="text">p:<input name="password" type="password"><input type="submit" value="登录">
</form>
</body>
</html>

(9)在src目录下创建包com.web,在该包下创建 UserServlet.java 作为控制器

package com.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 如果使用了SpringMVC框架,在一个类上标识@Controller* 表示将该类视为一个控制器,注入到容器中*/
@Controller
public class UserServlet {//编写方法,响应用户的请求/*** 1.login方法是用于响应用户的登录请求* 2.@RequestMapping(value = "/login") 表示给控制器的这个方法配了一个url映射* 当用户在浏览器输入 http://localhost:8080/web工程路径/login 就能访问到login()* 3.return "login_ok"; 表示返回结果给视图解析器(InternalResourceViewResolver)* ,视图解析器会根据配置,来决定跳转哪个页面*/@RequestMapping(value = "/login")public String login(){System.out.println("login ok....");return "login_ok";}
}

(10)在前面已经创建好spring容器文件中进行配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--配置自动扫描包--><context:component-scan base-package="com.web"/><!--下面配置springMVC的视图解析器,比如我们的controller return 的是 login_ok那么要跳转的页面页面就是 /WEB-INF/pages/login_ok--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置属性suffix(后缀) 和 prefix(前缀)--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean>
</beans>

(11)在web/WEB-INF目录下新建目录 pages,在pages目录新建一个jsp文件,login_ok.jsp

<%--Created by IntelliJ IDEA.User: 王伟俊Date: 2024-05-25Time: 21:11To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录成功</title>
</head>
<body>
<h1>恭喜 登录成功</h1>
</body>
</html>

(12)配置 tomcat 服务器

 

 

tomcat配置成功!

 (13)启动服务器

在浏览器输入网址http://localhost:8080/springmvc/login.jsp 

点击登录,显示如下页面,跳转成功!

4 细节说明

  •  重点学习如何搭建一个 springmvc 项目,初步理解 springmvc 工作流程
  • 这里的 UserServlet 需要注解成@Controller ,我们称为一个 Handler 处理器
  • UserServlet 指定 url 时,value可以省略
@RequestMapping("/login")
  • 关 于 SpringMVC DispatcherServlet 的 配 置 文 件 , 如 果 不 在 web.xml 指 定 applicationContext-mvc.xml, 默认在 /WEB-INF/springDispatcherServlet-servlet.xml 找这 个配置文件

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

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

相关文章

【DrissionPage爬虫库 1】两种模式分别爬取Gitee开源项目

文章目录 DrissionPage爬虫库简介1. 浏览器操控模式&#xff08;类似于游戏中的后台模拟鼠标键盘&#xff09;2. 数据包收发模式&#xff08;类似于游戏中的协议封包&#xff09; 实战中学习需求&#xff1a;爬取Gitee开源项目的标题与描述解决方案1&#xff1a;用数据包方式获…

[机缘参悟-191] - 《道家-水木然人间清醒1》读书笔记 -14- 关系界限 - 经济和人格上的独立,走向成熟的必经之路,才能更好的谈其他情感(IT)

目录 前言&#xff1a; 1、“友善的孤独者” 2、“外向的孤独者” 3、道不同不相为谋 4、警惕依赖 5、完整独立的个体 6、不必纠正他人的错误&#xff0c;除非他影响了你 7、不再期待别人能理解自己&#xff0c;只有高维向下兼容你的人才能理解你 8、只有高维和同频的…

基于语音识别的智能电子病历(三)之 Soniox

Soniox成立于2020年&#xff0c;目前总部位于美国加州福斯特城&#xff0c;该公司开发了市场上最好的语音识别引擎之一。该公司目前提供市面上领先的云转录引擎之一——这也是audioXpress成功用于采访和一般语音转文本转换的引擎。 专注于语音AI的Soniox在2021年推出了世界上第…

据库管理-第196期 实战RDMA(20240528)

数据库管理196期 2024-05-28 数据库管理-第196期 实战RDMA&#xff08;20240528&#xff09;1 环境2 操作系统配置3 配置NVMe over RDMA4 挂载磁盘处理并挂载磁盘&#xff1a; 5 RDMA性能测试6 iSCSI部署7 iSCSI性能测试8 性能对比总结 数据库管理-第196期 实战RDMA&#xff08…

Petalinux 制作ZYNQ镜像文件流程

1概述 在Zynq-7000 SoC中搭建运行Linux&#xff0c;嵌入式软件栈。 处理器系统引导是一个分两个阶段的过程。第一个阶段是一个内部 BootROM&#xff0c;它存储 stage-0 的引导代码。BootROM 在 CPU 0 上执行&#xff0c;CPU 1 执行等待事件&#xff08;WFE&#xff09;指令。…

【全开源】宇鹿家政系统(FastAdmin+ThinkPHP+原生微信小程序)

&#xff1a;助力家政行业数字化升级 一、引言&#xff1a;家政服务的新篇章 随着移动互联网的普及和人们生活水平的提高&#xff0c;家政服务的需求日益增长。为了满足这一市场需求&#xff0c;并推动家政行业的数字化升级&#xff0c;我们特别推出了家政小程序系统源码。这…

这款信创FTP软件,可实现安全稳定的文件传输

信创&#xff0c;即信息技术应用创新&#xff0c;2018年以来&#xff0c;受“华为、中兴事件”影响&#xff0c;国家将信创产业纳入国家战略&#xff0c;并提出了“28n”发展体系。“8”具体指金融、石油、电力、电信、交通、航空航天、医院、教育等主要行业。目前企业使用比较…

代码随想录——左叶子之和(Leetcode404)

题目链接 BFS 队列 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right)…

python mp3转mp4工具

成品UI 安装moviepy库 pip install moviepy 转换demo from moviepy.editor import *# 创建一个颜色剪辑&#xff0c;时长与音频相同 audioclip AudioFileClip(r"C:\Users\Administrator\PycharmProjects\pythonProject44\test4\赵照 - 灯塔守望人.mp3") videoclip…

联邦和反射器实验

拓扑图 一.实验要求 1.AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能在任何协议中宣告 AS3存在两个环回&#xff0c;一个地址为192.168.2.0/24&#xff0c;该地址不能在任何协议中宣告 AS1还有一个环回地址为10.1.1.0/24&#xff…

区块链系统开发测试----链码部署开发、系统开发验证

一.检查配置环境 检查虚拟机环境&#xff0c;确保有正在运行的Hyperledger Fabric区块链&#xff0c;并且其中chaincode_basic、credit_chaincode链码可以正常调用 查看chaincode_basic、credit_chaincode链码调用 二.开发征信链码代码 基于现有征信链码&#xff0c;开发征信…

2024提升数字思维能力加快企业数字化转型(74页PPT)

方案介绍&#xff1a; 本报告的价值在于为企业提供了一套系统的提升数字思维能力、加快数字化转型的理论框架和实践指南。通过本报告的学习和应用&#xff0c;企业可以更加清晰地认识到数字化转型的重要性和紧迫性&#xff0c;明确自身在数字化转型中的优势和不足&#xff0c;并…

ROS2 Topics和Services

本文主要介绍ROS的Topics概念&#xff0c;如何创建Publisher和Subscriber&#xff0c;通过Topic在ROS程序间通信&#xff1b;介绍ROS的Services概念&#xff0c;如何创建Client和Server并建立通信。 更多内容&#xff0c;访问专栏目录获取实时更新。 ROS Topics Topics可以被视…

SpringJDBC

1.前言 Spring JDBC可以帮助开发者节省大量开发工作 自动去处理一些低级细节 比如&#xff1a;异常处理、打开和关闭资源(Connection、PreparedStatement、Statement、ResultSet) 需要下载的jar包&#xff1a; spring-jdbc(普通jar包、源码jar包)由于没有依赖其他的jar包 所以只…

vite+js配置

vite js 配置路径 npm install types/node --save-dev vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue //需要引入 import path from path// https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],resolve: {a…

WORD、PPT技巧

WORD技巧 编辑设置 word标题导航窗口怎么调出word2016&#xff0c;缩小了页面&#xff0c;可是怎么是竖着的一页一页排列啊&#xff1f;以前不是好几页横排着的么&#xff1f;怎么设置&#xff0c;求救&#xff1a;在Word标题栏那一行找到“视图”&#xff0c;点击“显示比例…

【算法】位运算算法——两整数之和

题解&#xff1a;两整数之和(位运算算法) 目录 1.题目2.位运算算法3.参考代码4.总结 1.题目 题目链接&#xff1a;LINK 2.位运算算法 这个题目难点就在于不能用、- 那什么能够代替加号呢&#xff1f; 既然数的层面不能用号&#xff0c;那二进制的角度去用号即可。 恰好&a…

FPGA——eMMC验证

一.FPGA基础 1.FPGA烧录流程 (1) 加载流文件 —— bitfile (2) 烧录文件 —— cmm 二.MMC 1.基础知识 (1)jz4740、mmc、emmc、sd之间的关系&#xff1f; jz4740——处理器 mmc——存储卡标准 emmc——mmc基础上发展的高效存储解决方案 sd—— 三.eMMC和SD case验证 1.ca…

MySQL数据表的“增删查改“

我们学习数据库, 最重要的就是要学会对数据表表进行"增删查改"(CRUD).(C -- create, R -- retrieve, U -- update, D -- delete) 目录 一. "增"(create) 1. 普通新增 2. 指定列新增 3. 一次插入多行 4. 用insert插入时间 5. 小结 二. "查"…