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

10.2 JavaEE——Spring MVC入门程序

要求在浏览器发起请求,由Spring MVC接收请求并响应,具体实现步骤如下。

一、创建项目

        IDEA中,创建一个名称为chapter10Maven Web项目

(一)手动设置webapp文件夹

1、单击IDEA工具栏中的File→Project Structure...”选项,弹出Project Structure对话框

2、Modules的设置界面中,单击界面上方的“+”图标,弹出Add下拉菜单

3、 Add拉菜单中,单击“Web”选项进入Web Module的设置界面

4、Web Module的设置界面中,单击Deployment Descriptors右侧铅笔图样的编辑按钮,弹出Deployment Descriptors Location对话框

5、在Deployment Descriptors Location对话框中,“Web Module Deployment Descriptor(web.xml):”输入框中可以设置项目web.xml文件的路径。将路径中项目名称后的路径修改为“src\main\webapp\WEB-INF\web.xml”,然后单击“OK”按钮完成web.xml的路径的设置。单击“OK”按钮系统会回步骤4所示的设置界面,在步骤4中单击Web Resource Directories右侧铅笔图样的编辑按钮,弹出Web Resource Directory Path话框。

 

二、引入Maven依赖

        项目创建完成后,为保障项目的正常运行,需要导入项目所需的依赖到项目的pom.xml文件中。 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.test</groupId><artifactId>chapter10</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><!--Spring 核心类--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency><!--Spring MVC--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.8.RELEASE</version></dependency><!-- servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--JSP--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency></dependencies><!--构建--><build><!--设置插件--><plugins><!--具体的插件配置--><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><port>8080</port><path>/chapter10</path></configuration></plugin></plugins></build>
</project>

需要注意的是要在IDEA中使用插件运行Maven项目,除了需要在pom.xml文件中配置对应的插件外,还需要在IDEA中进行项目运行的相关配置。

(一)IDEA中使用插件运行Maven项目

1、单击IDEA工具栏中的“RunEdit Configurations...”选项,弹出Run/Debug Configurations对话框 

2、Run/Debug Configurations对话框中,单击左上角的“+”按钮,弹出Add New Configurations菜单列表

3、Add New Configurations菜单列表中,单击左侧菜单中的“Maven”选项,进入Maven指令的配置界面。

三、配置前端控制器在项目的web.xml文件中进行Spring MVC前端控制器的配置。 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"><!-- 配置 Spring MVC 的前端控制器 --><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:spring-mvc.xml</param-value></init-param><!-- 应用加载时创建--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

四、配置处理器映射信息和视图解析器创建Spring MVC的配置文件spring-mvc.xml,用于配置处理器映射信息和视图解析器

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置 Spring MVC 要扫描的包 --><context:component-scan base-package="com.test.controller"/><!-- 配置视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean>
</beans>

五、创建处理器

        创建处理器FirstController类,用于处理客户端的请求并指定响应时转跳的页面

//设置当前类为处理器类
@Controller
public class FirstController {//设定当前方法的访问映射地址@RequestMapping("/firstController")//设置当前方法返回值类型为 String,用于指定请求完成后跳转的页面public String sayHello() {System.out.println("访问到 FirstController!");//设定具体跳转的页面return "success";}
}

六、创建视图(View)页面

        创建名称为page的文件夹,并在page文件夹下创建名称为successjsp文件,用于对客户端请求进行处理后的视图展示

<html>
<body>
<h2>Spring MVC FirstController!</h2>
</body>
</html>

七、启动项目,测试应用

        项目启动成功后,在浏览器中对处理器进行请求访问,访问地址为http://localhost:8080/chapter10/firstController,访问后,IDEA控制台打印信息访问到FirstController!”,并且浏览器跳转到success.jsp页面中,页面内容如下所示。

Spring MVC FirstController!

八、项目最终目录和文件组成

相关文章:

10.2 JavaEE——Spring MVC入门程序

要求在浏览器发起请求&#xff0c;由Spring MVC接收请求并响应&#xff0c;具体实现步骤如下。 一、创建项目 在IDEA中&#xff0c;创建一个名称为chapter10的Maven Web项目。 &#xff08;一&#xff09;手动设置webapp文件夹 1、单击IDEA工具栏中的File→“Project Structu…...

Python 处理大量数据的相关库和框架推荐

Python 处理大量数据的相关库和框架推荐 Python 生态系统中存在多个强大的库和框架&#xff0c;它们可以帮助开发者高效地处理大量数据。以下是一些广泛使用的推荐选项&#xff1a; 1. NumPy 一个用于大规模数值计算的科学计算库。提供多维数组对象和相应的操作。 2. Panda…...

【unity笔记】七、Mirror插件使用

一、简介 Mirror 是一个用于 Unity 的开源多人游戏网络框架&#xff0c;它提供了一套简单高效的网络同步机制&#xff0c;特别适用于中小型多人游戏的开发。以下是 Mirror 插件的一些关键特点和组件介绍&#xff1a; 简单高效&#xff1a;Mirror 以其简洁的 API 和高效的网络…...

掌握SEO:如何优化用ChatGPT生成的文章以提升搜索排名

在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为网站流量的重要来源。随着人工智能技术的进步&#xff0c;越来越多的人开始使用ChatGPT等AI工具来生成文章。然而&#xff0c;虽然这些工具可以快速生成内容&#xff0c;但要确保这些内容在搜索引擎中…...

Java面试问题(一)

一.Java语言具有的哪些特点 1.Java是纯面向对象语言&#xff0c;能够直接反应现实生活中的对象 2.具有平台无关性&#xff0c;利用Java虚拟机运行字节码文件&#xff0c;无论是在window、Linux还是macOS等其他平台对Java程序进行编译&#xff0c;编译后的程序可在其他平台上运行…...

Firewalld防火墙基础

Firewalld 支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具 支持IPv4、IPv6防火墙设置以及以太网桥 支持服务或应用程序直接添加防火墙规则接口 拥有两种配置模式 运行时配置&#xff1a;临时生效&#xff0c;一旦重启或者重载即不生效 永久配置&#xff1a…...

解决Java中多线程同步问题的方案

解决Java中多线程同步问题的方案 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;多线程同步问题是我们经常面对的挑战之一。正确处理…...

每日一练 - RSTP与STP收敛速度对比

01 真题题目 RSTP 收敛速度比 STP 要快,以下说法正确的是&#xff1f; A. 在 RSTP 中检测拓扑是发生变化只有一个标准.一个非边缘端口迁移到 Forwarding 状态 B. 在 STP 中,为了避免临时环路,至少要等待一个 Forwarding Delay 待全网端口确定,所有端口才能进行转发 C. P/A …...

ZS-20H型水泥胶砂振实台

一、 概述 水泥胶砂振实台是为我国水泥胶砂强度检验方法等同采ISO679国际标准而设计。该仪器符合 JC/T 682《水泥胶砂试体成型振实台》要求&#xff0c;适用于水泥强度检验所用试样的制备。 二、 技术数据 1、台盘&#xff08;包括臂杆、压模框等&#xff09;的总质量 13.75 …...

力扣377 组合总和Ⅳ Java版本

文章目录 题目描述代码 题目描述 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], targe…...

昇思25天学习打卡营第3天 | 数据集 Dataset

数据是深度学习的基础&#xff0c;高质量的数据输入将在整个深度神经网络中起到积极作用。MindSpore提供基于Pipeline的数据引擎&#xff0c;通过数据集&#xff08;Dataset&#xff09;和数据变换&#xff08;Transforms&#xff09;实现高效的数据预处理。其中Dataset是Pipel…...

交换机三层架构及对流量的转发机制

交换机的作用&#xff1a; 区别集线器(HUB)&#xff1b; HUB 为物理层设备&#xff0c;只能直接转发电流 交换机为数据链路层设备&#xff0c;可以将电流与二进制转换&#xff0c;实现了以下功能&#xff1a; 无限的传输距离 彻底解决了冲突-所有的接口可以同时收发数据 二…...

开发者配置项、开发者选项自定义

devOptions.vue源码 <!-- 开发者选项 &#xff08;CtrlAltShiftD&#xff09;--> <template><div :class"$options.name" v-if"visible"><el-dialog:custom-class"sg-el-dialog":append-to-body"true":close-on…...

【Java】解决Java报错:IndexOutOfBoundsException in Collections

文章目录 引言一、IndexOutOfBoundsException的定义与概述1. 什么是IndexOutOfBoundsException&#xff1f;2. IndexOutOfBoundsException的常见触发场景3. 示例代码 二、解决方案1. 检查索引范围2. 使用增强型for循环3. 使用ListIterator进行遍历4. 使用线程安全的集合 三、最…...

C++编程(三)面向对象

文章目录 一、概念二、类的定义&#xff08;一&#xff09;声明一个类类型的语法格式&#xff1a;&#xff08;二&#xff09;类中的访问控制权限&#xff08;三&#xff09;实例化对象1. 栈区对象2. 堆区对象 &#xff08;四&#xff09;类内声明类外实现&#xff08;五&#…...

Batch入门教程

Batch学习在多个领域有不同的应用&#xff0c;但最常见的是在机器学习和教育学习领域。以下是一个关于Batch学习入门的清晰指南&#xff0c;将分别介绍这两个领域中的Batch学习概念、方法和一些实用信息。 1. 机器学习中的Batch学习 定义与概念 Batch_Size&#xff1a;在机器…...

49-2 内网渗透 - 使用UACME Bypass UAC

靶场准备: 1. 使用已有的 Windows 2012 虚拟机 确保你的虚拟机正在运行,并且可以正常访问。2. 添加 test 用户到管理员组(如上篇文件添加过了就跳过这一步) 具体命令如下: net localgroup administrators test /add 3. 切换用户登录 注销当前会话,并使用 test 用户登录。…...

Django 表单使用示例:数据格式校验

在本文中,我们将使用 Django 的表单(Forms)功能来创建一个添加角色的页面,并对用户提交的数据进行格式校验。 创建 Django 项目和应用 首先,我们创建一个名为 ​​form_demo​​​ 的 Django 项目和一个名为 ​​app01​​ 的应用: django-admin startproject form_de…...

OkHttp框架源码深度剖析【Android热门框架分析第一弹】

OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架&#xff0c;由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp&#xff0c;同时现在流行的Retrofit框架底层同样是使用OKHttp的。 源码传送门 优点: 支持Http1、Http…...

【MySQL】数据库——备份与恢复,日志管理1

一、数据备份的重要性 1.备份的主要目的是灾难恢复 在生产环境中&#xff0c;数据的安全性至关重要 任何数据的丢失都可能产生严重的后果造成数据丢失的原因&#xff1a; 程序错误人为,操作错误运算错误磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃 2.数据库备份…...

免费音频编辑终极指南:Audacity 4 让专业音频处理触手可及

免费音频编辑终极指南&#xff1a;Audacity 4 让专业音频处理触手可及 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 你是否曾经想要编辑音频却苦于没有合适的工具&#xff1f;或者被昂贵复杂的专业软件吓退&…...

Qwen3.5-9B应用场景:高校AI教学——图像题自动批改+实验报告生成

Qwen3.5-9B应用场景&#xff1a;高校AI教学——图像题自动批改实验报告生成 1. 高校教学场景的AI解决方案 在高校计算机和人工智能相关课程的教学中&#xff0c;教师常常面临两大挑战&#xff1a;一是需要批改大量学生提交的图像识别作业&#xff0c;二是需要指导学生完成规范…...

Unity坐标变换笔记

屏幕uv坐标计算方法&#xff1a; 顶点着色器&#xff1a; float4 positionCS : SV_POSITION; //表示裁剪空间下的坐标&#xff1b; float4 ndc input.positionCS * 0.5f; input.positionNDC.xy float2(ndc.x, ndc.y * _ProjectionParams.x) ndc.w; input.positionNDC.zw …...

LiveSplit:速度跑计时领域的精准度革新与实践指南

LiveSplit&#xff1a;速度跑计时领域的精准度革新与实践指南 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit 在竞技游戏的毫秒级竞争中&#xff0c;计时工具的精准度直接决…...

Vim 快捷键手册

Vim 快捷键手册 模式说明 普通模式&#xff08;Normal&#xff09;&#xff1a;默认模式&#xff0c;用于导航和命令执行插入模式&#xff08;Insert&#xff09;&#xff1a;输入文本可视模式&#xff08;Visual&#xff09;&#xff1a;选择文本命令模式&#xff08;Command&…...

BilibiliDown新手入门指南:如何轻松下载B站视频资源

BilibiliDown新手入门指南&#xff1a;如何轻松下载B站视频资源 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/…...

深入浅出理解注意力机制:原理、实战、应用及训练与推理阶段差异

深入浅出理解注意力机制&#xff1a;原理、实战、应用及训练与推理阶段差异 摘要&#xff1a;注意力机制是深度学习领域的核心创新&#xff0c;更是Transformer架构的灵魂&#xff0c;其灵感源自人类的“选择性关注”能力&#xff0c;解决了传统模型长距离依赖捕捉不足、并行计…...

如何快速解密科学文库加密文档:终极免费解密工具指南

如何快速解密科学文库加密文档&#xff1a;终极免费解密工具指南 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档&#xff0c;支持破解科学文库、标准全文数据库下载的文档。无损破解&#xff0c;保留文字和目录&#xff0c;解除有效期限制。 项目地址: htt…...

无公网IP解决方案:内网穿透实现OpenClaw远程调用SecGPT-14B

无公网IP解决方案&#xff1a;内网穿透实现OpenClaw远程调用SecGPT-14B 1. 问题背景与挑战 去年我在尝试将OpenClaw接入本地部署的SecGPT-14B模型时&#xff0c;遇到了一个典型的技术困境&#xff1a;我的开发环境位于家庭宽带网络下&#xff0c;没有固定公网IP地址。这意味着…...

FPGA新手避坑指南:UART、SPI、I2C三大串行协议到底怎么选?

FPGA新手避坑指南&#xff1a;UART、SPI、I2C三大串行协议到底怎么选&#xff1f; 第一次接触FPGA开发时&#xff0c;面对琳琅满目的通信协议选择&#xff0c;很多新手都会感到无从下手。UART、SPI、I2C这三种最常见的串行协议各有特点&#xff0c;但选错协议可能导致项目延期、…...