提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一、B/S模式
浏览器/服务器
二、HTTP
hypertext transform protocol
基于tcp 请求 对事物没有记忆功能 每一次都要重新加载
常见请求头:
host:请求头
User-Agent:浏览器版本
Accept:浏览器能接收的资源类型 such as text
Accept-language:表示浏览器偏好语言,服务器可以据此返回不同语言的网页
Accept-Encoding:浏览器可以支持的压缩类型,如gzip、deflate等
get请求头没有请求体 比如密码直接放在请求行中
post请求头 有请求体 密码放在请求体里面
2.响应数据格式
代码如下(示例):
1.响应行:第一行
2.响应头:第二行 开始 key values
3.响应体:后面的
该处使用的url网络请求的数据。
3.状态码
三、idea创建webapp项目
1.下载tomcat 并解压
2.创建项目
3.成功
4. 配置本地tomcat
1.
2.
3
直接加a.html就可以
四、Servlet
1.快速入门
1.创建web项目 导入Servlet依赖坐标
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
</dependency>
注意:tomcat10 对应的servlet版本是 5.0(如果版本太低会报错)
java.lang.NoClassDefFoundError: javax/servlet/Servlet
2.定义一个类 实现Servlet接口 重写所有方法
package test;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.*;
import java.io.IOException;
@WebServlet("/c")
public class my implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("成功啦成功啦");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
3.在类上使用 @WebServlet注释 配置Servlet的访问路径 如上
4.启动
空白界面就成功啦
控制台有以下输出就ok啦
2.Servlet 生命周期
1.加载和实例化 servlet由 tomcat 创建 默认
2.初始化:调用Servlet init()方法 只调用一次哈
3.请求处理 调用service() 会调用很多次
4.终止 不是强制关闭 会调用destroy()
3.方法
获取ServletConfig对象
public ServletConfig getServletConfig() {
return null;
}
获取Servlet信息
public String getServletInfo() {
return null;
}
4.Servlet 体系结构
为什么分 get post 方法?
请求参数不一样 所以要写不同的逻辑
如何调用 ?
获取请求方式 写if else
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// 根据请求方式的不同,进行分别的处理
HttpServletRequest request = (HttpServletRequest) req;
//1. 获取请求方式
String method = request.getMethod();
//2. 判断
if("GET".equals(method)){
// get方式的处理逻辑
doGet(req,res);
}
else if("POST".equals(method)){
// post方式的处理逻辑
doPost(req,res);
}
}
最基本的方法
public class ServletDemo9 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo9 get...");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
5.Servlet urlPsttern配置
/**
* urlPattern:
* * 目录匹配:/user/*
*/
@WebServlet(urlPatterns = "/user/*")
urlPattern({})
/**
* urlPattern:
* * 任意匹配:/
*/
//@WebServlet(urlPatterns = "/")//不建议用
* * 任意匹配:/*
/**
* urlPattern:一个Servlet可以配置多个访问路径
*/
@WebServlet(urlPatterns = {"/demo7","/demo8"})
6.XML 配置Servlet
<!--
Servlet 全类名
-->
<servlet>
<servlet-name>demo13</servlet-name>
<servlet-class>com.itheima.web.ServletDemo13</servlet-class>
</servlet>
<!--
Servlet 访问路径
-->
<servlet-mapping>
<servlet-name>demo13</servlet-name>
<url-pattern>/demo13</url-pattern>
</servlet-mapping>
不好用啊 不如直接 @WebServlet