17.12.21
关于servlet中service、doGet、doPost的关系
1、sun只是定义了servlet接口,而实现servlet接口的就是类似于tomcat的服务器。这里只是介绍tomcat实现的servlet接口的具体实现。
2、service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet中实现了这个接口。
而 doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的, javax.servlet.http.HttpServlet 是javax.servlet.GenericServlet 的子类。
3、 在servlet中默认情况下,无论你是get还是post 提交过来 都会经过service()方法来处理,然后转向到doGet
或是doPost方法。tomcat的service默认实现就是根据Get、Post、Head、Put等类型自动转向。
4、我们一般会重载service方法,默认操作被覆盖,不再进行转发操作!需要我们自己写来做转向。也可以不转向。
5、一般会在service()中实现对父类方法的同参数表重载,即写上super.service(req, resp);
————————
1、session本身是属于HTTP协议的范畴,但是doFilter()方法中定义的是ServletRequest类型的对象,那么要想取得session,则必须进行向下转型,将ServletRequest变为HttpServletRequest接口对象,才能够通过getSession()方法取得session对象。
在实现filter接口的同时继承HttpServlet,在通过request过去session之前需要转换成HttpServletRequest。