Servlet体系结构及相关配置

体系结构

  • Servlet – 接口
    • GenericServlet – 抽象类
      • HttpServlet – 抽象类

GenericServlet

  • 将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
    • 将来定义Servlet类时,可以继承GenericServlet抽象类,只要实现service()方法即可
    • 其他的方法实现与否看自己的需要
  • 代码:
@WebServlet("/demo2")
public class ServletDemo2 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("demo2...");
    }
}

HttpServlet

  • Servlet中
    • service():判断请求方式
String method = req.getMethod();
if("GET".equals(method)){
	//get方式获取数据
}else if("POST".equals(method)){
	//post方式获取数据
}
  • HttpServlet中
    • service()
String method = req.getMethod();
if("GET".equals(method)){
	//get方式获取数据
	doGet();
}else if("POST".equals(method)){
	//post方式获取数据
	doPost();
}

doGet(){}
doPost(){}
  • 所以HttpServlet对http协议进行了封装,简化了操作
    1. 定义类继承HttpServlet
    2. 复写doGet/doPost方法
  • 文件形式:
    在这里插入图片描述
  • 继承HttpServlet类:
@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost...");
    }
}
  • login.html中表单页面代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/demo3"  method="post">
        <input name="username">
        <input type="submit" value="提交">
    </form>
</body>
</html>
  • 页面:
    在这里插入图片描述
  • 输入信息,点击提交后,doPost方法被执行:
    在这里插入图片描述

Servlet相关配置

  • urlpattern:Servlet访问路径
    1. 一个Servlet可以定义多个访问路径:@WebServlet({"/d4","/dd4","/ddd4"})
    2. 路径定义规则:
      1. /xxx
      2. /xxx/xxx:多层路径,目录结构
      3. *.do
  • 配置了多种访问路径的Servlet类:
@WebServlet({"/d4","/user/demo4","/demo4/*"})
public class ServletDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo4...");
    }
}
  • 浏览器三次访问:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 访问均成功,doGet方法被成功执行三次:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值