IDEA 部署Tomcat教程(透彻理解操作)
本文只讲 IDEA 部署 Tomcat 的各项设置,帮助你了解全流程,不再是网上那种只讲怎么做不讲为什么的教程。
图都是在 Linux 下用 frameshot 截的,所以不要好奇为什么是/home/
而不是D:\
本文作者 yucloud.cnblogs.com,转载请在明显位置注明出处和转载自哪里
在 IDEA 上控制 Tomcat 部署,我们就必须了解各项选项的详细作用:
首先我们看一下 IDEA 里的当前项目结构配置
File -》 Project Structure
设置 Web 资源目录和 Tomcat读取的 web.xml 配置文件
然后为了让 Tomcat 读取到我们需要的 Web 资源
要设置一下 Web资源路径和 web.xml 配置文件
-> Facets -> 点加号添加 -> Web
注意:这里把 Web 资源目录设置为根目录"/" ,其实是指 设置为
部署目录的根目录
(即下下张图里,提到的那个 目录的下面)
再点 Artifacts ,这里熟悉吧?这里就是 Tomcat 部署设置的一部分
如果你还需要 module(当然Eclipse里叫项目) 里的一些文件,可以右击 Available Elements
下的模块(如右击图中的 servlet2Spring,选择 Put Into Output Root
)
Tomcat 的 Run/Debug 配置
点击菜单栏下的 Edit Configurations... (我缩小了窗口,所以在左边,但是一般都是在右边的)
这里可以点加号,添加一个 External Source...
(额外的资源目录作为服务器部署目录)
处理常见问题
让我们来处理一些常见问题
Web资源找不到
如 html jsp css js 等文件没有在 IDEA 部署目录里
检查 Facets 里是否有 Web,并且各种路径配置是否正确
我想把项目下的 README.md 也放到部署目录
可以右击 Available Elements
下的模块(如右击图中的 servlet2Spring,选择 Put Into Output Root
) 更多详见标题2
上传文件失败 404 错误
不止是上传文件错误,很多 404 问题都应该按如下步骤检查
检查一下你设置的 http 路径是否可以访问,用 GET/POST 工具试一下
比较有可能是你设置的 Tomcat 路径是 例如http://localhost:8080/Demo_war_exploded
但是你用的上传路径是 http://localhost:8080/upload
- 这时候要么把上传路径改为
http://localhost:8080/Demo_war_exploded/upload
- 要么把 Tomcat Run/Debug 配置的 URL 改为 http://localhost:8080/ 并设置 Application Context 为"/"
更多详见标题3
html 超链接打开错误
检测一下地址栏上的地址,是不是变了
假如当前 http 路径是localhost:45/Demo_war_exploded/
,点击链接之后变成了localhost:45/testa
写超链接时要注意 "/testa" "./testa" "testa"
的区别
- /testa 是指域名根路径 ,如
localhost:45/testa
- ./testa 和 testa 都是指当前的 http 路径 ,如
localhost:45/Demo_war_exploded/testa
附表
路径 | 详解 |
---|---|
/ | 域名根路径 |
./ | 当前路径 |
../ | 当前路径的上一层 |
可以看出路径是符合 Unix 规范
另外,域名根路径和部署目录不一定是对应的,这里拿上面的示例讲一下
上面示例的部署目录对应的 http路径 是
localhost:45/Demo_war_exploded
而域名是localhost:45
域名根路径是localhost:45/
可见这里的域名根路径访问的不是 JavaWeb 项目的部署路径
这里你可能有疑惑,为什么我们打开域名localhost:45
和域名根路径localhost:45/
是一样的?
- 其实,这都是浏览器或服务器的功劳,是它们帮忙搞定了这些
路径补全、重定向、转发
的问题
Tomcat 常见报错
检查 web.xml 里的过滤路径是否正确
错误代码
<url-pattern>test</url-pattern>
改正:
<url-pattern>/test</url-pattern>
url-pattern 这个元素好像没有相对路径的写法
就我知道的,它只支持
写法示例 | 写法解释 |
---|---|
*.jk | 匹配后缀名为 jk 的文件 |
/go/ | 精确绝对路径 |
/go/* | 模糊路径匹配 |
但是混合写法是错的: /go/*.do
和 /go*
都是非法的
另外匹配的原则是:详细的路径优先,后缀名匹配优先级最低
(备注:在 Tomcat 或 Spring 的 XML 配置文件里,HTTP URL 的 "/" 根路径都是域名根路径如 localhost:8081/
)
如果有不想被拦截的静态资源,可以用 servlet-name 为default
的默认拦截器(这个拦截器会放行你设置的 url ),如
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
详见: https://blog.csdn.net/hello5orld/article/details/9407905
部署原理见: Intellij idea 的tomcat原理讲解
写完文章才看到这篇,早知道不自己截图了....
最后,Tomcat 的部署目录和Home目录变量为什么是

图中为知乎陈龙的回答
IDEA 部署Tomcat教程(透彻理解操作)的更多相关文章
- SpringBoot项目打war包部署Tomcat教程
一.简介 正常来说SpringBoot项目就直接用jar包来启动,使用它内部的tomcat实现微服务,但有些时候可能有部署到外部tomcat的需求,本教程就讲解一下如何操作 二.修改pom.xml 将 ...
- Linux系统下部署Tomcat服务器
详细步骤如下: 1.下载xshell5和xftp5并安装,登录连接服务器,新建会话窗口: 2.安装配置JDK1.8,具体操作方法如下: (1)下载JDK地址:http://www.oracle.com ...
- maven自动部署到远程tomcat教程
使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间. 本文章适用于tomcat的7.x ,8.x, 9.x版本. 下面是自动部的步骤 1,首先,配 ...
- renren-fast部署发布教程(tomcat)
renren-fast部署发布教程(tomcat) 说明:renren的开发文档需要付费,官方的生产部署介绍相对比较简单,因此记录自己的部署过程 为了方便,前后端我都部署在同一台linux服务器上,其 ...
- spring boot 打包war后 部署到外部 tomcat 的具体正确操作【包括修改端口 与 去除请求路径的工程名】
1.前言 工程做好了,总不能放在idea运行吧?不然怎么把项目放到云服务器呢?[这一篇随笔不讲解发布的云服务器的操作,在其他随笔有详细记载.] 解决的方案是把springboot 工程 打包成war文 ...
- Solr 4.0 部署实例教程
Solr 4.0 部署实例教程 Solr 4.0的入门基础教程,先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为H ...
- Windows 8实例教程系列 - 理解应用框架
原文:Windows 8实例教程系列 - 理解应用框架 Windows 操作系统之所以风靡世界,是因为其“易学易用”,从用户的角度出发,让数以万计的非IT人员使用计算机实现娱乐,工作等目的.Windo ...
- Jenkins自动部署Tomcat项目
Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:
- linux环境下部署tomcat
服务器环境:Red Hat Enterprise Linux Server release 6.5 安装部署包:apache-tomcat-8.0.30.tar.gz.jdk-8u66-linux-x ...
随机推荐
- 【前端知识体系-JS相关】ES6专题系列总结
1.如何搭建ES6的webpack开发环境? 安装Node环境 node -v // 10.14.1 安装NPM环境 npm -v // 6.4.1 安装babel npm install @babe ...
- C# 消息队列之 RabbitMQ 基础入门
Ø 简介 C# 实现消息队列的方式有很多种,比如:MSMQ.RabbitMQ.EQueue 等,本文主要介绍使用 RabbitMQ 实现消息队列的基础入门.包括如下内容: 1. 什么是消息队列? ...
- Spring自动注入,类型注入、名称注入(两种方式)
参考: https://blog.csdn.net/qq_41767337/article/details/89002422 https://www.iteye.com/blog/breezylee- ...
- 基于Spark的电影推荐系统(推荐系统~1)
第四部分-推荐系统-项目介绍 行业背景: 快速:Apache Spark以内存计算为核心 通用 :一站式解决各个问题,ADHOC SQL查询,流计算,数据挖掘,图计算 完整的生态圈 只要掌握Spark ...
- 关于css中的定位
关于前端的几种定位方式 近期自己感觉自己对于前端定位的知识还是不是太理解,所以自己就在这里做一个总结 1.元素的定位属性主要包括定位模式和边偏移两部分. 边偏移属性 描述 top bott ...
- CTF必备技能丨Linux Pwn入门教程——环境配置
说在前面 这是一套Linux Pwn入门教程系列,作者依据Atum师傅在i春秋上的Pwn入门课程中的技术分类,并结合近几年赛事中出现的一些题目和文章整理出一份相对完整的Linux Pwn教程. 问:为 ...
- i春秋CTF-“百度杯”CTF比赛 九月场 XSS平台
“百度杯“CTF比赛 九月场 ###XSS平台 看了别人的wp才知道这里需要变数组引起报错然后百度信息收集,这一步在实战中我觉得是很有作用的,get到. 这里取百度rtiny,看别人w ...
- Windows 10 Java开发环境配置
一.JDK下载 安装java开发环境,第一步就是下载jdk安装包.打开浏览器进入oracle官网下载.这里注意jdk和jre的区别,jdk(java develop environment)是java ...
- Arcgis CreateFishnet工具,生成到FileGDB中要素类的格网大小不一致
我的第一篇博客!哈哈 最近在做一些关于创建渔网的工作,发现一些问题,做个总结. 1.问题描述:如图1,设置好渔网的必要参数,输出目录为gdb里的矢量图层,(行列数比较大,渔网的地理范围较小),输出的格 ...
- 利用Python调用pastebin.com API自动创建paste
在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste 登录之后,进入API页面,发现网站已经提供了几个API ...