TomCat是什么不多说了,这里是用来记录我学习TomCat的操作与心路历程
本文对比演示用纯Tomcat和用IDEA集成开发同样的页面效果的两种方法。
在不用IDEA集成开发环境时稍微学习了一些tomcat,能写出一个界面并且用get、post函数试着传递数据。(在下文介绍一下流程并给予简单分析)
指路:https://www.runoob.com/servlet/servlet-first-example.html
(Tomcat本来就是servlet的一种,所以指到了Servlet。)
1. 回顾用裸Tomcat:
大概的梳理一下不用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
2. IDEA中的实现:
以上应该比较清楚的介绍了怎么架起一个小服务器,那么用IDEA实现相同的功能是什么流程呢
用这个初始配置来自动生成项目
会发现是这样的目录结构,web.xml和WEB-INF很眼熟,但是index.jsp是什么,classes文件夹怎么也没了?
在这里,xxx.class这类的源代码文件 应当存放在src文件夹内,所以在src中新建一个一个Java Class文件。取名
classes.HelloWorld
Enter 后就有了一个Java Class文件
这里src是无法直接创建文件夹的,要在起名的时候带入路径
这个HelloWorld和之前写HelloWorld.java是一样的 直接黏贴代码
接下来一样 去写web.xml
和刚刚黏贴的代码唯一不同就是servlet类名要包括路径。
运行
自动跳出来的就是index.jsp写的html,在地址栏后面添加/HelloWorld
就能访问我们的Servlet返回的html
(项目地址可以在Configuration的Deployment中修改)
3. 总结:
上面实现的Tomcat两个页面效果一样,但是实现过程,显然在IDEA中更加紧凑,而且依赖包不用手动配置(以后还能用在IDEA里面用Maven自动导入依赖包)
但是IDEA为了统一整合,自带了一个项目外壳,用index.jsp呈现,访问路径在Configuration-Delpoyment中设置,这其实是一种方便,只不过可能对像我这样还没写几个Tomcat代码的小朋友比较confusing。写下来记录着。