struts2学习二:Tomcat的部署目录和访问路径问题
1:idea中配置tomcat后,那么最终的web工程发布到哪里去了?为什么在访问路径中不加工程名就可以访问?
1.1:因为tomcat有段时间没接触了,先回顾下tomcat的目录结构吧?
如图所示:各级文件的主要保存内容是:
- bin:主要是tomcat的一些命令。环境变量、内存修改什么的;
- server.xml(端口,加载目录等),web.xml,context.xml等;
- Catalina目录:可设置默认加载目录
- lib:tomcat的依赖jar包;
- logs:日志
- temp:临时文件;
- webapps:应用目录
- ROOT:默认工程(比如地址栏没有工程名时,默认Root下工程);
- 其他工程;
- work:运行时生成的文件,通过webapps生成,最终运行的文件都在这里,删除无影响。
conf:这个很重要,存放了tomcat的配置文件。
1.2:我们知道,MyEclipse是直接将工程copy到tomcat的webapps目录中,在将tomcat运行起来,通过工程名访问该工程。所以我们可以在webapps中找到对应的工程文件。但是idea不是这么干的,webapps下面是没有你要发布的工程文件的。
1.3:idea安装时的默认缓存文件夹放在c盘中,我们在idea中启动一个web项目,在server栏中可以定位到该工程的具体,比如这里我是:
我的工程名字是:struts2_smallcase,我们打开catalina_base目录:
这三个文件是idea在发布web项目到tomcat时,从项目配置的tomcat地址copy过来的,里面内容完全一致。向上一级:
发现,我们用idea跑过的工程都在 C:\Users\Administrator\.IntelliJIdea2017.3\system\tomcat 中,采用tomcat名_工程名的形式;
到此,我们已经了解到,idea是为每一个发布的project,将tomcat的配置文件复制到idea缓存文件的工程缓存中去。可是为什么访问不需要工程名?
因为每个project都有独立的tomcat配置副本,所以有理由怀疑,idea将当前project设置成默认的访问工程了,事实上我们进入 Tomcat_9_0_0_M22_struts2_smalecase\conf\Catalina\localhost ,发现了里面的ROOT.xml文件,因为tomcat可以通过在conf/Catalina下新建***.xml文件设置默认加载目录,我们打开ROOT.xml,果然:
虚拟目录的映射关系很清楚了!空白路径上的访问都指向了docBase。
1.4:idea的tomcat配置 Application context 与访问路径:
默认情况下,是“/”,此时可以通过: http://localhost:8080/ 访问到index页面,但是修改到: http://localhost:8080/struts2_smalecase/ 是访问不到的;
如果改成上图形式:那么 http://localhost:8080/ 不能访问,而 http://localhost:8080/struts2_smalecase/ 是可以正常访问的。
因此,我怀疑是:无论 Application context 怎么配置,都是通过 http://localhost:8080/Application context 路径访问该工程,只是地址栏上带不带工程名的问题了。
2:主要是用来熟悉一下struts2的struts.xml的配置和相关的逻辑:
ref:http://www.cnblogs.com/compassblog/p/8454543.html
--End--
struts2学习二:Tomcat的部署目录和访问路径问题的更多相关文章
- Java学习-032-JavaWeb_001 -- Tomcat环境部署及基本配置
首先到 Tomcat 官网,下载对应的版本,我本机的系统是 WIN7 64BIT 的,因而我选择的是64bit 的zip包,如下图所示:
- Java学习-043-获取文件在目录中的路径
我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...
- Maven入门---修改tomcat版本及端口及访问路径(四)
Maven中通过添加插件修改tomcat版本及端口及访问路径 --------------------------------------------------------------------- ...
- 更改Eclipse下Tomcat的部署目录 ,防止上传的文件是到eclipse的克隆的tomcat上的webapp,而不是tomcat本身的webapp
使用eclipse开发是因为机器不够用myeclipse,eclipse也比myeclipse清爽很多,启动速度也快.这里的搭建开发环境使用: Jdk1.6+Tomcat6+Eclipse JEE, ...
- 更改Eclipse下Tomcat的部署目录
转自:http://kingxss.iteye.com/blog/1741438 前言 今天tomcat启动就报错,后来查原因是因为异常关闭tomcat的原因,需要删除一个sessions.ser的文 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java开发学习(二十四)----SpringMVC设置请求映射路径
一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...
- Tomcat改端口号;修改访问路径,以及配置Context 标签以后Tomcat启动不了
修改tomcat端口号: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout=&qu ...
- Tomcat学习(二)------Tomcat原理详解及请求过程
Tomcat: Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat ...
随机推荐
- 解决:阿里云服务器被植入挖矿程序后修改密码失败的问题(报错:passwd: Authentication token manipulation error)
如下图,在修改密码的时候会报错 原因: 通常不能修改密码都是/etc/passwd文件或者/etc/shadow文件被锁住了 解决: 检查/etc/passwd文件和/etc/shadow文件是否被锁 ...
- elasticsearch算法之搜索模型(一)
面对海量的信息,我们很容易被淹没在信息的海洋中:当我们需要查找某个信息的时候,我们就会输入能够体现我们意图的关键字,搜索引擎会通过解析我们的关键字从而构造相应的查询表示方法:然后搜索引擎通过构造的查询 ...
- 零基础小白也能用的商业智能BI工具,自助式就是香!
随着数字化时代的到来,数据已经成为企业无形的资源,企业对员工的数据分析能力也提出了新的要求.掌握一定的数据分析能力无疑会大大增加自己在职场中的竞争力,但并不是所有人都具备专业的数据分析基础,尤其是虽 ...
- 微服务从代码到k8s部署应有尽有系列(十、错误处理)
我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...
- qt(二)
主程序入口: #include <iostream> #include <QApplication> #include "MainWindow.h" int ...
- JZ-028-数组中出现次数超过一半的数字
数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超 ...
- SpringMVC入门二:SSM整合(spring+springmvc+mybatis)
一.编程步骤 1.引入依赖 spring.springmvc.mybatis.mybatis-spring.mysql.druid.log4j.servlet-api.jstl.fastjson 2. ...
- SQL Server的Linked Servers(链接)
我们在使用SQL Server时,有时会有这种需求,需要从一个SQL Server服务器A中,查询另一个SQL Server服务器B中的表,然后将SQL Server服务器A中的表和SQL Serve ...
- 【python】pip安装库时出现Read timed out.解决办法
昨天第一次用python画圆,当时并没有安装numpy库(导入数据包)和matplotlib库(导入图形包),于是尝试用pip安装库 首先,我先更新了pip,如下图: 顺便附上成功截图: 然后安装nu ...
- .NET 6: New DateOnly and TimeOnly strcuts
Background and Motivation .NET 目前有用于处理日期和时间的DateTime和DateTimeOffset.但在许多情况下,用户需要处理日期而根本不关心时间部分,也存在需要 ...