servlet运行原理

1.什么是servlet?
sun公司制订的一种用来扩展web服务器功能的组件规范。
(1)扩展web服务器功能
web服务器通常只能够处理静态资源的请求(
即需要事先将html文件准备好),可以使用servlet
来扩展(即web服务器可以通过调用servlet来处理
动态资源的请求,比如访问数据库)。
(2)组件规范
1)什么是组件?
符合一定规范,实现部分功能,并且需要部署到
相应的容器里面才能运行的软件模块。
servlet是一个组件,需要部署到相应的servlet容器
里面才能运行。
2)什么是容器?
符合一定规范,提供组件的运行环境的程序。
 tomcat就是一个容器,提供了servlet的运行环境。
2.如何写一个servlet?
step1,写一个java类,实现Servlet接口或者继承
HttpServlet抽象类。
注:通常选择继承的方式。
step2,编译
step3,打包
创建一个具有如下结构的文件夹:
appname(应用名) 
WEB-INF
classes(放class文件)
lib(可选,放jar文件)
web.xml(部署描述文件)
step4,部署
将step3创建好的整个文件夹拷贝到servlet容器
相应的位置。
注:
可以使用jar命令将step3创建好的整个文件夹
压缩成一个".war"为后缀的文件,然后拷贝。
step5,启动容器,访问servlet
http://ip:port/appname/url-pattern
http://localhost:8080/firstweb/hello
注:
url-pattern在web.xml文件中定义。
3.Tomcat的安装 (www.apache.org)
step1,将tomcat的安装文件解压到
/home/soft01/
    step2,配置环境变量
    JAVA_HOME: jdk的安装路径
    比如  /opt/jdk6
    CATALINA_HOME: tomcat的安装路径
    比如 /home/soft01/apache-tomcat7
    PATH: 一些命令所在的路径
    比如  /home/soft01/apache-tomcat7/bin
  step3,启动tomcat
  打开终端
  cd     /home/soft01/apache-tomcat7/bin
  sh    startup.sh
  注:也可以使用   sh   catalina.sh   run
  打开浏览器,输入 http://localhost:8080
  step4,关闭tomcat
  sh shutdown.sh  
 
 4. servlet是如何运行的?
  比如,在浏览器地址栏输入
  http://ip:port/web01/hello
  step1,浏览器依据ip,port建立连接。
  step2,浏览器将相关数据(比如请求参数)打包,
  然后发送请求。
  step3,容器解析请求数据包,并且将解析得到的数据
  封装到request对象,同时创建一个response
  对象。
  step4,容器创建servlet对象,然后调用该对象的service
  方法。
  注:
  容器会将request和response作为参数传递进来,
  可以通过request获得请求参数,也可以将处理
  结果写到response。
  step5,容器读取response中的处理结果,然后将处理结果
  打包发送给浏览器。
  step6,浏览器解析响应数据包,生成相应的页面。
 
 5.常见问题
  (1)404
  注:404是一个状态码(是一个三位数字,由w3c定义,
  表示服务器处理请求的一种状态)。
  1)含义
  服务器依据请求地址找不到相应的资源。
  2)产生的原因
  a. 没有部署该应用
  b.<servlet-name>不一致
  c.请求地址写错
  按照  http://ip:port/appname/url-pattern
  检查请求地址
  (2)500
  1)含义:系统出错
  2)产生的原因
  程序在运行过程当中出错。
  a. 没有继承HttpServlet。
  b.<servlet-class>写错。
  c.代码写得不够严谨,比如对请求参数
  没有做检查就做一些转换。
  (3)405
  1)含义:找不到处理方法。
  2)产生的原因
  service方法不规范

相关文章: