GenericServlet抽象类:
将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
* 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
HttpServlet抽象类:
该类是GenericServlet的子类,对http协议的一种封装,简化操作,添加了doGet/doPos(这两种最常用)t等七种请求方法
里面有两个service()方法,一个用作判断网页是七种请求方式的哪种,然后再使自己定义的servlet类调用对应的请求方法,一个是类型转换。
比如说有个注册登录的页面,login.html将表单提交后,会提交到loginServlet类(继承了httpservlet类)中,调用这个类中的service方法,而在这个类中有两个service方法,两个重载的方法,首先调用的是下面第一个图方法,这个方法的参数是原始的req和res,但是在这个方法中,不对req和res对象进行处理,它将req强转为HttpServletRequest类型,把res强转为HttpServletResponse,把强转后的参数传入到另一个service()方法,去进行是哪种请求方式。
举个栗子:
HelloServlet类
@WebServlet("/HelloServlet")//使用注解,就不用配置xml文件了,启动后访问HelloServlet资源路径就可以了,可随意命名(Servlet3.0版本以上才有的功能)
public class HelloServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
response.setCharacterEncoding("GBK");
response.getWriter().write("doPost请求方式");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet");
response.setCharacterEncoding("GBK");
response.getWriter().write("doGet请求方式");
}
}
Demo01.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/servlet/HelloServlet" method="Get">//这里注意servlet是我idea配置的虚拟路径,如果没有就忽略不写
<input type="text" name="用户名">
<input type="submit" value="提交">
</form>
</body>
</html>