java spring mvc 初探 web搭建过程详解

提前准备安装tomcat

设备:mac

第一步:下载
进入官网下载压缩包
注意:如果jdk版本是1.8,则tomcat需要v8才行,否则会报错
https://tomcat.apache.org/
Xnip2021-12-21_16-22-18

第二步:解压
解压后路径
/Users/you/Library/tomcat/apache-tomcat-8.5.73
进入此目录 修改配置 code setclasspath.sh

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
export JRE_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home

添加环境变量
Xnip2021-12-21_16-26-19

第三步: 启动服务
cd /Users/you/Library/tomcat/apache-tomcat-8.5.73/bin
sh startup.sh
查看效果 http://localhost:8080/
打开页面看到那只猫表示启动成功
Xnip2021-12-21_16-28-38

停止服务 方式
sh shutdown.sh

demo: spring mvc

目标

  • 创建工程,mvc架构
  • 自定义controller和view(jsp)
// 提前准备安装tomcat 
// tomcat安装后路径:/Users/you/Library/tomcat/apache-tomcat-8.5.73
// Library文件夹是隐藏的,如果需要从idea引入tomcat,还需要注意使用打开隐藏文件开关// 1. 初始化工程
// 创建 spring mvc 工程
- create new project 
- 选择: 左侧spring  右侧 Spring MVC(5.2.3) +Download
- 填写: project name spring02-mvc
- Finished // 2. 工程目录
├── lib
│   ├── aopalliance-1.0.jar
│   ├── commons-logging-1.2.jar
│   ├── spring-aop-5.2.3.RELEASE.jar
│   ├── spring-aspects-5.2.3.RELEASE.jar
│   ├── spring-beans-5.2.3.RELEASE.jar
│   ├── spring-context-5.2.3.RELEASE.jar
│   ├── spring-context-support-5.2.3.RELEASE.jar
│   ├── spring-core-5.2.3.RELEASE.jar
│   ├── spring-expression-5.2.3.RELEASE.jar
│   ├── spring-instrument-5.2.3.RELEASE.jar
│   ├── spring-jdbc-5.2.3.RELEASE.jar
│   ├── spring-jms-5.2.3.RELEASE.jar
│   ├── spring-messaging-5.2.3.RELEASE.jar
│   ├── spring-orm-5.2.3.RELEASE.jar
│   ├── spring-oxm-5.2.3.RELEASE.jar
│   ├── spring-test-5.2.3.RELEASE.jar
│   ├── spring-tx-5.2.3.RELEASE.jar
│   ├── spring-web-5.2.3.RELEASE.jar
│   └── spring-webmvc-5.2.3.RELEASE.jar
├── spring02-mvc.iml
├── src
└── web├── WEB-INF│   ├── applicationContext.xml│   ├── dispatcher-servlet.xml│   └── web.xml└── index.jsp
// 4.1 xml配置 web/WEB-INF/dispatcher-servlet.xml
//  JSP 根据配置存放jsp文件配置
<?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-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd">// <!--支持注解,例如@Controller,对应src下controller的包名--><context:component-scan base-package="com.ah" /><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">// <!-- 配置JSP页面的位置:比如controller中return "hi" 对应文件位置是 /web/template/hi.jsp --><property name="prefix"><value>/template/</value></property><property name="suffix"><value>.jsp</value></property></bean>
</beans>
// 4.2 xml配置 web/WEB-INF/web.xml 重要! 否则controller新的路由会出现404 
// 修改 url-pattern 标签 
// 修改前: <url-pattern>*.form</url-pattern>
// 修改后: <url-pattern>/</url-pattern>// 5. 新增controller 
// 新增包: src下 com.ah 
// 新增类: src/com.ah/HelloMVCController.java 
// 对应路由是: localhost:8080/hi 
package com.ah;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HelloMVCController {@RequestMapping(value = "/hi", method = RequestMethod.GET)public String hi(ModelMap model) {System.out.println("===test hi===");model.addAttribute("msg", "hello spring mvc!");return "hi";}
}// 6. 添加jsp 
spring02-mvc/web/index.jsp  // 工程默认创建的 
spring02-mvc/web/template/hi.jsp // 自定义,对应controller路由 hi // 7. idea部署服务器tomcat
- 准备本机tomcat安装目录: /Users/you/Library/tomcat/apache-tomcat-8.5.73
- idea -Run -Edit Configurations -》 点绿色的+号,选择 tomcat-->local -》出现弹窗 
弹窗配置server
- name: tomcat8 
- application server: 选择tomcat 的安装目录  /Users/you/Library/tomcat/apache-tomcat-8.5.73 
- URL: 改为 http://localhost:8080/  默认是 http://localhost:8080/spring02_mvc_war_exploded/
弹窗配置Deployment
- 点击 +- 选择: Artifact... 
- 选择完成后,中间区域出现 spring02-mvc:war exploded 
- Application context: / 默认是 /spring02_mvc_war_exploded// 8. 核对idea配置
idea -File -Project Structure 弹窗 
左侧每个入口检查下配置 
图解: https://img-blog.csdnimg.cn/img_convert/1536246cd64491338955df2ea13bb262.jpeg
需要重点看 Artifacts: 保证 WEB-INF/lib 存在spring mvc 的依赖包 
- 最后侧的2个spring依赖包上右键: put into /WEB-IN/lib 
- 操作完成后,中间区域打开 WEB-INF 目录确认lib添加进来// 9. 调试运行
- 方式1: Run-> Debug 'tomcat' 
- 方式2: 点击小虫虫// 10. 最终效果
// http://localhost:8080/
// http://localhost:8080/hi

xml配置 web/WEB-INF/dispatcher-servlet.xml
JSP 根据配置存放jsp文件配置 Snipaste_2023-12-27_11-39-47

idea部署服务器tomcat
Snipaste_2023-12-27_11-06-32

核对idea配置

调试运行
Snipaste_2023-12-26_16-39-43

最终效果
Snipaste_2023-12-27_11-23-41

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

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

相关文章

使用PyTorch实现去噪扩散模型

在深入研究去噪扩散概率模型(DDPM)如何工作的细节之前&#xff0c;让我们先看看生成式人工智能的一些发展&#xff0c;也就是DDPM的一些基础研究。 VAE VAE 采用了编码器、概率潜在空间和解码器。在训练过程中&#xff0c;编码器预测每个图像的均值和方差。然后从高斯分布中对…

CAN协议

文章目录 CAN介绍CAN的优势多主控制通信速度较快&#xff0c;通信距离远具有错误检测、错误通知和错误恢复功能故障封闭功能连接节点多 ISO11519-2物理层特性ISO11898物理层特性CAN 收发芯片 JTA1050 CAN 协议5 种帧5种帧介绍数据帧的构成帧起始仲裁段控制段数据段CRC段ACK段帧…

一文讲透使用Python绘制双纵轴线图

双纵轴线图主要用来展示两个因变量和一个自变量的关系&#xff0c;并且两个因变量的数值单位不同。具体来说&#xff0c;双纵轴线图是指在一幅图上有一个横轴和两个纵轴&#xff0c;适用于三个变量。两个纵轴分别表示一个变量&#xff0c;横轴变量同时适用于两个纵轴上的变量&a…

报错curl: (6) Could not resolve host: raw.githubusercontent...的解决办法

我起初想要在macOS系统安装pip包&#xff0c;首先在终端安装homebrew&#xff0c;敲了命令&#xff1a;/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent...)" 之后触发的报错&#xff0c;报错内容&#xff1a;curl: (6) Could not resolve host: raw.…

【大数据】Flink CDC 的概览和使用

Flink CDC 的概览和使用 1.什么是 CDC2.什么是 Flink CDC3.Flink CDC 前生今世3.1 Flink CDC 1.x3.2 Flink CDC 2.x3.3 Flink CDC 3.x 4.Flink CDC 使用5.Debezium 标准 CDC Event 格式详解 1.什么是 CDC CDC&#xff08;Change Data Capture&#xff0c;数据变更抓取&#xf…

专业级的渗透测试服务,助力航空业数字化安全启航

​某知名航空公司是中国首批民营航空公司之一&#xff0c;运营国内外航线200多条&#xff0c;也是国内民航最高客座率的航空公司之一。在数字化发展中&#xff0c;该航空公司以数据驱动决策&#xff0c;通过精细化管理、数字创新和模式优化等方式&#xff0c;实现了精准营销和个…

k8s之flink的几种创建方式

在此之前需要部署一下私人docker仓库&#xff0c;教程搭建 Docker 镜像仓库 注意&#xff1a;每台节点的daemon.json都需要配置"insecure-registries": ["http://主机IP:8080"] 并重启 一、session 模式 Session 模式是指在 Kubernetes 上启动一个共享的…

智慧旅游景区解决方案:PPT全文49页,附下载

关键词&#xff1a;智慧景区建设&#xff0c;智慧旅游平台&#xff0c;智慧旅游运营检测系统项目&#xff0c;智慧文旅&#xff0c;智慧景区开发与管理&#xff0c;智慧景区建设核心&#xff0c;智慧景区开发与管理 一、智慧景区建设现状 1、基础设施建设&#xff1a;智慧景区…

推荐收藏!万字长文带入快速使用 keras

这些年&#xff0c;有很多感悟&#xff1a;一个人精力是有限的&#xff0c;一个人视野也有有限的&#xff0c;你总会不经意间发现优秀人的就在身边。 看我文章的小伙伴应该经常听我说过的一句话&#xff1a;技术要学会交流、分享&#xff0c;不建议闭门造车。一个人可以走的很…

Keil5,ARM编译器 软件优化注意事项

优化C代码中的环路终止 循环是大多数程序中的常见结构。由于大量的执行时间通常花费在循环中&#xff0c;因此值得关注时间关键循环。 如果不谨慎地编写&#xff0c;环路终止条件可能会导致大量开销。在可能的情况下&#xff1a; 使用简单的终止条件。 写入倒计时到零循环。…

MySQL三种常见存储引擎【理论】【需动手操作】

先放一个大佬的博客 等以后有时间按大佬写的 动手操作一下 链接 MySOL 的存储引擎是指 MySOL 数据库管理系统中用于处理数据存诸和检索的组件。 MySOL 常用的存储引擎有以下几个: InnoDB: InnoDB 是 MySQL(5.5)的默认存储引擎&#xff0c;支持事务处理、行级锁定和物理外键约…

2024年超详细的Python3学习路径规划

前言 基于Python3.5 1.第一阶段基础&#xff08;必须&#xff09; Python3 环境搭建Python3 基础语法Python3 基本数据类型Python3 数据类型转换Python3 解释器Python3 注释Python3 运算符Python3 数字(Number)Python3 字符串Python3 列表Python3 元组Python3 字典Python3 集…

dnSpy调试工具二次开发1-新增菜单

测试环境&#xff1a; window 10 visual studio 2019 版本号&#xff1a;16.11.15 .net framework 4.8 开发者工具包 下载 .NET Framework 4.8 | 免费官方下载 .net 5开发者工具包 下载 .NET 5.0 (Linux、macOS 和 Windows) 利用git拉取代码(源码地址&#xff1a;Gi…

启动IDEA报错,web servcer failed to start.port 8080 was already in use.

启动IDEA报错&#xff0c;web servcer failed to start.port 8080 was already in use. 问题现状 启动IDEA失败&#xff0c;端口被占用。 解决办法&#xff1a; 使用netstat -ano指令&#xff0c;查看端口占用情况 因为我是win11的系统&#xff0c;使用指令时出现如下提示。…

【IC设计】移位寄存器

目录 理论讲解背景介绍什么是移位寄存器按工作模式分类verilog语法注意事项 设计实例循环移位寄存器算术双向移位寄存器5位线性反馈移位寄存器伪随机码发生器3位线性反馈移位寄存器32位线性反馈移位寄存器串行移位寄存器&#xff08;打4拍&#xff09;双向移位寄存器&#xff1…

c语言题目之统计二级制数中1的个数

文章目录 题目一、方法1二、方法2三&#xff0c;方法3总结 题目 统计二进制数中1的个数 输入一行&#xff0c;输出一行 输入&#xff1a; 输入一个整数 输出&#xff1a; 输出存储在内存中二进制的1的个数 一、方法1 之前的文章中&#xff0c;小编写了有关于内存在二进制中的存…

Fiddler工具 — 8.会话列表(Session List)

1、会话列表说明 Fiddler抓取到的每条HTTP请求&#xff08;每一条称为一个session&#xff09;。 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息。如下图&#xff1a; 说明&#xff1a; 名称含义#抓取HTTP Request的顺…

Ribbon相关问题及答案(2024)

1、Ribbon是什么&#xff0c;它在微服务架构中扮演什么角色&#xff1f; Ribbon是一个客户端负载均衡器&#xff0c;它在微服务架构中扮演着关键性的角色。Ribbon的设计理念是在客户端进行服务发现和负载均衡&#xff0c;这种方式不同于传统的通过中心化的负载均衡器&#xff…

YHZ018 Python 运算符优先级

资源编号&#xff1a;YHZ018 配套视频&#xff1a;https://www.bilibili.com/video/BV1zy4y1Z7nk?p19 YHZ018&#xff1a;运算符优先级 &#x1fabf; 运算符优先级 Python支持多种运算符&#xff0c;下表按照优先级从高到低的顺序列出了所有运算符。运算符的优先级决定了在表…

面试算法90:环形房屋偷盗

题目 一条环形街道上有若干房屋。输入一个数组表示该条街道上的房屋内财产的数量。如果这条街道上相邻的两幢房屋被盗就会自动触发报警系统。请计算小偷在这条街道上最多能偷取的财产的数量。例如&#xff0c;街道上5家的财产用数组[2&#xff0c;3&#xff0c;4&#xff0c;5…