一、Tomcat的安装
下载完成后会看到如下目录
1、目录说明
bin目录
- .bat windows下的可执行程序
- startup.bat 启动程序, 双击后就会把tomcat服务启动, 浏览器中输入localhost:8080 会看到一个本地界面,意味着tomcat安装成功了,需要jdk支持
- shutdown.bat 关闭操作
- shutdown.sh linux系统使用
conf配置文件
- server.xml 可以修改端口号等
-
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
lib目录
包含很多jar包, 有两个jar包是很重要的
- jsp-api.jar
- servlet-api.jar
log目录
- 存放日志信息
temp目录
- 存放临时文件
webapps
- 之前创建普通工程想要运行可以打成jar包, web项目要打成war包
二、第一个web程序
IDEA是2021版本
创建一个工程后,邮件点击Add Framework Support
勾选Web Application, Ok
项目中会看到web目录
src下创建包xyz.kxq, 新建Myservlet文件
想象一下如果自定义Tomcat的逻辑
需要定义
request对象 Tomcat中有此对象
response对象 Tomcat中有此对象
server对象 Tomcat本身就是一个Server
MyHttpServlet接口规范 或者是抽象类,或父类,在子类中实现
实现MyServlet子类 自己实现
以及Mapping映射关系 配置
public class MyServlet extends HttpServlet
这里继承会飘红找不到父类, 并没有一个依赖关系, Tomcat下lib目录 servlet-api.jar导入
选择Project Structure, 按下图添加
这样就可以了, 会看到HttpServlet导入了
import javax.servlet.ServletException; public class MyServlet extends HttpServlet { }
Myservlet.java
package xyz.kxq; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // super.service(req, resp); resp.getWriter().write("first web project"); System.out.println("my first web project"); } }
映射关系, web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>xyz.kxq.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/first</url-pattern> </servlet-mapping> </web-app>
程序写好了,接下来该运行了, 运行方式需要把当前web tomcat包加载进来
选择Run , Edit Configurations
接下来选择Tomcat版本, 点击+, 选择Local,
点击Local会看到
没有一个标准区分部署环境, 一个Tomcat会部署N多个web项目, 这时就要选择一个合适的, 也就是说有多个相同的请求时能匹配到哪一个项目.
点击Fix,
选择Deployment, 右侧一直下拉
一般与项目名一致, Apply OK
运行可能会报错
Error: java: Compliation failed: internal java compiler error
xuanze File->Settings
启动成功
FirstWeb区分不同路径下相同请求