体系结构
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
String method = req.getMethod();
if("GET".equals(method)){
}else if("POST".equals(method)){
}
String method = req.getMethod();
if("GET".equals(method)){
doGet();
}else if("POST".equals(method)){
doPost();
}
doGet(){}
doPost(){}
- 所以HttpServlet对http协议进行了封装,简化了操作
- 定义类继承HttpServlet
- 复写doGet/doPost方法
- 文件形式:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b1ab8d35a3378d2df69479c2b3595a97.png)
- 继承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...");
}
}
<!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>
- 页面:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6ceb76631cba135cf641b0f1fa5b4de5.png)
- 输入信息,点击提交后,doPost方法被执行:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/af9bc020110a37a14611715a49ccdc63.png)
Servlet相关配置
- urlpattern:Servlet访问路径
- 一个Servlet可以定义多个访问路径:
@WebServlet({"/d4","/dd4","/ddd4"})
- 路径定义规则:
- /xxx
- /xxx/xxx:多层路径,目录结构
- *.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...");
}
}
- 浏览器三次访问:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7945f436b7b217bec3192ba64d2d46ac.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/72bf952ab8ec5769c505beb5b5792d93.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/23999744e3bcd44c69552ad6fd988359.png)
- 访问均成功,doGet方法被成功执行三次:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e3f7f1347b2be8014fc317422f5c8950.png)