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 ...
随机推荐
- Elasticsearch搜索调优权威指南 (1/3)
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/qwkZKLb_ghmlwrqMkqlb7Q英文原文:https://qbox.io/blog/ela ...
- TP框架where条件和whereOr条件同时使用
前言:where里面的条件是 && 的关系,whereOr里面的条件是 | | 的关系, 想要得到的效果: 1.筛选出is_deleted字段为0(未删除)的公告 2.筛选出全部状态为 ...
- 机器学习(八)--------支持向量机 (Support Vector Machines)
与逻辑回归和神经网络相比,支持向量机或者简称 SVM,更为强大. 人们有时将支持向量机看作是大间距分类器. 这是我的支持向量机模型代价函数 这样将得到一个更好的决策边界 理解支持向量机模型的做法,即努 ...
- Java8新特性——Optional类的使用(有效的避免空指针异常)
OPtional类的使用 概述 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因.以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guav ...
- 剑指 Offer——2. 替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路与实现 ...
- SPFA板子
#pragma GCC optimize(3) #include <bits/stdc++.h> using namespace std; ; vector<pair<int, ...
- hydra使用,实例介绍
hydra 是一个网络帐号破解工具,支持多种协议.其作者是van Hauser,David Maciejak与其共同维护.hydra在所有支持GCC的平台能很好的编译,包括Linux,所有版本的BSD ...
- django-manage.py参数
cleanup--从数据库中删除旧数据 compilemessages--将.po文件编译为.mo以与gettext一起使用 createcachetable--为SQL缓存后端创建表 create ...
- UGUI 逻辑以及实用性辅助功能
UGUI 有它的实用性, 可是也存在理解上的困难, 因为它在面板上的显示内容根据布局而变动, 如果不深入理解它的设计原理, 估计每次要进行程序上的修改都需要进行一次换算和测试过程. 1. 设置某UI的 ...
- Ubuntu下搭建Kubernetes集群(2)--docker基本操作
查看当前的容器和images docker ps -a docker images 1.创建新的容器 docker run -it --name 容器名 镜像名 /bin/bash # 挂载目录和端口 ...