javaweb servlet的理解

  1. 什么是入servleet呢?servlet是sun公司早期为了和微软公司的动态网页技术所竞争,也开发了自己的一套动态网页技术。

    其实servlet就是一个java类,只不过是运行在服务端的java类,它的作用就是处理前端用户的请求和相应。

     
  2. 还有一种方式就是让你知道servlet的作用,早期的网页是静态的,虽然可以写JavaScript,但是操作基本都是前端与用户

    的一些交互,并不能控制页面内容的走向,而servlet就可以通过响应流,实时输出前端的页面,页面的走向具体可以由后

    台的逻辑掌控

     
  3. servlet使用时我们可以实现servlet这个接口,并实现它未实现的方法,另一种方法还可以继承HttpServlet,并重写它的

    doGet()和doPost()方法(servlet只是一个接口,底下有一个抽象实现类GenericServlet,而GenericServlet底下有一个

    具体实现类HttpServlet,这里为什么会有一个GenericServlet呢?GenericServlet其名为通用的Servlet,目前web端用的

    http协议,可能当时sun公司当初为了扩展,考虑到后期还可能有别的协议,所以在这里预留了GenericServlet,可见

    sun当时的野心)

     
  4. 第一种方法我们实现Servlet接口,并实现,它的5个未实现的方法。如下
    import java.io.IOException;
    
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class UserServlet implements Servlet {
    
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public ServletConfig getServletConfig() {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	@Override
    	public String getServletInfo() {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	@Override
    	public void init(ServletConfig config) throws ServletException {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    
  5. 对这5个方法中getServletConfig()和getServletInfo()不用管它,这两个方法在GenericServlet类中会有具体的实现,可以

    获取servlet的一些配置信息。一般我们会继承HttpServlet这个类,那剩下的就只有3个类了,正是这三个类演绎了servlet

    的生命周期。当我们的Servlet类在第一次访问时,是由web容器帮我们实例化的,并且会调用其中的init()方法,该方法只

    会在该对象创建时只调用一次,然后会执行其service()方法。当我们第二次再次访问该类时,只要web容器没关闭,init方

    法不会再执行的,但是service()方法每次访问都会执行的。而destroy()方法是在web关闭或者该项目从servlet容器中移除

    时才会调用。具体的业务逻辑我们可以放在service()方法中。

     
  6. 第二种方法继承HttpServlet,只用重写它的doGet()和doPost()方法,我们的业务逻辑会根据相应的(get/post)请求,写在

    相应的方法中。HttpServlet里面的doGet()和doPost()方法会有HttpServlet类中的service方法判断如果是get请求就调用

    doGet()方法,如果是post请求就调用doPost()方法,而此时的doGet()和doPost()方法已由我们重写,那么就会调用我们

    自己的doGet()和doPost()方法。

猜你喜欢

转载自blog.csdn.net/include110/article/details/86441543