汪星人 发表于 2014-5-13 21:04

什么是servlet?servlet是如何运行的

一、servlet基础
        1、什么是servlet?
                sun公司制订的一种用于扩展web服务器功能的
        组件规范。
                1)扩展web服务器功能:
                        早期的web服务器只能够处理静态资源的请
                求,即事先要将html文件写好,存放在服务器
                上,不能够生成动态的html(也就是,通过
                计算,生成一个新的html)。
                        所谓扩展,即让web服务器能够生成
                动态页面。
                        扩展的方式,早期是采用CGI(common
                gateway interface)技术。
                        因为采用cgi程序编写的代码,可移植性
                差、编程相当复杂、如果处理不当,会严重
                影响性能。所以,用得越来越少了。
                        现在,采用的是容器+组件的方式来扩展。
                2)容器与组件
                        组件是什么?
                        符合规范,实现特定功能,并且可以部署
                在容器上的软件模块。
                        容器是什么?
                        符合规范,为组件提供运行环境,并且
                管理组件的生命周期(将组件实例化,调用
                其方法、销毁组件的过程)的软件程序。
                        采用容器与组件这种编程模型的优势:
                容器负责大量的基础服务(包括浏览器与
                服务器之间的网络通讯、多线程、参数传递
                等等)。而组件只需要处理业务逻辑。另外,
                组件的运行不依赖于特定的容器。
        2、如何写一个servlet?
               1)写一个java类(servlet只能使用java语言
               来编写)        ,实现Servlet接口或者继承HttpServlet
               抽象类。
               2)编译
               3)打包
                       建立一个如下的目录结构
                               appname
                                       WEB-INF
                                               classes(存放.class文件)
                                               lib(存放.jar文件,该文件夹可选)
                                               web.xml(部署描述文件)
                       该目录结构可以使用jar命令打成一个
                       .war为后缀的文件。
       4)部署
                       将第三步的整个目录结构或者是对应的
               .war文件拷贝到服务器特定的目录。
       5)启动服务器,访问servlet
                       http://ip:port/appname/servlet的url-pattern配置
                      
        3、tomcat的安装与简单的使用
               安装:
                       step1 将tomcat解压到/home/soft01下。
                       step2 配置环境变量
                                               cd /home/soft01
                                               vi .bash_profile
                                               JAVA_HOME:jdk的主目录
                                               CATALINA_HOME:tomcat的主目录
                                               PATH:CATALINA_HOME/bin
                       step3 启动tomcat
                                               cd /home/soft01
                                               cd /tomcat主目录/bin
                                               sh startup.sh
                                               接下来,在浏览器地址栏输入:
                                               http://localhost:8080
                                               关闭tomcat
                                               sh shutdown.sh
               目录结构(了解):
                               bin:启动和关闭服务器的一些脚本。
                               common:共享(部署在该服务器上的
                               所有程序都可以使用)的一些jar包。
                               conf:服务器的一些配置文件。
                               webapps:部署目录
                               work:服务器运行时,生成的一些临时文件。
                              
        4、servlet是如何运行的
                比如,向浏览器地址栏输入
                http://ip:port/helloweb/sayHello?name=zs
                1)浏览器使用ip,port连接服务器。
                2)浏览器将请求数据按照http协议打成一个
                数据包(请求数据包)发送给服务器。请求数据
                包的内容包含了请求资源路径
                (/helloweb/sayHello?name=zs),另外,在
                请求数据包当中,还会包含浏览器自动生成
                的一些信息。
                3)服务器创建两个对象:请求对象和响应对象。
                服务器解析请求数据包,将解析之后的数据
                存放到请求对象里面,方便servlet读取请求
                数据(因为servlet不用解析请求数据包,如果
                要解析,需要理解http协议)。
                请求对象是HttpServletRequest接口的一个实现。
                响应对象是HttpServletResponse接口的一个实现。
                响应对象由于存放servlet处理的结果。
                4)依据请求资源路径找到相应的servlet配置,
                通过反射创建servlet实例。然后调用其
                service()方法。在调用service()方法时,
                会将事先创建好的请求对象(request)和
                响应对象(response)作为参数进行传递。
                在servlet内部,可以通过request获得请求
                数据,或者通过response设置响应数据。
                5)服务器从response中获取数据,按照
                http协议打成一个数据包(响应数据包),
                发送给浏览器。
                6)浏览器会解析响应数据包,取出相应的数据,
                生成相应的界面。
       
        5、使用ide(myeclipse)开发servlet
                1)配置myeclipse
                myeclipse管理tomcat。
                2)建一个web工程
               
        练习:
                新建一个web工程 "web01_exec"
                在工程底下,创建一个DateServlet。
                可以访问该servlet,输出当前系统(
                tomcat服务器所在的机器)时间。
                比如:
                        http://localhost:8080/web01_exec/date
                在浏览器端,显示
                        now:2011-11-21
要注意的问题:
                1、要实现Servlet接口或者继承HttpServlet.
                2、service()方法名称、参数、异常类型
                要写对!
                3、web.xml配置文件中,类名不要写错!
                servlet-name不要写错。
                4、在浏览器输入访问地址时,地址不要
                写错。应该按照
                http://ip:port/appname/servlet的url-pattern
                去访问。
                5、记得先部署,记得服务器必须已经运行了,
                不然不能访问。
                6、如果报500错误,一般是你的程序写错了,
                如果报404错误,访问地址有错。如果是405,
                请检查你的service方法名,包括方法参数等。
       
        练习,写一个BMIServlet,计算一个人的
        bmi指数。
                体质指数(BMI)=体重(kg)/身高(m)/ 身高(m)   
        例如:70kg/1.75/1.75=22.86
        成人的BMI数值   
        体重指数, 男性,         女性                                                 结论  
                                                低于20,         低于19             过轻
                                               20-25,                19-24                   适中
                                               25-30,                 24-29                   过重
                                               30-35,                 29-34                   肥胖
                                               高于35,         高于34                   非常肥胖
        专家指出最理想的体重指数是22
       
        http://ip:port/web01_exec/bmi?height=1.7&
        weigth=70&gendar=m

页: [1]
查看完整版本: 什么是servlet?servlet是如何运行的