TomCat是什么不多说了,这里是用来记录我学习TomCat的操作与心路历程
本文对比演示用纯Tomcat和用IDEA集成开发同样的页面效果的两种方法。
在不用IDEA集成开发环境时稍微学习了一些tomcat,能写出一个界面并且用get、post函数试着传递数据。(在下文介绍一下流程并给予简单分析) 指路:https://www.runoob.com/servlet/servlet-first-example.html (Tomcat本来就是servlet的一种,所以指到了Servlet。)
大概的梳理一下不用IDEA来使用一个Tomcat创建一个服务器管理应用: 先记事本写一段java代码,用来在Servlet基类的基础上自定义咱们自己的服务端;
// 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); // 实际的逻辑是在这里 PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // 什么也不做 } }这里就是在定义我们的服务端,当然这里代码很简单,翻译成人话就是:
无论用户从浏览器发送了什么Get请求,那么都返回一个html页面其中写着“Hello World” 保存为HelloWorld.java后关闭文件
接下来把这一段简单的服务器定义编译成一个类class 这里把HelloWorld.java放在C:\TMP下面来编译
假设已经安装好java了(JDK),但是可能没有那些java库编译的时候会报错 所以先把依赖库告知给JDK。
网上有很多种解法,我用最无脑的 直接在环境变量里添加CLASSPATH,让它指向把Tomcat目录下的依赖库里面的servlet-api.jar,这样java在编译的时候就会用上这个jar包(没有CLASSPATH就自己建) 可能报这个错误,是源代码编码问题,用记事本另存为ANSI就行 编译完成后,现在我们就有了一个HelloWorld.class 里面是我们继承的servlet类定义 现在我们把它部署到Tomcat中,复制到这个文件夹内: 修改上一级WEB-INF 的web.xml
<web-app> <servlet> <servlet-name>HelloWorld</servlet-name> //servlet标识 <servlet-class>HelloWorld</servlet-class> //servlet类名 </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> // servlet标识 <url-pattern>/HelloWorld</url-pattern> //映射用的URL </servlet-mapping> </web-app>这个文件用来告诉Tomcat当访问到指定的一个URL时 映射到一个我们定义的Servlet类,在这里就是HelloWorld.class
保存后,运行Tomcat的bin/startup.bat 访问localhost:8080/HelloWorld
以上应该比较清楚的介绍了怎么架起一个小服务器,那么用IDEA实现相同的功能是什么流程呢 用这个初始配置来自动生成项目 会发现是这样的目录结构,web.xml和WEB-INF很眼熟,但是index.jsp是什么,classes文件夹怎么也没了?
在这里,xxx.class这类的源代码文件 应当存放在src文件夹内,所以在src中新建一个一个Java Class文件。取名
classes.HelloWorldEnter 后就有了一个Java Class文件 这里src是无法直接创建文件夹的,要在起名的时候带入路径 这个HelloWorld和之前写HelloWorld.java是一样的 直接黏贴代码 接下来一样 去写web.xml 和刚刚黏贴的代码唯一不同就是servlet类名要包括路径。
运行
自动跳出来的就是index.jsp写的html,在地址栏后面添加/HelloWorld 就能访问我们的Servlet返回的html (项目地址可以在Configuration的Deployment中修改)
上面实现的Tomcat两个页面效果一样,但是实现过程,显然在IDEA中更加紧凑,而且依赖包不用手动配置(以后还能用在IDEA里面用Maven自动导入依赖包)
但是IDEA为了统一整合,自带了一个项目外壳,用index.jsp呈现,访问路径在Configuration-Delpoyment中设置,这其实是一种方便,只不过可能对像我这样还没写几个Tomcat代码的小朋友比较confusing。写下来记录着。