Servlet类

Servlet类

一,什么是Servlet类
1,Servlet类是一个Java程序,是在服务上运行以处理客户端请求并做出响应的程序。
Servlet类的核心是javax.servlet.Servlet接口,所有的Servlet必须实现这个接口。
自定义的Servlet大都是从GenericServlet或HttpServlet类进行扩展来实现的。
2,Servlet API
Servlet API包含于两个包中,分别是javax.servlet和javax.servlet.http
在这里插入图片描述
3,扩展Servlet的方式
①,继承GenericServlet
GenericServlet是个抽象类,其中service()方法定义为抽象方法
在这里插入图片描述
②,继承HttpServlet
HttpServlet中重写GenericServlet的抽象的service方法
在这里插入图片描述
HttpServlet中重载GenericServlet的抽象的service方法
在这里插入图片描述
4,HttpServlet中的方法
HttpServlet可以用来处理Http请求
Http的请求方式包括DELETE、GET、OPTIONS、POST、PUT、TRACE
HttpServlet中与这些请求方式相对应的方法
doHead():用来处理HTTP客户端的HEAD请求
doGet(): 如果HTTP客户端发给服务器的请求是GET方式,这个方法将被service方法调用
doPost():如果HTTP客户端发给服务器的请求是POST方式,这个方法会被service方法调用
doDelete():用来处理HTTP客户端的DELETE请求
doOptions():用来处理HTTP的OPTIONS请求
此外,还有doPut()方法和doTrace()
5,ServletRequest接口
ServletRequest接口中封装了客户请求的数据信息,如客户的请求方式、参数名和参数值、客户端正在使用的协议以及发出客户请求的远程主机信息等
ServletRequest接口还为Servlet提供了直接以二进制方式读取客户请求数据流的ServletlnputStream
接口中定义了下面的方法:
在这里插入图片描述
二,Servlet的执行原理
客户端输入url访问服务器
服务器解析输入的url解析到访问servle的资源路径
服务器根据解析到的资源路径,在web.xml文件里面找到对应的< url-pattenr >,如果有,同时找到servlet名称
根据servlet名称找到对应的servlet类
服务器自动创建servlet 类的对象,调用其中的方法
在这里插入图片描述
三,Servlet的生命周期
1,Servlet的生命周期由Servlet容器(如:Tomcat)控制
容器如何处理请求:
在这里插入图片描述2,生命周期的各个阶段
在这里插入图片描述
初始化和销毁在一个生命周期中只能发生一次。服务可以多次调用。
代码展示:

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/tan")
public class Servelt_01 implements Servlet{
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("初始化init");
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("服务service");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
        System.out.println("停止");
    }
}

运行结果:
在这里插入图片描述
四,HTTP协议—超文本传输协议
1,HTTP协议—无状态协议
不用记录谁发出的请求,只需要给出响应
适用于传输文件
2,用于通过Internet发送请求消息和响应消息
3,使用端口接受和发送消息,默认为80端口
4,HTTP请求
一个典型的HTTP请求由3部分组成,分别是请求方法URI协议/版本、请求头、请求正文
在这里插入图片描述
5,HTTP响应
HTTP响应也是由3部分组成,它们分别是:协议状态代码描述、响应头、响应正文
在这里插入图片描述
6,HttpServletResponse接口
HttpServletResponse接口与HTTP响应对应
HttpServletResponse接口中定义了提供生成响应数据Header的方法
在这里插入图片描述
五,Servlet应用实例
功能:在一个登录的JSP页面有两个文本框,用户可以输入登录名和密码,用户可以提交该页面的数据到Servlet,Servlet验证登录名和密码。如果用户名和密码匹配,则提示登录成功,否则提示失败
代码展示:
1,设置登陆页面

<%--
  Created by IntelliJ IDEA.
  User: manager
  Date: 2020/12/10
  Time: 11:57
  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>
<!--action 把当前这个表单提交到哪个程序去处理-->
<form action="login" method="post">
    用户名<input type="text" name="username"/><br/>
    密码<input type="password" name="pwd"><br/>
    <input type="submit" value="登陆"/>
</form>
</body>
</html>

2

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置请求的编码格式
        request.setCharacterEncoding("utf-8");
        //设置响应的编码格式
        response.setContentType("text/html;charset=utf-8");
        //得到用户输入的文本框的数据
        String username=request.getParameter("username");
        String pwd = request.getParameter("pwd");
        if (username.equals("tan")&&pwd.equals("123")){
            //页面重定向
            response.sendRedirect("success.jsp");
        }else {
            response.sendRedirect("error.jsp");
        }
    }
}

3,成功登陆

<%--
  Created by IntelliJ IDEA.
  User: manager
  Date: 2020/12/10
  Time: 12:11
  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>
登陆成功
</body>
</html>

4,登陆失败

<%--
  Created by IntelliJ IDEA.
  User: manager
  Date: 2020/12/10
  Time: 12:12
  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>
登陆失败
</body>
</html>

5,运行结果
成功跳转
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值