什么是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]