zoukankan      html  css  js  c++  java
  • 认识servlet

        最近没有做什么事,闲暇时看看《head first servlet&jsp》;800页的书(本来不愿意看的),真的很厚。看了几单元觉得不错,故将自己的看法写下来。

       1  认识servlet,jsp,tomcat

        servlet:简单说是一个组件,jsp本质就是servlet。 servlet有关的接口和类在二个包中:javax.servlet,javax.servlet.http;

        request1: 居然jsp就是servlet,那为什么要有jsp这东西?

         其实就是:居然有了c语言,为什么会出现java一样。更好地满足需求呗! javaweb项目是需要和用户进行交互的,使用servlet会"比较难"显示界面,

    特别是css样式--大写的尴尬(你试试)。jsp的出现解决了这个问题。看例子:

          ex1:带样式的超链接

            servlet: out.println("<a style='text-decoration:none; color:red;'>ss</a>");

            jsp: <style> </style> <a>ss</a>--------html

          servlet在这里:css,position控制都是问题?对吧

         req2: tomcat是什么?作用?

          开源服务器,专门给javaweb开发人员用的,好家伙。至于作用: (1)服务器 (2)servlet/jsp容器——>控制(管理)servlet的行为

         2 实现servlet

            先看一张图:

      

          之前说了,与servlet有关的接口和类都是在javax.servlet,javax.servlet.http中,这个包是父接口与子接口关系,http的那个包是专门用来处理http有关的请求。

      以后会发现经常使用的接口和类都在第二个包中。

           上图中我们看到了,实现servlet有二种方式

             (1)GenericServlet ----通用请求,必须重写service()函数

             (2)Httpservlet ----与http协议有关的请求 ,必须重写doGet(),doPost()中至少一个。这个类重写了service()方法

             浏览器使用的基本上是http协议,所以基本上的servlet是继承Httpservlet

         3  servlet生命周期

                   项目(假设只有一个servlet)部署在容器中,容器会做什么? 估计是加载DD文件(web.xml部署文件) 。我们关心的来了

                    req 3:谁什么时候创建servlet对象?

                    ans:容器创建的,什么时候? 不好说,可能是在部署之后创建,也可能是"第一次请求"时,这没有关系(不同服务器可能不一样)。下面假定部署时吧.

                    req 4:对象什么时候成为servlet?

                     ans这个问题一定要懂, 容器调用servlet的构造函数之后还不是一个完整的servlet对象。为什么?原因是这个对象没有servletConfig对象。

                     servletConfig对象:简单理解就是servlet在web.xml的一部分(所谓的servlet部署文件)对应的对象。

                    ans: 容器执行构造函数之后,在调用init(servletConfig cf)函数时将servletConfig对象赋予对象---->恭喜你,你现在是完美的servlet了

                    注意:servlet还没处理任何有关用户的请求。接下来就厉害了

                    req 5:servlet对象只有一个

                   ans:不管这个servlet以后处理多少个用户的请求,servlet实例只有一个。也就是构造函数和init()不会再调用!除非servlet重新部署了(修改代码)。

                    

        4  生命周期继续?

                 上面说的是处理用户请求之前的一些初始化,用户请求来了,怎么办?

            req 6:怎么处理用户请求?

                httpServlet实例调用service()函数,有这个函数判断请求方式(get,post),从而决定调用doGet或者doPost();

           req 7:同时处理多用户?

                  使用多线程机制---容器维护

           req 8:  servlet什么时候结束?

                    不知道。关闭服务器肯定是结束的,其他可能呢? servlet长期不使用会结束(释放资源啊)

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------

        5 实用的request请求对象

                HttpRequest request对象作用

             (1) String getparameter();

           获取请求参数,一般使用在servlet中,获取客户端过来的一些"数据"

             (2)Object getAttribute(); void setAttribute();

                 设置或者获取request属性,比如从数据库中读取相应的数据List(图书),通过设置request到客户端。获取list,显示出来

             (3)获取请求首部字段 

             (4)cookies[] getCookies()

                获取cookies

            (5)其他

            了解servlet之后,接下来我们应该继续学习

             (1)"属性与相关监听者"

             (2)会话管理(session和cookies原理)

     

       

  • 相关阅读:
    (C#)Windows Shell 外壳编程系列3 上下文菜单(iContextMenu)(一)右键菜单
    修改BlogEngine.NET:给摘要显示添加图片显示的另一种方法
    (C#)Windows Shell 外壳编程系列8 同后缀名不同图标?
    Win2k下isapi dll调试设置
    战争机器作弊码
    使用Windows系统提供的IP控件
    Delphi中TUDPSocket的使用
    Delphi字符串、PChar与字符数组之间的转换
    Delphi高效的字符串处理
    (C#)Windows Shell 外壳编程系列4 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令
  • 原文地址:https://www.cnblogs.com/huang-1995/p/6502783.html
Copyright © 2011-2022 走看看