HTTP的Request格式
1.请求行 (Request Line):
GET /index.php HTTP/1.1
2.请求头 (Headers):
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
3.空行 (Blank Line):请求头结束后有一个空行,表示请求头的结束。
4.请求体 (Body)(可选):仅在某些请求方法(如 POST、PUT)中使用,包含发送到服务器的数据。
完整的HTTP请求示例:
POST /submit HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
name=John&age=30
HTTP的Response数据格式
1.状态行 (Status Line):包含 HTTP 版本、状态码和状态描述。
HTTP/1.1 200 OK
2.响应头 (Headers):
Content-Type: text/html; charset=UTF-8
Content-Length: 1354
Date: Sun, 08 Sep 2024 06:25:42 GMT
3.空行 (Blank Line):响应头结束后有一个空行,表示响应头的结束。
4.响应体 (Body)(可选):包含实际返回的数据,如 HTML 文档、图像等。
完整的HTTP响应示例:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1354
Date: Sun, 08 Sep 2024 06:25:42 GMT
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
TomCat
修改启动端口号: conf/server.xml
Maven Web项目结构
1.开发中的项目
2.可以部署的Web项目
TomCat-创建MavenWeb项目
使用骨架创建:
pom.xml留下这些东西
IDEA中集成TomCat7
在pom.xml添加 TomCat7 插件
可以通过 port 标签和 path 标签控制服务器占用的端口和访问时需要填写的路径
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
Servlet
Servlet 是 Java EE(Java Platform, Enterprise Edition)中的一种组件,用于生成动态的 Web 内容。
Servlet的生命周期
Servlet 生命周期由以下几个阶段组成:
- 加载和实例化 :服务器加载 Servlet 类,并创建一个实例。
- 初始化 :调用 init() 方法进行初始化。
调用时机: 默认情况下是Servlet被第一次访问时调用, 但可以通过 loadOnStartup = 1 修改调用时机: 把实现Servlet接口的类的注解写成这样
@WebServlet(urlPatterns = "/demo1", loadOnStartup = 1)
loadOnStartup = 1
代表Servlet类被创建的时候就会调用init方法, 默认值是-1
- 请求处理 :每次请求到来时,服务器调用 service() 方法,该方法进一步调用 doGet(), doPost() 等方法。
service() 方法调用时机: 每次Servlet被访问时都要调用一次
- 销毁 :在服务器卸载 Servlet 或重启时,调用 destroy() 方法进行资源释放。
destroy() 方法调用时机: jvm释放内存(极少见)或服务器关闭的时候, 只会调用一次
Servlet快速入门
package com.itheima.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(urlPatterns = "/demo1", loadOnStartup = 1)
public class ServletDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("Servlet hello world~");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
@Override
public String getServletInfo() {
return "";
}
@Override
public void destroy() {
}
}
Servlet urlPattern配置
1.精确匹配
@WebServlet(urlPatterns = "/user/select")
- 目录匹配
@WebServlet(urlPatterns = "/user/*")
3.扩展名匹配
@WebServlet(urlPatterns = "/*.do")
4.任意匹配
@WebServlet(urlPatterns = "/")
或
@WebServlet(urlPatterns = "/*")
最好不要使用任意匹配的方式!!
因为会覆盖Servlet默认的urlPattern, 可能会产生一些莫名其妙的问题
XML配置方式编写Servlet
Servlet3.0版本前不支持注解配置, 只能使用XML进行配置
步骤:
1.编写Servlet类
2.在web.xml中配置这个Servlet
<servlet>
<servlet-name>demo5</servlet-name>
<servlet-class>com.itheima.web.ServletDemo5</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo5</servlet-name>
<url-pattern>/demo5</url-pattern>
</servlet-mapping>