当前位置: 首页 > news >正文

Spring MVC框架

Spring MVC框架

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。
我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解这个思想,struts2在web层,spring在中间控制,hibernate在dao层与数据库打交道,而前面刚写的mybatis跟hibernate一样,与数据库打交道在dao层的另一个框架,而今天所要讲解的springmvc是在web层的另一个框架

在这里插入图片描述

一、Spring MVC依赖包jar下载导入

方法1、spring5.0.9官网下载:
https://github.com/spring-projects/spring-framework/tree/5.0.x
(需要科学上网,不然相当相当慢)
方法2、Spring Framework 5.0.9下载地址:
https://repo.spring.io/ui/native/release/org/springframework/spring/
(速度快,推荐该方法,下载“.dist”,完全够用)

.dist是spring框架的jar包,文档和项目;
.docs下存放相关文档,开发指南和API;
.schema存放了spring框架所用的xsd(XML schemas definition)文件。

在eclipse中导入依赖包jar方法众多,可以在WEB-INF文件下创建lib文件夹,将libs文件夹中的所有依赖包复制粘贴即可(为防止出错及以后使用,全部复制粘贴即可,反正不大)。
在这里插入图片描述

二、Spring MVC的入门程序

1、在web.xml中配置一个serlvet,用来控制。
2、编写一个handler(controller)类,用来做业务处理。
3、编写jsp或者别的视图,用来展示数据。

思路已经有了,那么就开始编写吧。
问题描述:使用spring mvc来完成前端请求的处理。

结构如下:

在这里插入图片描述

三、配置文件编写

1、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" ><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/SpringMVC.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

2、SpringMVC.xml

<?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"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 处理器映射器 --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!-- 处理器适配器 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">	</bean><bean name="/getAllUser" class="com.mr.controller.FruitsController"/></beans>

四、编写Handler处理器和视图

注意:

包名不同;

再这个可能会出现以下报红

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

在这里插入图片描述

这是因为项目缺少两个jar依赖,分别为jsp-api.jar和servlet-api.jar。
servlet-api.jar是支持servlet的jar包。

你如果编写过servlet就知道要用到HttpServletRequest和HttpServletResponse等对象,这些对象都是要靠这个jar包才能使用的。如果你安装了Tomcat,这个jar包一般在tomcat安装目录\lib
文件夹下面有,当你把web项目部署到tomcat,会自动加载这个jar包来识别Serlvet一些对象

这是下载资源链接,直接点击下载即可,是免费的:jar下载
将其解压复制粘贴至lib文件下。

1、FruitsController.java

package com.mr.controller;import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;import com.mr.entity.Users;public class FruitsController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {// TODO Auto-generated method stubList<Users> listU = UsersService();ModelAndView mav = new ModelAndView();mav.addObject("listU",listU);mav.setViewName("/WEB-INF/jsp/usersList.jsp");return mav;}//模拟Service的内部类public List<Users> UsersService(){List<Users> list = new ArrayList<>();Users u = new Users();u.setName("Steven");u.setAge(30);u.setTel("138********");Users u1 = new Users();u1.setName("MR");u1.setAge(10);u1.setTel("12345678");list.add(u);list.add(u1);return list;}
}

2、Users.java

package com.mr.entity;public class Users {private String name;private int age;private String tel;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}}

由于制定了返回的JSP视图路径,所以在工程/WEB-INF/jsp路劲下创建名为“usersList.jsp”的jsp文件,具体内容如下:

3、users List.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><table><Tr><td>姓名</td><td>年龄</td><td>电话</td></Tr><c:forEach items="${listU }" var="list"><tr><td>${list.name }</td><td>${list.age }</td><td>${list.tel }</td></tr></c:forEach></table>
</body>
</html>

五、工程测试

启动tomcat后出现红色:
警告: [SetPropertiesRule{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:9-3’ did not find a matching property.

警告: No mapping found for HTTP request with URI [/9-3/] in DispatcherServlet with name ‘SpringMVC’
在这里插入图片描述
咳咳不要慌!!
从信息上看,是server.xml的Context节点不支持source属性。
这是因为我们在eclipse下,通过tomcat部署web工程时,tomcat的配置文件server.xml中会自动生成一个关于该web工程的配置信息,类似于下面的东西:

<Context docBase="webPoject" path="/webProject" reloadable="true" source="org.eclipse.jst.jee.server:webProject"/>  

而默认情况下,server.xml的 Context元素不支持名称为source的属性,所以会发出警告。
总而言之,就是eclipse当前不支持,大家可以根据以下两种方法测试。

方法一:

在eclipse下以tomcat部署的情况下(报错情况下),在浏览器中访问

http://localhost:8080/SpringMVCTest/getAllUser

结果如下:

在这里插入图片描述

方法二:

双击server,勾选上【Server Options】里面的【Publish module contexts to separte XML files】,如下图即可。需要查下Tomcat的相关选项资料。ctr+s,启动tomcat,即可运行成功。
在这里插入图片描述
在这里插入图片描述

相关文章:

Spring MVC框架

Spring MVC框架 Spring MVC属于SpringFrameWork的后续产品&#xff0c;已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构&#xff0c;从而在使用Spring进行WEB开发时&#xff0c;可以选择使用Spring的Spri…...

Illustrator如何使用图层与蒙版之实例演示?

文章目录 0.引言1.绘制可爱冰淇淋图标2.霓虹渐变立体文字海报3.炫彩花纹背景 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对Illustrator进行了学习&#xff0c;本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;…...

Office Tool Plus的使用

是否为安装&#xff0c;卸载&#xff0c;激活Office而烦恼&#xff1f; 下载 地址&#xff1a;Office Tool Plus 官方网站 - 一键部署 Office 安装office 先安装Office&#xff0c;Office_Pro_Plus_2021_LTSCProjectVisio_x64_zh_CN_VL_2022-02 注意&#xff0c;要安装批量…...

​射频PCB 设计​的六大条技巧

即使是最自信的设计人员&#xff0c;对于射频电路也往往望而却步&#xff0c;因为它会带来巨大的设计挑战&#xff0c;并且需要专业的设计和分析工具。这里将为您介绍六条技巧&#xff0c;来帮助您简化任何射频PCB 设计任务和减轻工作压力&#xff01; 1、保持完好、精确的射频…...

优化了成本和安装难度后,UWB信标能否取代蓝牙信标?

1 我们做安U3号是要解决什么问题&#xff1f; &#xff08;1&#xff09;信标式设计&#xff0c;解决传统UWB基站安装过程繁琐复杂的问题 传统UWB基站在安装过程中遇上的难题&#xff1a; l 安装位置选取问题&#xff1a;UWB基站的准确度与其安装位置有很大关系&#xff0c;…...

深入理解Java虚拟机——垃圾回收算法

1.前言 垃圾回收需要完成的三件事 首先我们需要明白垃圾回收需要完成的三件事&#xff1a; 哪些内存需要回收 堆内存中的对象所使用的内存方法区中的废弃的常量以及不再使用的类型 什么时候回收 当对象死亡方法区中某些内容&#xff08;常量和类型&#xff09;不再被使用 如…...

git-rebase和merge

A-----B----C----D master E----F-----G feature 为了把main分支里新增的代码应用在你的feature分支&#xff0c;你有两种方法&#xff1a;merge 和 rebase。 merge git checkout feature git merge main A-----B----C----D master E----F-----G -----* feature (合并master…...

【JavaWeb 用户认证】Cookie、Session、Token、JWT、Interceptor、SpringBoot、Spring Security

Token基本了解&#xff1a;【详细阐述Token的来源】公钥私钥基本了解&#xff1a;【理解公钥】 文章目录 一、Cookie 经典介绍以及使用案例二、Session 经典介绍以及拦截登录案例三、Token MySQL 的基本介绍及其基本使用四、JWT 基本介绍及其基本讲解五、SpringBoot 使用拦截器…...

6个月的测试,来面试居然要15K,我一问连5K都不值

2023年4月份我入职了深圳某家创业公司&#xff0c;刚入职还是很兴奋的&#xff0c;到公司一看我傻了&#xff0c;公司除了我一个自动化测试&#xff0c;公司的测试人员就只有2个开发3个前端1个测试还有2个UI&#xff0c;在粗略了解公司的业务后才发现是一个从零开始的项目&…...

RSA--维纳攻击--代码和题目分析

文章目录 维纳攻击原理&#xff1a;维纳攻击脚本[羊城杯 2020]RRRRRRRSA 1题目描述&#xff1a;题目分析&#xff1a; 收获与体会&#xff1a; 维纳攻击原理&#xff1a; 两位大佬讲得非常清楚&#xff08;搬运工就是我&#xff09;&#xff1a;https://zhuanlan.zhihu.com/p/…...

飞腾ft2000-麒麟V10-SP1安装Docker、运行gitlab容器

目录 一、安装及配置docker 1、卸载docker相关包及删除相关配置文件 2、安装二进制docker 1.下载软件包 2.解压 3.修改镜像加速地址 4.修改profile文件 5.启动docker 6.docker常用命令 二、安装并启动gitlab镜像 1.安装gitlab镜像 1.查询满足使用需求的gitlab版本 2…...

C++ 的类型转换

目录 1. C语言中的类型转换 2. C强制类型转换 2.1static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 dynamic_cast 3. RTTI&#xff08;了解&#xff09; 1. C语言中的类型转换 在 C 语言中&#xff0c;如果 赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不…...

【Windows】普通控制台EXE程序转为windows服务方式运行的详细步骤

背景 NSSM&#xff08;Non-Sucking Service Manager&#xff09;是一个免费的第三方Windows服务管理器&#xff0c;可以将任何可执行文件转换为Windows服务。官网下载地址为&#xff1a;https://nssm.cc/download 以下是NSSM配置Windows服务的详细步骤和注意事项&#xff1a; …...

NSSCTF [suctf 2019]hardcpp WP 控制流混淆

下载文件&#xff0c;64位主函数非常多循环 去控制流混淆&#xff0c;脚本下载deflat 用法 python 脚本名 文件名 起始地址例如主函数地址是0x4007E0 python deflat.py hardCpp 0x4007E0然后就生成了去混淆的文件 主函数非常大&#xff0c;开始分析逻辑 puts("func(?…...

计算机毕业论文内容参考|基于神经网络的网络安全态势感知技术研究

文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望导文 基于神经网络的网络安全态势感知技术研究 文章重点 摘要 随着互联网的快速发展,网络攻击的频率和复杂度也在逐年增加。为了更好地保护信息系统…...

Flask框架之Request、Response、Cookies、Session等对象的使用

Request、Response、Cookies、Session等对象的使用 Request对象基本使用参数的获取转换器内置转换器自定义转换器 Response对象基本使用返回模板重定向返回JSON Cookies对象设置cookie获取cookie删除cookie Session会话对象设置SECRET_KEY设置会话获取会话释放会话 Request对象…...

信号与槽机制一

一、信号与槽 1、什么是信号与槽&#xff1f; 信号和槽是用于对象之间的通信&#xff0c;它是Qt的核心机制&#xff0c;在Qt编程中有着广泛的应用。如果想学好Qt&#xff0c;一定要充分掌握信号的槽的概念与使用。 2、信号和槽的代码实例 在Qt中&#xff0c;发送对象、发送的信…...

nodejs 复制文件到指定目录

var fs require(fs), path require(path), exec require(child_process).exec, sourcePath, targetPath; //获取命令行中的路径 process.argv.forEach(function (val, index, array) { if (index 2) { sourcePath val; } if (index 3) { targetPath val; } }); // 定义…...

第八章 使用Apache服务部署静态网站

文章目录 第八章 使用Apache服务部署静态网站一、网站服务程序1、网站服务介绍2、Apache程序介绍 二、配置服务文件参数1、Linux系统中的配置文件2、配置httpd服务程序时最常用的参数以及用途描述 三、SELinux安全子系统1、SELinux介绍2、SELinux服务配置模式3、Semanage命令4、…...

Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用

文章&#xff1a; Three——一、初识Three以及基础的前端场景搭建(结尾含源码)Three——二、加强对三维空间的认识Three——三、动画执行、画布大小、渲染帧率和相机适配体验Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用Three——五、点线模型对象、三角形概念…...

LDA vs PCA:用sklearn和手写代码,在随机数据集上彻底搞清区别

LDA vs PCA&#xff1a;从数学原理到实战选择的深度解析 引言&#xff1a;为什么我们需要理解这两种降维方法的差异&#xff1f; 在数据科学和机器学习领域&#xff0c;降维技术是我们处理高维数据不可或缺的工具。当我们面对成百上千个特征时&#xff0c;如何有效地提取最有价…...

2025_NIPS_TradeMaster: A Holistic Quantitative Trading Platform Empowered by Reinforcement Learning

TradeMaster 论文总结与核心内容翻译 一、文章主要内容 TradeMaster 是一款面向强化学习量化交易(RLFT)的全栈开源平台,旨在解决 RL 技术在实际金融市场部署中面临的工程实现难、基准对比难、易用性差三大核心挑战。文章围绕该平台展开全面阐述,核心内容包括: 1. 平台定…...

【Perplexity知识图谱查询实战指南】:20年专家亲授3大隐性陷阱与5步精准检索法

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity知识图谱查询的核心原理与能力边界 Perplexity 知识图谱查询并非传统关键词匹配&#xff0c;而是基于语义解析的多跳推理引擎。其核心依赖于三元组嵌入&#xff08;Triple Embedding&#xff09;与…...

Perplexity历史资料搜索失效真相大起底(时间戳偏移、缓存策略与知识图谱断层深度解析)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity历史资料搜索失效真相大起底&#xff08;时间戳偏移、缓存策略与知识图谱断层深度解析&#xff09; Perplexity 的历史资料检索能力在近期高频出现“查无结果”或“返回过期摘要”现象&#…...

折叠Cascode运放设计避坑指南:从90dB增益掉到60dB?可能是这5个细节没做好

折叠Cascode运放设计避坑指南&#xff1a;从90dB增益掉到60dB&#xff1f;可能是这5个细节没做好 在模拟IC设计的深水区&#xff0c;折叠Cascode运算放大器就像一位优雅的芭蕾舞者——看似轻盈的架构下隐藏着对每个技术细节的极致把控。当您精心设计的电路从仿真器中吐出60dB增…...

Linux内核平台设备深度盘点:从原理到实战的全面解析

1. 项目概述&#xff1a;一次对Linux内核“家底”的深度盘点在Linux内核开发的日常工作中&#xff0c;无论是为一块新的开发板适配驱动&#xff0c;还是排查一个诡异的硬件初始化问题&#xff0c;我们常常会面临一个基础却又关键的问题&#xff1a;当前系统里到底有哪些“平台设…...

帮孩子建立时间观念:从认识“十分钟有多长”开始

很多家长都遇到过这样的困扰&#xff1a;让孩子“再玩十分钟就吃饭”&#xff0c;结果十分钟后他完全没反应&#xff0c;不是故意拖延&#xff0c;而是他真的不知道十分钟有多长。时间对孩子来说是抽象的&#xff0c;看不见摸不着。要帮孩子建立时间观念&#xff0c;不妨从感受…...

手把手教你用FPGA+摄像头搭建一个图像处理系统(从采集到以太网传输)

从零构建FPGA图像处理系统&#xff1a;硬件选型到以太网传输实战指南 在嵌入式视觉领域&#xff0c;FPGA因其并行处理能力和低延迟特性&#xff0c;成为实时图像处理的理想平台。本文将带您完整实现一个基于OV7670摄像头和Xilinx Artix-7 FPGA的图像采集处理系统&#xff0c;涵…...

CARLA与Autoware融合实践:从自定义地图构建到闭环仿真测试

1. 自定义高精地图的构建与格式转换 在自动驾驶仿真开发中&#xff0c;高精地图是车辆感知和决策的基础。CARLA仿真环境提供了灵活的地图编辑工具&#xff0c;但要将自建地图与Autoware无缝对接&#xff0c;需要特别注意数据格式的兼容性。我曾在实际项目中遇到过多次地图导入…...

Juniper设备密码恢复实战:从标准流程到疑难故障排除

1. Juniper设备密码恢复标准流程详解 遇到Juniper设备密码丢失的情况时&#xff0c;标准的单用户模式恢复是最常用的解决方案。这个过程看似简单&#xff0c;但实际操作中每个步骤都有需要注意的细节。下面我会结合自己处理过的几十个案例&#xff0c;把标准流程拆解成可落地的…...