本文只讲 IDEA 部署 Tomcat 的各项设置,帮助你了解全流程,不再是网上那种只讲怎么做不讲为什么的教程。
图都是在 Linux 下用 frameshot 截的,所以不要好奇为什么是/home/
而不是D:\
本文作者 yucloud.cnblogs.com,转载请在明显位置注明出处和转载自哪里
File -》 Project Structure
然后为了让 Tomcat 读取到我们需要的 Web 资源
要设置一下 Web资源路径和 web.xml 配置文件
-> Facets -> 点加号添加 -> Web
注意:这里把 Web 资源目录设置为根目录"/" ,其实是指 设置为
部署目录的根目录
(即下下张图里,提到的那个
再点 Artifacts ,这里熟悉吧?这里就是 Tomcat 部署设置的一部分
如果你还需要 module(当然Eclipse里叫项目) 里的一些文件,可以右击 Available Elements
下的模块(如右击图中的 servlet2Spring,选择 Put Into Output Root
)
点击菜单栏下的 Edit Configurations... (我缩小了窗口,所以在左边,但是一般都是在右边的)
让我们来处理一些常见问题
如 html jsp css js 等文件没有在 IDEA 部署目录里
检查 Facets 里是否有 Web,并且各种路径配置是否正确
可以右击 Available Elements
下的模块(如右击图中的 servlet2Spring,选择 Put Into Output Root
) 更多详见标题2
不止是上传文件错误,很多 404 问题都应该按如下步骤检查
检查一下你设置的 http 路径是否可以访问,用 GET/POST 工具试一下
比较有可能是你设置的 Tomcat 路径是 例如http://localhost:8080/Demo_war_exploded
但是你用的上传路径是 http://localhost:8080/upload
http://localhost:8080/Demo_war_exploded/upload
更多详见标题3
检测一下地址栏上的地址,是不是变了
假如当前 http 路径是localhost:45/Demo_war_exploded/
,点击链接之后变成了localhost:45/testa
写超链接时要注意 "/testa" "./testa" "testa"
的区别
localhost:45/testa
localhost:45/Demo_war_exploded/testa
附表
路径 | 详解 |
---|---|
/ | 域名根路径 |
./ | 当前路径 |
../ | 当前路径的上一层 |
可以看出路径是符合 Unix 规范
另外,域名根路径和部署目录不一定对应,这里拿上面的示例讲一下
上面示例的部署目录对应的 http路径 是localhost:45/Demo_war_exploded
而域名是localhost:45
域名根路径是localhost:45/
这里你可能有疑惑,为什么我们打开域名localhost:45
和域名根路径localhost:45/
是一样的?
路径补全、重定向、转发
的问题检查 web.xml 里的过滤路径是否正确
错误代码
<url-pattern>test</url-pattern>
改正:
<url-pattern>/test</url-pattern>
url-pattern 这个元素好像没有相对路径的写法
就我知道的,它只支持
写法示例 | 写法解释 |
---|---|
*.jk | 匹配后缀名为 jk 的文件 |
/go/ | 精确绝对路径 |
/go/* | 模糊路径匹配 |
但是 /go/*.do
这种混合写法是错的
另外匹配的原则是:详细的路径优先,后缀名匹配优先级最低
原文:https://www.cnblogs.com/yucloud/p/11291607.html