SpringMVC第一个helloword项目

news2024/12/23 17:47:11

文章目录

  • 前言
  • 一、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 
    @Override
    public 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.coloradmin.cn/o/1552417.html

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

相关文章

Linux(CentOS)安装Redis教程_简单快捷

一、安装依赖 因为redis是用C语言开发的&#xff0c;所以在安装之前需要确定是否安装gcc环境&#xff08;gcc -v&#xff09;&#xff0c;如果没有安转可以执行一下命令进行安装 [rootlocalhost ~]# yum install -y gcc 二、下载安装包 1.在官网先进行下载 官网地址&#x…

linux 内存介绍

大致共有四类&#xff1a;VSS、RSS、PSS、USS &#xff0c;通常情况下&#xff0c;VSS > RSS > PSS > USS 1.VSS(Virtual Set Size)虚拟耗用内存&#xff08;包含共享库占用的内存&#xff09; VSS表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已…

网络:udptcp套接字

目录 协议 网络传输基本流程 网络编程套接字 udp套接字编程 udp相关代码实现 sock函数 bind函数 recvfrom函数 sendto函数 udp执行指令代码 popen函数 udp多线程版收发消息 tcp套接字编程 tcp套接字代码 listen函数 accept函数 read/write函数 connect函数 recv/…

Gitlab CI---could not read username for xxx: no such device or address

0 Preface/Foreword 项目开发中&#xff0c;经常会使用第三方的算法或者功能&#xff0c;那么就需要把对应的repo以子模块的方式添加到当前repo中。 添加命令&#xff1a; git submodule add <URL> 1 问题表现 子模块添加成功&#xff0c;但是GitLab CI阶段&#xff…

如何在Apache Arrow中定位与解决问题

如何在apache Arrow定位与解决问题 最近在执行sql时做了一些batch变更&#xff0c;出现了一个 crash问题&#xff0c;底层使用了apache arrow来实现。本节将会从0开始讲解如何调试STL源码crash问题&#xff0c;在这篇文章中以实际工作中resize导致crash为例&#xff0c;引出如何…

ChatGLM3:AttributeError_ can‘t set attribute ‘eos_token‘

最近在微调 ChatGLM3-6b 时&#xff0c;训练好模型之后&#xff0c;调用inference_hf.py函数验证模型的时候报了如下错误&#xff0c;下面是解决方案。 我在训练时使用的是ptuning_v2.yaml配置文件&#xff0c;训练运行代码如下&#xff1a; CUDA_VISIBLE_DEVICES1 python fi…

llama-index 结合chatglm3-6B 利用RAG 基于文档智能问答

简介 llamaindex结合chatglm3使用 import os import torch from llama_index.core import VectorStoreIndex, ServiceContext from llama_index.core.callbacks import CallbackManager from llama_index.core.llms.callbacks import llm_completion_callback from llama_ind…

Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models

Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models 相关链接&#xff1a;arxiv 关键字&#xff1a;Vision Language Models、Multi-modality、High-Resolution Visual Tokens、High-Quality Data、VLM-guided Generation 摘要 在这项工作中&#x…

软件工程学习笔记12——运行维护篇

运行维护篇 一、版本发布1、关于软件版本2、版本发布前&#xff0c;做好版本发布的规划3、规范好发布流程&#xff0c;保障发布质量 二、DevOps工程师1、什么是 DevOps 三、线上故障1、遇到线上故障&#xff0c;新手和高手的差距在哪里2、大厂都是怎么处理线上故障的 四、日志管…

探索 2024 年 Web 开发最佳前端框架

前端框架通过简化和结构化的网站开发过程改变了 Web 开发人员设计和实现用户界面的方法。随着 Web 应用程序变得越来越复杂&#xff0c;交互和动画功能越来越多&#xff0c;这是开发前端框架的初衷之一。 在网络的早期&#xff0c;网页相当简单。它们主要以静态 HTML 为特色&a…

插入排序、归并排序、堆排序和快速排序的稳定性分析

插入排序、归并排序、堆排序和快速排序的稳定性分析 一、插入排序的稳定性二、归并排序的稳定性三、堆排序的稳定性四、快速排序的稳定性总结在计算机科学中,排序是将一组数据按照特定顺序进行排列的过程。排序算法的效率和稳定性是评价其优劣的两个重要指标。稳定性指的是在排…

【NLP笔记】大模型prompt推理(提问)技巧

文章目录 prompt概述推理&#xff08;提问&#xff09;技巧基础prompt构造技巧进阶优化技巧prompt自动优化 参考链接&#xff1a; Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing预训练、提示和预测&#xff1a;NL…

植物大战僵尸Javascript版web游戏源码

源码介绍 植物大战僵尸Javascript版web游戏源码&#xff0c;非常强大&#xff0c;1比1还原电脑版植物大战僵尸游戏&#xff0c;带背景音乐&#xff0c;玩法和原版一模一样。 源码截图 下载地址 https://download.csdn.net/download/huayula/89048275

UE RPC 外网联机(2)

外网联机配置测试 一、网络配置 开放外网端口开放端口是为了可以进行外网访问;端口包含一个预案管理服务器端口和多个预案服务器端口;(预案管理服务器类似于大厅,预案服务器类似于房间,大厅管理多个房间;) (1)预案管理服务器端口;(如:23001) (2)预案服务器端口…

UDP send 出现大量“Resource temporarily unavailable”

背景 最近排查用户现场环境&#xff0c;查看日志出现大量的“send: Resource temporarily unavailable”错误&#xff0c;UDP设置NO_BLOCK模式&#xff0c;send又发生在进程上下文&#xff0c;并且还设置了SO_SNDBUF 为8M&#xff0c;在此情况下为什么还会出现发送队列满的情况…

利用R语言和curl库实现网页爬虫的技术要点解析

R语言简介 R语言是一种自由、跨平台的编程语言和软件环境&#xff0c;专门用于统计计算和数据可视化。它具有丰富的数据处理、统计分析和图形展示功能&#xff0c;被广泛应用于数据科学、机器学习、统计建模等领域。 R语言技术优势 丰富的数据处理功能&#xff1a; R语言拥有…

echarts 3D示例 echart, echarts-gl

echarts官网有很多的炫酷的3D模型 来尝试实现下&#xff0c;使用原本的柱状图或者折线图代码创建echarts示例,使用cdn的方式引入echarts <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewp…

windows10搭建reactnative,运行android全过程

环境描述 win10,react-native-cli是0.73&#xff0c;nodeJS是20&#xff0c;jdk17。这都是完全根据官网文档配置的。react-native环境搭建windows。当然官网文档会更新&#xff0c;得完全按照配置来安装&#xff0c;避免遇到环境不兼容情况。 安装nodeJS并配置 这里文档有详…

微信小程序更换头像的功能

微信小程序开发&#xff0c;个人中心中更换头像的更能使用频率很高&#xff0c;这里记录下实现方式&#xff1a; <view class"setting-list avatar-container"><text>头像</text><view class"avatar"><button hover-class"…

GNU Radio之OFDM Carrier Allocator底层C++实现

文章目录 前言一、OFDM Carrier Allocator 简介二、底层 C 实现1、make 函数2、ofdm_carrier_allocator_cvc_impl 函数3、calculate_output_stream_length 函数4、work 函数5、~ofdm_carrier_allocator_cvc_impl 函数 三、OFDM 数据格式 前言 OFDM Carrier Allocator 是 OFDM …