06-Servlet
Posted 亿钱君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了06-Servlet相关的知识,希望对你有一定的参考价值。
Servlet 技术
- 1.Servlet 技术
- 2.ServletConfig 类
- 3.ServletContext 类
- 4.HTTP 协议
- 5. HttpServletRequest 类
- 6.HttpServletResponse 类
1.Servlet 技术
1.1 什么是 Servlet?
1.2 手动实现 Servlet 程序
1、编写一个类去实现 Servlet 接口
2、实现 service 方法,处理请求,并响应数据
package com.atguigu.com.servlet;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet implements Servlet
//专门用来处理请求和响应的
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException
System.out.println("Hello Servlet 被访问了");
3、到 web.xml 中去配置 servlet 程序的访问地址
测试:
- 启动
1.3 url 地址到 Servlet 程序的访问
1.4 Servlet的生命周期
1、执行 Servlet 构造器方法
2、执行 init 初始化方法
第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用
3、执行 service 方法 第三步,每次访问都会调用。
4、执行 destroy 销毁方法 (在 web 工程停止的时候调用)
测试:
package com.atguigu.com.servlet;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet implements Servlet
public HelloServlet()
System.out.println("1:构造器方法");
@Override
public void init(ServletConfig servletConfig) throws ServletException
System.out.println("2:init初始化方法");
//专门用来处理请求和响应的
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException
System.out.println("3:service方法");
@Override
public void destroy()
System.out.println("4:destroy方法");
1.5 GET 和 POST 请求的分发处理
package com.atguigu.com.servlet;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class HelloServlet implements Servlet
//专门用来处理请求和响应的
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException
System.out.println("3:service方法");
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();
if("GET".equals(method))
doGet();
else if("POST".equals(method))
doPost();
private void doPost()
System.out.println("Post请求");
System.out.println("Post请求");
private void doGet()
System.out.println("get请求");
System.out.println("get请求");
创建一个a.html页面,get方法时
测试:
创建一个a.html页面,post方法时
1.6 通过继承 HttpServlet 实现 Servlet 程序
一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
- 1、编写一个类去继承 HttpServlet 类
- 2、根据业务需要重写 doGet 或 doPost 方法
- 3、到 web.xml 中的配置 Servlet 程序的访问地址
测试:举例
- Servlet 类的代码:
package com.atguigu.com.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author syl
* @create 2021/5/30-13:16
*/
public class HelloServlet2 extends HttpServlet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
System.out.println("HelloServlet2的doget方法");
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
System.out.println("HelloServlet2的dopost方法");
- web.xml 中的配置:
- 修改a.html文件
- 测试:成功运行
1.7 使用 IDEA 创建 Servlet 程序
- 直接生成类和配置
- 创建完成后
1.8 Servlet 类的继承体系
2.ServletConfig 类
-
ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。
-
Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
-
Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig 对 象
2.1 ServletConfig 类的三大作用
- 1、可以获取 Servlet 程序的别名 servlet-name 的值
- 2、获取初始化参数 init-param
- 3、获取 ServletContext 对象
3.ServletContext 类
3.1 什么是 ServletContext?
3.2 ServletContext 类的四个作用
1、获取 web.xml 中配置的上下文参数 context-param
- 新建一个ContextServlet类
package com.atguigu.com.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author syl
* @create 2021/5/30-20:11
*/
public class ContextServlet extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
// 1. 获取web.xml中配置的上下文参数context-param
ServletContext context= getServletConfig().getServletContext();
String username = context.getInitParameter("username");
System.out.println("context-param参数username的值是:" + username);
System.out.println("context-param参数username的值是:" + context.getInitParameter("password"));
- 上下文参数的配置
- 测试结果
2、获取当前的工程路径,格式: /工程路径
package com.atguigu.com.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author syl
* @create 2021/5/30-20:11
*/
public class ContextServlet extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
ServletContext context= getServletConfig().getServletContext();
//2.获取当前工程路径
System.out.println("当前工程路径是:" + context.getContextPath());
3、获取工程部署后在服务器硬盘上的绝对路径
package com.atguigu.com.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author syl
* @create 2021/5/30-20:11
*/
public class ContextServlet extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
ServletContext context= getServletConfig().getServletContext();
//3、获取工程部署后在服务器硬盘上的绝对路径
/*
/ 斜杠被服务器解析地址为:http://ip:port/工程名/ 映射到 IDEA 代码的 web 目录(/ 对应web目录)
*/
System.out.println("工程部署的路径是:" + context.getRealPath("/"));
System.out.println("test的路径是:" + context.getRealPath("/test"));
4、像 Map 一样存取数据
。。。。略
4.HTTP 协议
4.1 什么是 HTTP 协议
4.2 请求的 HTTP 协议格式
4.4.1 GET 请求
4.4.2 POST 请求
4.4.3 常用请求头的说明
4.4.4 哪些是 GET 请求,哪些是 POST 请求
4.3 响应的 HTTP 协议格式
4.4 常用的响应码说明
4.5 MIME 类型说明(MIME 是 HTTP 协议中数据类型)
4.6 谷歌浏览器如何查看 HTTP 协议
5. HttpServletRequest 类
5.1 HttpServletRequest 类有什么作用
5.2 HttpServletRequest 类的常用方法
i. getRequestURI() 获取请求的资源路径
ii. getRequestURL() 获取请求的统一资源定位符(绝对路径)
package com.atguigu.com.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author syl
* @create 2021/5/31-8:28
*/
public class RequestAPIServlet extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
//i. getRequestURI() 获取请求的资源路径
System.out.println("URI=>" + request.getRequestURI());
//ii. getRequestURL() 获取请求的统一资源定位符(绝对路径)
System.out.println("URI=>" + request.getRequestURL());
iii. getRemoteHost() 获取客户端的 ip 地址
package com.atguigu.com.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author syl
* @create 2021/5/31-8:28
*/
public class RequestAPIServlet extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
//iii. getRemoteHost() 获取客户端的 ip 地址
/*** 在 IDEA 中,使用 localhost 访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1<br/>
* * 在 IDEA 中,使用 127.0.0.1 访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1<br/>
* * 在 IDEA 中,使用 真实 ip 访问时,得到的客户端 ip 地址是 ===>>> 真实的客户端 ip 地址<br/> */
System.out.println("客户端Ip地址=>" + request.getRemoteHost());
iv. getHeader() 获取请求头
package com.atguigu.com.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author syl
* @create 2021/5/31-8:28
*/
public class RequestAPIServlet extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
//iv. getHeader() 获取请求头
javascript ya / ga柜台检查