1.什么是Servlet?
sun公司制订的一种用来扩展web服务器功能的
组件规范。
(1)用来扩展web服务器功能
web服务器(比如apache)只能够处理静态
资源的请求,不能够处理动态资源的请求。
注:
静态资源指的是需要事先将html文件
写好,并存放到web服务器上。
(2)组件规范
1)什么是组件?
符合一定规范,实现部分功能,并且
需要部署到相应的容器里面才能运行的
软件模块。
2)什么是容器?
符合一定规范,提供组件的运行环境的
程序。
servlet是一个组件,需要部署到
servlet容器里面才能运行。
2.如何写一个Servlet?
step1,写一个java类,实现Servlet接口
或者继承HttpServlet抽象类。
step2,编译
step3,打包
创建一个具有如下结构的文件夹
appname(应用名)
WEB-INF
classes(放class文件)
lib(可选,放jar文件)
web.xml(描述文件 url-pattern)
step4,部署
将step3创建好的文件夹拷贝到容器。
注:
可以使用jar命令将step3创建好的
文件夹压缩成一个以”.war”为后缀的
文件然后再拷贝。
step5,访问
启动容器之后,打开浏览器,输入
http://ip:port/appname/url-pattern
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,启动
打开终端
cd /home/soft01/apache-tomcat7/bin
sh startup.sh (sh catalina.sh run)
打开浏览器,输入
http://localhost:8080
step4,关闭
sh shutdown.sh
4.使用myeclipse开发一个简单的servlet
step1,启动myeclipse,集成tomcat。
step2,创建一个web工程
step3,编写Servlet类
step4,修改web.xml,添加上servlet描述
step5,部署
step6,访问
5.Servlet是如何运行的?
比如,在浏览器地址栏输入
http://ip:port/web01/hello
step1,浏览器依据ip,port建立连接。
step2,浏览器将相关的数据打包(请求数据
包)发送给servlet容器。
step3,容器解析请求数据包,并且将解析
之后的数据添加到request对象,同时,
还会创建一个response对象。
step4,容器创建servlet对象,并调用该对象
的service方法(会将request和response
对象作为参数传递过来)。
注:
可以利用request提供的方法来获得
请求数据包中的数据(比如请求参数),
并且可以将处理结果放到response。
step5,容器从response获取处理结果并打包
(响应数据包),然后发送给浏览器。
step6,浏览器解析响应数据包,生成相应的
页面。
6.常见错误
(1)404
1)含义:服务器依据请求地址找不到
相应的资源。
2)错误原因:
a.没有部署
b.不一致
c.请求地址写错
http://ip:port/appname/url-pattern
注:
状态码,是一个三位数字,由w3c定义,
表示服务器处理请求的状态。
(2)500
1)含义:系统出错
2)错误原因:
a.类没有实现Servlet接口或者继承
HttpServlet。
b.写错。
c.程序运行时出错(比如参数值
没有做检查就做强制转换等等)。
练习
写一个BMIServlet,计算一个人的bmi
指数(即bmi)。
bmi = weight / height / height
注:
weight: 体重,单位是kg(公斤)
height: 身高,单位是m(米)
http://192.168.175.55:8080/web01-lab/bmi?weight=90&height=1.5