一篇文章讲清Servlet原理

1.servlet是什么?

        servlet我们可以从英文看出来,全名server  applet,服务端的一个小程序。我们一般将servelt分为两方面,一种是狭义上的servlet,另一种就是广义上的servelt。

        狭义上的servlet:其实就是java中定义好的一个接口。

        广义上的servelet:是实现servlet的类。

2.自己创建一个servelt

        我们可以通过自己写一个servlet来证明。

        ①狭义上的servelt

        实现Servlet接口,里面有一个周期,初始化只会一开始执行一次,销毁是在最后执行一次(tomcat关闭或者内存正好回收),重要的是service方法。

@WebServlet("/myServlet")
public class MyServlet implements Servlet{@Overridepublic void destroy() { //销毁}@Overridepublic ServletConfig getServletConfig() {  //servlet上下文,一个容器return null;}@Overridepublic String getServletInfo() {  //获得是基本信息,字符串格式return null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {//初始化}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {}}

简单说一下@WebServelt:

        我们通常的写法是@WebServlet("/myServlet") ,这是一个简化写法。其中完整写法是 @WebServlet(urlPatterns= {"/myServlet","/my"},name="sdf") ,而简化写法相当于@WebServlet(value = "/myServlet"),这个必须是只有一个属性,例如只有value,并且value中只有一个值的时候就可以省略 。但是比如我们定义一个loadOnStartup(loadOnStartup的意思就是tomcat加载的时候就已经初始化了,不需要等到第一次访问的时候才进行初始化)。@WebServlet(value="/myServlet",loadOnStartup=1) ,value就不可以省略,因为他有两个属性值。

        xml中映射地址

MyServelt  com.servlet.MyServelt  1  MyServelt/myServlet  

②广义上的servlet

        我们根据这张图进行分析。

作为一把手肯定就是servlet接口了,所有的都是以这个为基础向下延伸简化的。

1.二把手 GenericServlet,其他方法都做了,只留一个service方法,如果想要用到初始化或其他方法,就只能换为原先接口servlet。

深入源码看一下,它是一个抽象类,实现了servlet接口。

 GenericServlet中只是实现了重要的service方法,比servlet简化了许多。

@WebServlet(value="/myServlet",loadOnStartup=1) 
public class MyServletClass extends GenericServlet{@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {// TODO Auto-generated method stub}}

2.三把手HttpServlet,这才是我们比较常用的,他的意思是将请求方式分类,匹配http请求,将service拆分成多个按照请求方式的方法(将主要方法service分成一个个的小方法)。常用的doGet,doPost方法。HttpServlet类不用实现任何方法,更加简单,方便。

@WebServlet(value="/myServlet",loadOnStartup=1) 
public class MyServletHttp extends HttpServlet{}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部