4.1 Servlet简介
- Servlet是一种Web服务器端编程技术
- 是实现了特殊接口的Java类
- 由支持Servlet的Web服务器调用和启动运行
- 一个Servlet负责对应的一个或一组URL访问请求,并返回相应的响应内容
4.2 Intellij IDEA上的out目录
Intellij IDEA中,将整个web项目,会放在project目录下的out/artifacts中,不会放在Tomcat的webapps下,但Tomcat启动后,会将该out/artifacts下的项目加载到Tomcat中(正常情况下可以通过修改server.xml实现),猜测这是为了方便移植才这样处理,因为一旦需要将这个web项目,由开发环境转到生产环境时,只需将out/artifacts目录下所有内容导入生产环境的Tomcat中的webapps下即可
4.3 Servlet生命周期
- 每种Servlet,都是只有一个实例,无法重复创建多个,多次同一个请求,是由同一个Servlet对象处理的
- 当一个Servlet接收到第一次请求时,创建该Servlet对象,并调用init方法
- 如果在web.xml中配置了<load-on-startup>标签,那么在Tomcat启动时,就会创建该Servlet对象,中间的数值表示优先级
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
- 服务器关闭后,先调用destroy方法,然后销毁Servlet对象
4.4 Servlet中的service、doGet、doPost方法之间的关系
//HttpServlet中的service方法代码片段
if (method.equals("GET")) {
...
this.doGet(req, resp);
}else if (method.equals("POST")) {
this.doPost(req, resp);
}
...
- 自己编写的Servlet中的service、doGet、doPost都会覆盖HttpServlet中对应的方法
- 如果覆盖了service方法, 而新的service方法中没有调用doGet或doPost,那么接收到的请求,不再会进行doGet、doPost处理
- HttpServlet中没提供doGet、doPost的默认实现,因此如果自己编写的Servlet中不重写这两个方法, 就无法正确处理请求,响应码405
- 编写Servlet时,不需要重写service方法,只需重写doGet和doPost即可
4.5 自定义jsp发送post请求
- method.jsp
<%--
Created by IntelliJ IDEA.
User: 含低调
Date: 2020/2/19
Time: 16:22
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!--form为表单,action表示该表单提交后所发送的uri,method为请求方法-->
<form action="HelloWorld" method="post">
用户名:<input type="text" name="name" value=""><br/>
密码:<input type="text" name="pwd" value=""><br/>
<input type="submit" value="登录">
</form>
</body>
</html>
- 浏览器访问该jsp
http://localhost:8080/myfirstServlet/method.jsp