本文所用软件版本:
- JDK(1.8):JDK8u92 64位
- Eclipse(4.6):eclipse-jee-neon-R-win32-x86_64
- Tomcat(8.5.4):apache-tomcat-8.5.4-windows-x64
1. 向Eclipse中添加Tomcat
首先,需要安装好JDK,Eclipse,Tomcat并配置好相关的环境变量。Tomcat配置好后,在浏览器输入http://localhost:8080/会出现如下图所示的Tomcat的首页。
在Eclipse中点击【Window】-->【Preferences】后,在弹出的界面中点击左侧的【Server】-->【RuntimeEnvironrenment】,会弹出如下图所示界面:
点击【Add】添加Tomcat。
选择Apache Tomcat v9.0,勾上Create a new local Server(不勾上也可以使用安装的Tomcat,但勾上可以进行一些方便使用的配置),然后点击【Next】。
这里修改Tomcat名称,选择Tomcat的安装目录和使用JDK,然后点击【Finish】完成。然后可以看到Eclipse的项目资源管理器(Project Explorer)这里多了一个Servers,如下图所示。
双击下图中红色圈出的地方,将出现Servers的配置界面。
下图是Eclipse对刚刚添加的Tomcat的默认配置,其中Server Locations指定了Server的路径和应用部署的路径。
2. 创建Web测试工程,对在Eclipse中发布项目进行测试
首先新建一个Web工程,我们将工程命名为TestSite。在Eclipse中点击【File】-->【new】-->【Dynamic Web Project】,如下图所示。
输入工程名称,然后连续两次点击【Next】。
修改应用上下文(根路径),然后点击【Finish】完成。
接下来新建一个index.jsp文件和一个TestServlet类。通过在项目上右键,依次点击【New】-->【JSP File】创建JSP文件。
创建完index.jsp页面后,它自动在Eclipse中被打开,如下图所示。我们看到页面中有一个“HttpServlet类没有在Java 编译路径上找到”的错误。解决该错误只需将
相关实现servlet规范的jar包添加到Build Path上即可。
在工程上右击,然后依次点击【Build Path】-->【Configure Build Path…】,如下图所示。
点击【Add Library】,添加依赖库。
点击【Server RunTime】-->【Next】。
选择刚刚添加进Eclipse的Tomcat,然后点击【Finish】完成。
现在页面中出现的错误已经消失了。我们将title标签中的内容改为test,在body标签中添加一句简单的“welcome to this site!”,如下图所示。
通过在【Deployment Descriptor】下的【Servers】上右键,然后依次点击【New】-->【Servlet】新建一个Servlet类。 如下图所示。
输入包名和类名,然后点击【Next】,进行下一步操作。
这里点击【Edit】可以修改TestServlet的URL映射。我们将其修改为“/test”。
以下是新建的TestServlet中的doGet和doPost方法。
现在,可以发布我们的测试工程到Tomcat了。如下图所示,通过【Add and Remove】可以部署和卸载工程。
发布好工程后,在浏览器中输入http://localhost:8080/site/ ,如下图所示,说明没有问题。
再输入http://localhost:8080/site/test,访问我们的TestServlet,如下图所示,也成功了。
不过现在查看Tomcat中什么发现什么东西也没有。刚刚发布的工程其实在如下图所示的目录中。
下面我们将介绍使用自定义的目录来部署我们的应用。
3. 使用自定义的目录来部署应用(强烈推荐)
如下图所示,【Server Locations】有三种配置方式,使用工作空间元数据、使用Tomcat安装位置和使用自定义位置。第一和第三种方式不会修改安装的Tomcat,第二种方式会控制安装的Tomcat。即使用第一和第三种方式时,应用程序的部署不会造成安装的Tomcat中的任何文件的改变(不要将Server Path 和 Deploy Path 指向安装的Tomcat中的目录),Tomcat是干净的,因为并没有直接部署到Tomcat的任何目录中,而是将项目部署到了Tomcat安装目录之外的其他目录中,第二种方式是直接部署到Tomcat中。
刚刚的测试工程的部署是使用的Eclipse的默认方式—使用工作空间元数据,使用这种方式项目是部署到了工作空间中,部署的项目不能够轻易找到,如果部署的项目越多,工作空间会越来越庞大。
下面我们使用自定义的目录来部署应用程序。按如下方式配置好后,在Eclipse中启动Tomcat。
现在查看我们刚刚为Server Path指定的目录,可以发现,Server Path相当于定义了另一个Tomcat,如下图所示,Server Path 的目录里面多出了几个文件夹,这里除了没有Tomcat安装目录中的bin和lib目录以及一些lisence、readme等不重要的文件,其余都和Tomcat安装目录中的一样。这里进入conf目录同样可以修改一些该Server的配置,比如端口号等。
![](https://i-blog.csdnimg.cn/blog_migrate/9e863349948a1f34b988cc098e4dec48.png)
现在,我们将测试工程部署到Tomcat。并在浏览器中访问,如下图。
此时,我们再查看我们刚刚指定的部署目录,发现根本就没有我们部署的工程,这是因为我们刚刚勾选了serve modules without publishing,在不发布的情况下提供模块。
那么我们是如何能够访问我们的Web应用程序的呢?现在查看conf/Catalina/localhost目录,会发现多了一个site.xml文件,这是我们刚刚勾选了publish module contextsto separate xml file的结果。每部署一个应用,就会在这里产生一个对应的xml文件。该文件实际上是一个应用的Context配置文件,或者说是一个虚拟目录配置文件。打开site.xml,查看其内容,如下图。
docBase配置了应用程序的物理路径,path配置了应用程序的Context-root路径,是一个逻辑路径,reloadable配置了可以自定重新加载,刚刚能够通过http://localhost:8080/site/test访问TestServlet,正是这里的PreResources配置起的作用,它将我们项目中的类编译后的.class文件挂载到了/WEB-INF/classes目录下。能够访问Jsp是因为,JSP编译后的.class文件都在下图中的目录下。
现在,我们再修改一下测试工程中的TestServlet的URL映射,改为“/home”,如下图所示。
修改完,Tomcat将会reaload我们的测试项目,因为我们之前勾选了Modules auto reload by defualt,所以项目的修改会反应到Tomcat中。以下是控制台的输出。
在浏览器中通过新的url访问,成功。
进一步地,我们将端口号修改为80
然后在hosts文件(在C:\Windows\System32\drivers\etc目录下)中建立ip与域名的映射,可在本机通过自己的域名访问。
转载自:https://blog.csdn.net/y1iagx/article/details/52293737?locationNum=1