SpringMVC第一个helloword项目

news/发布时间2024/5/14 19:27:40

文章目录

  • 前言
  • 一、SpringMVC是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.创建控制层
    • 3.创建springmvc.xml
    • 4.配置web.xml文件
    • 5.编写视图页面
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

SpringMVC


提示:以下是本篇文章正文内容,下面案例可供参考

一、SpringMVC是什么?

Spring MVC是一种基于Java的Web应用开发框架,它是Spring框架的一部分,用于构建灵活、可扩展的Web应用程序。Spring MVC采用了MVC(Model-View-Controller)的设计模式,将应用程序分为模型、视图和控制器三个部分,以实现松耦合和高内聚的开发方式。

在Spring MVC中,模型(Model)负责处理业务逻辑和数据操作,通常使用POJO(Plain Old Java Object)作为数据模型。视图(View)负责展示数据给用户,可以是JSP、HTML、JSON等格式。控制器(Controller)负责接收用户请求并处理,根据请求的参数和路径选择相应的业务逻辑和视图进行处理。

Spring MVC的核心特性包括:

  1. 基于注解的请求映射:通过注解将请求URL映射到相应的处理方法上,简化了配置和开发过程。
  2. 数据绑定和验证:支持将请求参数绑定到方法参数或模型对象上,并提供了数据验证的功能。
  3. 视图解析和渲染:支持多种视图技术,如JSP、Thymeleaf、Freemarker等,可以根据需求选择合适的视图进行渲染。
  4. 拦截器:提供了拦截器机制,可以在请求处理前后进行一些公共的处理逻辑,如权限验证、日志记录等。
  5. 异常处理:支持全局异常处理,可以统一处理应用程序中的异常,并返回友好的错误信息给用户。
  6. RESTful支持:提供了对RESTful风格的支持,可以方便地开发和维护RESTful API。

二、使用步骤

项目结构为:
在这里插入图片描述

1.引入库

在使用Maven创建webapp项目时需要导入以下依赖

       <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.32</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency>

2.创建控制层

ModelAndView的构造方法有7个。但是它们都是相通的。这里使用无参构造函数来举例说明如何构造ModelAndView实例。
ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。
最简单的ModelAndView是持有View的名称返回。

代码如下(示例):

//需要实现org.springframework.web.servlet.mvc.Controller这个接口
public class UserController implements Controller {//重写handleRequest方法,返回类型为ModelAndView @Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {ModelAndView mv = new ModelAndView();mv.setViewName("user.jsp");//mv的视图文件位置mv.addObject("name", "张三");//mv传递参数(key:“name”,value:“张三”)mv.addObject("age", 18);//mv传递参数(key:“age”,value:“18”)return mv;}
}

3.创建springmvc.xml

这是SpringMVC的配置文件,是url路径和控制层的映射

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--映射路径 name为映射地址  class为映射的类文件--><bean name="/user" class="com.llf.controller.UserController"/></beans>

4.配置web.xml文件

web.xml文件是配置整个webapp项目的核心文件

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><!--前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--指定spring mvc配置文件的位置  --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><!--拦截所有的请求--><url-pattern>/</url-pattern></servlet-mapping></web-app>

5.编写视图页面

jsp文件就是我们目前的视图界面,在这个界面中可以去渲染我们的数据

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>无敌暴龙战神</title>
</head>
<body>
<label>姓名:${name}
</label><br/>
<label>年龄:${age}
</label>
</body>
</html>

注意在<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>中一定要设置isELIgnored="false",因为jsp默认将el表达式给忽略掉,加上后el表达式才能够渲染到页面上。

在这里插入图片描述
接着我们启动tomcat服务器访问http://localhost:8080/user这个地址,就可以看到上方我们的数据已经渲染到页面上了。


总结

简单介绍了SpringMVC第一个项目的创建及配置,其实SpringMVC的使用有很多配置和参数。感兴趣的可以去官网上查看文档。SpringMVC中文网

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

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

相关文章

rust标准库std::env环境相关的常量

在env这个库中&#xff0c;有一些环境相关的常量&#xff0c;这些常量在std::env::consts这个模块下面&#xff0c;通过这个依赖库可以获取到当前程序所运行的环境和运行的目录地址等信息。 env 常量 std::env下面一些系统相关的常量&#xff1a; ARCH DLL_EXTENSION DLL_P…

2024/03/28(C++·day4)

一、思维导图 二、练习题 1、写出三种构造函数&#xff0c;算术运算符、关系运算符、逻辑运算符重载尝试实现自增、自减运算符的重载 #include <iostream>using namespace std;// 构造函数示例 class MyClass { private:int data; public:// 默认构造函数MyClass() {da…

Notepad++:格式化json字符串(带转义)

目录 一、效果呈现 二、去除json字符串转义 三、格式化json字符串 一、效果呈现 格式化前 带字符串转义&#xff0c;带unicode编码字符 格式化后 二、去除json字符串转义 方法&#xff1a;采用Notepad的普通替换 第一&#xff1a;\"替换为" 第二&#xff1a;\\…

SAP BTP云上一个JVM与DB Connection纠缠的案例

前言 最近在CF (Cloud Foundry) 云平台上遇到一个比较经典的案例。因为牵扯到JVM &#xff08;app进程&#xff09;与数据库连接两大块&#xff0c;稍有不慎&#xff0c;很容易引起不快。 在云环境下&#xff0c;有时候相互扯皮的事蛮多。如果是DB的问题&#xff0c;就会找DB…

进入消息传递的魔法之门:ActiveMQ原理与使用详解

嗨&#xff0c;亲爱的童鞋们&#xff01;欢迎来到这个充满魔法的世界&#xff0c;今天我们将一同揭开消息中间件ActiveMQ的神秘面纱。如果你是一个对编程稍有兴趣&#xff0c;但又对消息中间件一知半解的小白&#xff0c;不要害怕&#xff0c;我将用最简单、最友好的语言为你呈…

HarmonyOS 应用开发之UIAbility组件生命周期

概述 当用户打开、切换和返回到对应应用时&#xff0c;应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调&#xff0c;通过这些回调可以知道当前UIAbility实例的某个状态发生改变&#xff0c;会经过UIAbility实例的创建和销毁&#xff0c;…

【数据结构刷题专题】—— 二叉树

二叉树 二叉树刷题框架 二叉树的定义&#xff1a; struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(NULL), right(NULL); };1 二叉树的遍历方式 【1】前序遍历 class Solution { public:void traversal(TreeNode* node, vector&…

win11蓝牙图标点击变灰,修复过程

问题发现 有一天突然心血来潮想着连接蓝牙音响放歌来听,才发现win11系统右下角菜单里的蓝牙开关有问题。 打开蓝牙设置,可以正常直接连上并播放声音,点击右下角菜单里的蓝牙开关按钮后,蓝牙设备也能正常断开,但是按钮直接变深灰色,无法再点击打开。 重启电脑,蓝牙开关显…

AMD本月发布的成本优化型Spartan UltraScale+ FPGA系列

随着 FPGA 在更多应用中的使用&#xff0c;AMD 推出了最新的成本、功耗与性能平衡的系列产品。为了扩展其可编程逻辑产品组合&#xff0c;AMD最近推出了最新的成本优化型 Spartan FPGA 系列。随着 FPGA 应用于越来越多的产品和设备&#xff0c;设计人员可能经常发现自己正在寻找…

Electron+Vue构建项目时出错:Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT

问题&#xff1a;ElectronVue构建项目时出错&#xff1a;Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT URL:https://github.com/nklayman/vue-cli-plugin-electron-builder/issues/1701 一&#xff0c;构建时node版本要低 同时构建命令如下&#xff1a; "el…

Excel·VBA数组分组问题

看到一个帖子《excel吧-数据分组问题》&#xff0c;对一组数据分成4组&#xff0c;使每组的和值相近 目录 代码思路1&#xff0c;分组形式、可分组数代码1代码2代码2举例 2&#xff0c;数组所有分组形式举例 这个问题可以转化为2步&#xff1a;第1步&#xff0c;获取一组数据…

数据分析能力模型分析与展示

具体内容&#xff1a; 专业素质 专业素质-01 数据处理 能力定义•能通过各种数据处理工具及数据处理方法&#xff0c;对内外部海量数据进行清洗和运用&#xff0c;提供统一数据标准&#xff0c;为业务分析做好数据支持工作。 L1•掌握一…

AJAX-项目优化(目录、基地址、token、请求拦截器)

目录管理 基地址存储 在utils/request.js配置axios请求基地址 作用&#xff1a;提取公共前缀地址&#xff0c;配置后axios请求时都会baseURLurl 填写API的公共前缀后&#xff0c;将js文件导入到html文件中 <script src"../../utils/request.js"></script&…

OpenHarmony实战开发-Web组件的使用

介绍 本篇Codelab使用ArkTS语言实现一个简单的免登录过程&#xff0c;向大家介绍基本的cookie管理操作。主要包含以下功能&#xff1a; 获取指定url对应的cookie的值。设置cookie。清除所有cookie。免登录访问账户中心。 原理说明 本应用旨在说明Web组件中cookie的管理操作。…

5个适用于 Windows/PC 的水印去除软件(视频/图像)

水印是文本、徽标、印记、图像或签名&#xff0c;通常叠加在视频、其他图像或具有较高透明度的 PDF 文档上。当您免费使用某些产品&#xff08;例如视频编辑器&#xff09;时&#xff0c;最终输出通常带有代表您使用的编辑器的水印。您可能需要出于您的目的从此类媒体文件中删除…

目标检测+车道线识别+追踪

一种方法&#xff1a; 车道线检测-canny边缘检测-霍夫变换 一、什么是霍夫变换 霍夫变换&#xff08;Hough Transform&#xff09;是一种在图像处理和计算机视觉中广泛使用的特征检测技术&#xff0c;主要用于识别图像中的几何形状&#xff0c;尤其是直线、圆和椭圆等常见形状…

ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程

原文链接&#xff1a;ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598798&idx2&sn014f5ae90306a3b1e8fd87ab58561411&chksmfa820329cdf58a3f72799a43016b223057fd1bd02284…

语音模块摄像头模块阿里云结合,实现垃圾的智能识别

语音模块&摄像头模块&阿里云结合 文章目录 语音模块&摄像头模块&阿里云结合1、实现的功能2、配置2.1 软件环境2.2 硬件配置 3、程序介绍3.1 程序概况3.2 语言模块SDK配置介绍3.3 程序文件3.3.1 开启摄像头的程序3.3.2 云端识别函数( Py > C ) & 串口程序…

HarmonyOS实战开发-实现一个计步器卡片应用

介绍 本篇Codelab基于Stage模型实现带有卡片的计步应用&#xff0c;用于介绍卡片的开发及生命周期实现。需要完成以下功能&#xff1a; 消息通知栏&#xff0c;通知用户今天所行走步数。元服务卡片&#xff0c;在桌面上添加2x2或2x4规格元服务卡片&#xff0c;能看到步数变化…

微信小程序被删除的文件一编译又回来了

一开始创建错了位置&#xff0c;就想着删除文件重新创建&#xff0c;但是没想到每次重新编译的时候&#xff0c;之前被删除的js、wsml文件就又回来了&#xff0c;后来发现是我在app.json中的pages里面的代码没有被删除。 因为我最开始创建错了&#xff0c;快捷创建了页面&#…
推荐文章