servlet学习笔记


javac编译打包java文件命令:javac -d . java文件名

1、Web容器:
    Web容器是Servlet/JSP唯一认得的HTTP服务器。

    何谓web容器:
          对于java程序而言,jvm是其操作系统,.java文件会编译为.class文件,.class对于jvm而言,就是其可执行文 件。java
       程序基本上只认得一种操作系统,就是jvm。就如同jvm介于java程序与实体操作系统之间,web容器是介于实体http 服务 器与
       servlet之间,也正如编写java程序必须了解jvm与应用程序之间如何互动,编写servlet/jsp也必须知道web容器如何servlet
       /jsp互动,如何管理servlet等事实(jsp最后也是转译、编译、加载为servlet,在容器的世界中,真正负责请求、响应的是
       servlet)。
      
2、开发servlet有三种方法:
    1)、实现servlet接口
    2)、继承GenericServlet
    3)、继承HttpServlet


3、请求/响应流程:
    1)、客户端(大部分情况下是浏览器)对Web服
务器 发出HTTP请求;
    2)、HTTP服务器收到HTTP请求,将请求转由Web容器处理,Web容器会剖析HTTP请求内容,创建各种对象(如HttpServletRequest、
HttpServletResponse、HttpSession等);
    3)、Web容器由请求的URL决定要使用哪个Servlet来处理请求(事先由开发人员定义);
    4)、Servlet根据请求对象(HttpServletRequest)的信息决定如何处理,通过响应对象(HttpServletResponse)来创建响应;
    5)、Web容器与HTTP服务器沟通,Web服务器将响应转换为HTTP响应并传回客户端。
 
注意:如果有多次请求进来,就只是启动多个线程来进行处理,而不是重复启动多次JVM。


4、servlet的运行过程
   servlet程序是由web服务器调用,web服务器收到客户端的servlet请求后:
    1)、web服务器首先检查是否已经装载并创建了该servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步;
    2)、装载并创建该servlet的一个实例对象;
    3)、调用servlet实例对象的init()方法;
    4)、创建一个用于封装http请求消息的HttpServletRequest对象和一个代表http响应消息的HttpServletResponse对象,然后调
     用 Servlet的service()方法并将请求和响应对象作为参数传递进去;
    5)、web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
    
    注意:以下情况会导致destory()方法调用:
           1)、tomcat重新启动
          
2)、reload该webapp
           3)、重新启动电脑


5、servlet开发的缺点:
    1)、在web.xml文件中需要配置很多行代码,维护起来很不方便,不利于团队合作;
    2)、一个servlet的入口只有一个doPost或者doGet方法,如果在一个servlet中写好几个方法,怎么办?
public class UserServlet extends HttpServlet{
    doPost(){
        this.doGet();
    }

    doGet(){
        if(request.getParameter("method").equals("save")){
            this.save();
        }else{
	    this.update();
	}
    }

    private void save(){
    }

    private void update(){
    }
}
       这样会导致代码结构很乱;
    3)、servlet类与web容器高度耦合,每个方法中都有两个参数request、response,如果服务器不启动,这两个参数没有办法
      初始化;
    4)、如果在servlet中的一个方法中有很多功能,这个时候会导致该方法比较复杂,不利于维护
            doGet(){
               用户注册
               //用户头像上传
               //验证表单
               //权限的验证
               //注册
            }
       用户注册完成了4件事情,所以整个方法比较杂乱;
    5)、如果一个servlet类中有很多方法,浏览器对这些方法进行请求,url写起来很麻烦;
            http://localhost:8080/servlet/userServlet?method=save/update
    6)、在servlet中如果要获取页面上表单中的数据,那么在方法中会写很多行。

6、servlet工作的时序图:
   
       这个图只截了一部分,前面还有浏览器请求过程和服务器拿到请求后进行解析的过程。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值