1.什么是Servlet呢?
简单来说Servlet是sun公司(该公司目前已经被甲骨文收购)制订的一种用来扩展web服务器功能的组件规范。
所谓的扩展web服务器功能,就是web服务器(比如apache web server)只能够处理静态资源的请求,不能够处理动态资源的请求,所以需要扩展。在早期的开发中一般使用CGI程序来进行扩展,不过开发起来复杂,并且移植性不好。(注:CGI[Common Gateway Interface]通用的网关接口,可以使用perl,c等语言来开发符合CGI接口标准的程序。)所以目前开发中一般不使用CGI程序。
组件规范:组件就是符合一定规范,实现部分功能,需要部署到相应的容器【容器:符合一定规范,提供组件的运行环境的程序。】里面才运行的软件模块。
2.如何写一个Servlet?
step1:写一个java类,实现Servlet接口或者继承HttpServlet抽象类。
step2:编译
step3:打包(打包成组件),
创建一个具有如下结构的文件夹:
appname(应用名称)
WEB-INF
classes(放字节码.class文件)
lib(可选,放.jar文件)
web.xml(部署描述文件)
step4:部署
将step3创建好的文件夹拷贝到容器。
注:也可以将step3创建好的文件夹使用jar命令压缩成一个以".war"为后缀的文件。
step5:启动容器,访问Servlet
3.使用myeclipse做一个简单的Servlet
step1:启动myeclipse
step2:集成tomcat
step3:创建一个web工程
4.Servlet是如何运行的?
访问的地址一般遵循:http://ip:port/appname/url-pattern
step1:浏览器依据IP,port建立连接。
step2:浏览器将相关数据打包(按照http协议),然后将请求数据包发送给服务器。
step3:容器解析请求数据包,并且将解析得到的数据封装到request,同时,还会创建一个response对象。
step4:容器创建Servlet对象,然后调用该对象的Service方法。
注:在service方法里面,可以通过request对象来获得请求参数,然后将处理结果写到response对象里面。
step5:容器从response对象当中获取处理结果,然后打包(响应数据包),最后将这个数据包发送给浏览器。
step6:浏览器解析响应数据包,生成相应的页面。
5.常见错误
1)404(404是一个状态码)
注:状态码是一个三位数字,用w3c定义,表示服务器处理请求的一种状态。
1)含义
服务器依据请求地址找不到相应的资源。
2)错误原因
a.应用没有部署
b.<servlet-name>不一致
c.没有按照以下格式书写请求地址(注意区分大小写)
http://IP:port/appname/url-pattern
2)500
1)含义
系统出错
2)错误原因
a.类写得不规范
比如没有继承HttpServlet
b.<servlet-class>写错
c.程序运行出错。
比如,对请求参数没有做检查,就做强制转换。
3)405
1)含义
找不到处理的方法。
2)错误原因
service方法没有严格按照要求来写,
要检查方法的返回类型,参数类型,异常类型和方法名。