1. 什么是Servlet?

sun(oracle)公司制订的一种用来扩展web服务器功能的组件规范。

(1)扩展web服务器功能

web服务器(比如apache webserver,iis等)只能够处理静态资源的
请求(需要事先将静态页面写好),不能够处理动态资源的请求(需要
进行计算,然后生成相应的页面)。所以,需要扩展web服务器的功能。
注:早期使用CGI(Common Gateway Interface通用网关接口)程序来
扩展,因为性能不好,可移值性差,已经不怎么用了。
servlet可以用来扩展web服务器功能(web服务器收到请求之后,如果
需要计算,则调用servlet容器来处理,servlet容器会调用servlet来

计算)。

(2)组件规范

1)什么是组件?
符合规范,实现部分功能,需要部署到相应的容器里面才能运行的
软件模块。
2)什么是容器?
符合规范,提供组件的运行环境的程序。
servlet是一个组件,需要部署到相应的容器里面才能运行,比如
需要部署到(Tomcat)才能运行。

2.如何写一个servlet?

step1.  写一个java类,实现Servlet接口或者继承
        HttpServlet。
step2.  编译  
step3.  打包
            appname(应用名)
              WEB-INF
                classes(字节码文件)
                lib(可选,放jar文件)
                web.xml(描述文件)
step4. 部署
            将step3创建好的文件夹拷贝到容器指定的某个文件夹下面。
        注:
            也可以将step3创建好的文件夹使用jar命令压缩成
            以.war为后缀的文件,然后再拷贝。
step5. 启动容器,访问servlet。
        注:
            打开浏览器输入
            http://ip:port/appname/url-pattern

3. servlet是如何运行的?

比如,打开浏览器,输入
http://ip:port/servlet-day01/hello

step1. 浏览器依据ip,port建立与web服务器之间的连接。
注:servlet容器同时也是一个简单的web服务器。
step2. 浏览器将相关数据打包(即按照http协议要求,创建一个
请求数据包),然后发送给web服务器。
step3. web服务器拆包(即按照http协议要求,将请求数据包中的
相关数据解析出来),然后将解析到的数据添加到request对象里面,
同时,创建一个response对象。
step4. web服务器创建servlet对象,然后调用该对象service方法来
处理请求。
    注:在service方法里面,可以通过request对象获取请求数据包
    里面的数据,同时,可以将处理结果写到response对象里面。
step5. web服务器会将response对象中的数据取出来,打包(即按照
http协议创建响应数据包),然后发送给浏览器。
step6. 浏览器拆包(按照http协议要求,将响应数据包中的数据解析
出来),然后生成相应的页面。





4.常见的错误及解决方式

(1)404

注:404是一个状态码(状态码是一个三位数字,由http协议制订,
表示服务器处理请求的一种状态),表示依据请求路径,找不到对应
的资源。
1)原因:
    a.地址写错。
    b.忘记部署
2)解决方式:
    a.先检查应用是否已经部署
    b.按照http://ip:port/appname/url-pattern检查地址

(2)500

注:500也是一个状态码,表示服务器出错。
1)原因
    a.程序运行出错。
    b.没有继承HttpServlet。
    c.<servlet-class>配置的类名写错。
2)解决方式
    a.程序代码要写严谨。比如对请求参数值作合法性检查。
    b.继承HttpServlet。
    c.类名一定要完整、正确。

(3)405

注:405也是一个状态码,表示找不到处理请求的方法。
1)原因
    service没有按照规定去写。
2)解决方式
    按照service方法的要求去写。


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐