1.what is servlet?
sun公司指定的一种用来扩展web服务器功能的组件规范
(1)扩展web服务器功能
apache(www.apache.org) web server、iis微软、等等。
web服务器通常只能处理静态资源的请求(即事先将html文件准备好)
servlet扩展服务器(web服务器可以通过调用servlet来处理动态资源
的请求,比如访问数据库)
(2)组件规范
1)什么是组件
符合一定规范,实现部分功能,并且需要部署到相应的容器里面才能运行的软件模块。
servlet是一个组件,需要部署到相应的servlet容器里面才能运行。
2)什么是容器
符合一定规范,提供组件的运行环境的程序。tomcat就是容器,提供了servlet的运行环境。(比如socket网络连接)
webserver---(动态资源)--->servlet(tomcat是其运行环境)->DB
2.安装容器Tomcat
Download:www.apache.org
linux环境下(windows下环境相同)
step01:解压
/home/devSoft/tomcat6
或/opt/tomcat6
step02:配置环境变量
JAVA_HOME:jdk安装路径/opt/jdk8
CATALINA_HOME:tomcat安装路径/opt/tomcat6
PATH:bin文件夹所在目录/opt/tomcat6/bin
step03:启动tomcat
cd $CATALINA_HOME/bin
./startup.sh OR catalina.sh run
check:http://localhost:8080
step04:关闭tomcat
sh sgutdown.sh
3.How to make a servlet without IDE?
step01:new一个java类
实现Servlet接口或者继承HttpServlet抽象类(通常选择继承的方式)
step02:编译
step03:打包
创建一个具有如下结构的文件夹:
appname(应用名)
|-WEB-INF(固定)
|-classes(放class文件)
|-lib(可选,放jar包:jdbc驱动)
|-web.xml(部署描述文件)
step04:部署
将step3创建好的整个文件夹拷贝到servlet容器相应的位置
注:可以使用jar命令将step03文件夹压缩成后缀“.war”为后缀文件,在拷贝。
step05:启动容器,访问servlet
http://ip:port/appname/url-pattern(注:url-pattern:web.xml中定义)
4.servlet是如何运行的?
输入地址:http://ip:port/web01/hello
step01,浏览器根据ip和port建立连接。
step02,浏览器打包(数据包),发送请求数据包
step03,容器解析请求数据包,并将解析到的数据封装到request对象,同时创建一个response对象。
step04,容器创建servlet对象,然后调用该对象的service()方法。
注:容器会将request和response作为参数传递进来,通过request获取请求参数,通过response保存处理结果。
step05,容器读取response中的处理结果,然后处理结果打包发送给浏览器。
step06,浏览器解析响应数据包,生成相应的界面。
5.问题处理
(1)404:一个状态码(三位数字,w3c定义,表示服务器处理请求的一种状态)。
1)找不到请求的资源
2)①未部署、②<servlet-name>不一致(xml写错)、③请求地址写错
(2)500:
1)系统出错
2)①没有继承、②<servlet-class>写错、③代码不严谨
(3)405:
1)找不到处理方法
2)service方法格式不正确