24@Servlet_day01

1、什么是servlet?

        sun公司制订的一种用于扩展web服务器功能的组件规范。
        1)扩展web服务器功能:
                早期的web服务器(apache web server , iis )只能够处理静态资源(即需要事先写好html文件,放到特定的目录下面)的请求。
                扩展方式:
                        方式一:cgi(common gateway interface),可以使用c,perl等语言来开发cgi程序,将该程序放到web服务器特定的目录下面,当请求到达服务器时,服务器判断是静态资 源的请求还是动态资源的请求,如果是动态资源的请求,会调用cgi程序来处理。
                        cgi程序有两个问题:第一,是开发人员需要处理请求参数。另外一个是,程序的可移植差。
                        方式二:使用servlet

                                当请求到达web服务器时(使用tomcat,这种类型的web服务器同时也是一个 servlet容器,如果是apache webserver或者是iis,则需要安装相应的插件)web服务器负责处理网络相关的问题(比如负责从http请求数据包中分析出相应的请求参数 等),servlet只需要处理业务逻辑就可以了。另外,sevlet是一个规范,即我们开发的servlet可以在不同的web服务器当中运行,不存在可移值性问题。
        2)组件规范
                组件:
                        实现了部分功能的软件模块,该软件模块不能够单独运行,必须要依赖容器才能运行。
                 容器:
                        提供组件的运行环境,并且管理组件的生命周期的一种程序。
                        组件和容器都必须符合相应的规范。
                        组件不依赖于特定的容器,即一个组件开发完了以后,可以在不同的容器当中运行(前提是:该组件和容器要符合同一个规范)。

2、如何开发一个servlet?
        step1 写一个java类,需要实现Servlet接口或者继承HttpServlet。
        step2 编译
        step3 打包
                需要建一个文件夹:
                appname (名称可以自已定义,一般称为应用名)
                --WEB-INF
                ----classes (.class文件)
                ---- lib (可选,放的是servlet运行时需要的一些jar文件,比如数据库的jdbc驱动)
                ----web.xml (servlet的描述)
        step4 部署
    将step3建立的整个文件夹或者使用jar命令整个文件夹进行压缩之后生成的.war文件进行拷贝。

    拷贝到web服务器特定的文件夹,比如对于tomcat,是webapps文件夹。
        step5 启动服务器,访问servlet

                http://ip:port/appname/servlet-url(servlet-url在web.xml文件中有相应的配置)
                http://localhost:8080/firstweb/sayHello


3、tomcat的安装与简单使用
        tomcat本身是一个servlet容器(即可以提供servlet运行环境的一个程序,但是,tomcat还提供了webserver所具有的所有功能,所以,我们也称tomcat
是一个web server。其实,所有的servlet容器,都是一个web server)。
        1)安装
                step1 : /opt/apache...tomcat..解压缩到 /home/soft01
                step2 : 环境变量
                        cd /home/soft01
                        vi .bash_profile
                        JAVA_HOME: jdk的安装路径,比如 /opt/jdk5
                        CATLINA_HOME: tomcat的安装路径,比如/home/soft01/tomcat5
                        PATH: /home/soft01/tomcat5/bin
                step3 :启动tomcat
                        cd /home/soft01/tomcat5/bin
                        sh startup.sh (linux,unix)
                        或者
                        sh catalina.sh run(如果startup执行出错)
                        startup.bat(windows)
                在浏览器地址栏输入 http://localhost:8080
        2)简单使用
                a, 关闭服务器
                        cd /home/soft01/tomcat5/bin
                        sh shutdown.sh(linux,unix)
                        shutdown.bat(windows)
                b,了解各个文件夹的作用
                        bin: 可执行文件
                        common: 可以被部署在该服务器上的应用程序共享的一些jar文件。
                        conf: 服务器的配置文件。
                        webapps: 部署文件夹,里面包含了一些自带的web应用。
                        work:tomcat运行时,生成的一些临时文件

4、使用myeclipse开发servlet?
        1)让myeclipse管理tomcat
                step1 如果tomcat已经启动,先关闭。
                        cd /home/soft01/tomcat5/bin
                        sh shutdown.sh
                step2 启动myclipse,点击 configserver,找到Myeclipse-->applicationservers-->tomcat, 选择对应的版本(比如你用的tomcat5.5,就使用tomcat5.x)
,选择tomcat的安装路径(比如/home/soft01/tomcat5),注意看一下jdk是否配置正确,还有启动模式改为run。
        2)创建一个web工程。
        3) 在src下面创建一个java类
        4) 在web.xml添加servlet的描述信息
        5) 部署
        6) 访问(检查服务器是否已经启动,如果没有,要启动)

5、常见的错误
        1) 404错误:
                表示要访问的地址不存在。
                解决方式:
                        检查你的servlet的访问地址,正确的地址应该是:http://localhost:8080/appname/servlet-url
        2)405错误:
                service方法写错了
                解决方式:
                        仔细检查service方法的签名,正确的格式是:
                        public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
        3)500错误:
                程序出错
                解决方式:
                        检查servlet源文件
                        检查web.xml配置文件

6、servlet的运行过程
        当从浏览器地址栏输入 http://localhost:8080/web01/sayHello?name=zs
        step1 浏览器依据ip,port建立与服务器之间的连接
        step2 浏览器将请求资源路径(web01/sayHello?name=zs)以及其它相关信息按http协议打成一个数据包。
        step3 发送请求。
        step4 服务器对请求数据包进行解析(拆包),将处理结果存放到request对象(请求对象)里。
        step5 同时,服务器还会创建一个对象response(响应对象)。
        step6 服务器通过appname(即web01)找到webapps下面的web01文件夹。通过web01下面的web.xml文件,找到servlet的完整的类名,然后依据反射机制创建该servlet对象。
        step7 服务器调用servlet对象的service方法,在调用时,会将事先创建好的request,response对象作为参数传递给servlet对象。
        step8 可以在servlet的service方法里,调用request对象的方法来获得请求参数(request.getParameter),然后进行相应的处理(业务逻辑)。
        step9 servlet将处理结果输出到response对象。
        step10 服务器从response对象里取出数据。
        step11 服务器将取出的数据打包。
        step12 服务器发送数据给浏览器。
        step13 浏览器从数据包中解析出相应的数据(拆包)
        step 14 浏览器生成相应的界面。
       

        我们只需要手动完成步骤8和步骤9即可完成一个Servlet程序的开发。
        从中可以得出一个结论: 服务器为servlet提供了 很多基础服务(比如网络问题),开发人员只需要在servlet类里面编写相应的业务逻辑就可以了。

练习1:
        写一个DateServlet,在浏览器地址栏输入http://ip:port/web01_lab/date会输出当前的系统日期,比如,会输出2012-05-21

cd /sbin
./ifconfig

练习2:
        写一个BMIServlet,在浏览器地址栏输入 http://localhost:8080/web01_home/bmi?weigth=70&height=1.8& gender=m该servlet会计算对应的bmi指数,最后输出体质情况,比如输出"过轻"。

bmi计算的规则:
体质指数(BMI)=体重(kg)/身高(m)/ 身高(m)   
EX: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

 

posted @ 2012-05-21 22:57  笑仁术Rex  阅读(391)  评论(0编辑  收藏  举报