sun公司制订的一种用来扩展web服务器功能的组件规范。
扩展web服务器功能:
早期的web服务器(比如apache、iis等)只能够处理静态资源的请求(即需要事先将html准备好),不能够处理动态资源的请求(即需要通过计算,生成html)。早期使用CGI程序来扩展。
注(了解):
CGI(Common Gateway Interace 通用网关接口): 可以使用perl、c、c++等语言来开发符合CGI接口要求的程序来扩展web服务器的功能,但是,开发繁琐,并且可移植性比较差,现在用得很少了。现在使用Servlet来扩展。
组件规范:
a.什么是组件?
符合规范,实现部分功能,并且需要部署到相应的容器里面才能运行的软件模块。
Servlet就是一个组件,需要部署到Servlet容器里面才能运行。
b.什么是容器?
符合规范,为组件提供运行环境的程序。Tomcat就是一个符合Servlet规范的容器,为Servlet提供运行环境(即提供网络相关的服务)。
比如,在浏览器地址栏输入http://ip:port/appname/hello
,浏览器与Servlet容器之间会按照如下步骤进行处理 :
s![在这里插入图片描述](https://img-blog.csdnimg.cn/20190527191546376.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poeXVlMjg=,size_16,color_FFFFFF,t_70)tep1.浏览器依据ip和post建立连接。
step2.浏览器将相关数据打包(即按照http协议的要求创建请求
数据包),然后将请求数据包发送给容器。
step3.容器解析请求数据包,并且将解析到的数据存放到request
对象里面,同时,还会创建一个response对象。
step4.容器创建Servlet对象,然后调用该对象的service方法。
注:
容器会将request和response作为参数传递进来,开发人员
可以利用request对象获得请求数据包中的数据,然后将处理
结果写到response对象里面即可。
step5.容器从response对象中获得处理结果,然后创建响应数据包,
并发送给浏览器。
step6.浏览器解析响应数据包,生成相应的页面。
含义:
服务器依据请求路径找不到对应的资源。
原因:
a.请求路径不正确。
b.应用没有部署或者部署失败。
解决方式:
a.依据http://ip:port/appname/url-pattern检查请求路径是否
写错。
b.看应用有没有正确部署。
含义:
服务器端发生错误,一般是由于程序运行产生的一些异常。
原因:
a.Servlet没有严格按照规范来写。
比如,没有继承HttpServlet,又或者web.xml中,类名写错。
b.程序不严谨。
比如,读取请求参数值之后,没有对参数值做合法性检查。
含义:
服务器找不到对应的方法。
原因:
service方法没有按照规范来定义。
解决方式:
检查service方法的签名(方法名、参数类型、异常类型,返回类型)。
step1.创建一个maven工程,注意要选war,如下图所示:
step2.工程建立好之后,会有异常提示,是因为默认情况下,工程
没有web.xml文件,请按如下图示进行操作:
step3.指定运行环境,运行环境提供了我们开发servlet需要的一些包。
如下图所示:
step4.添加Servlet类,并在web.xml文件中添加部署描述信息,如
下图所示:
step6.打开浏览器,按照http://ip:port/appname/url-pattern
访问Servlet。