Servlet
一、什么是Servlet
sun公司指定的一种用来拓展web服务器功能的组件规范
1. 拓展web服务器功能
- web服务器只能处理静态资源的请求 (需要事先将html文件写好),不能够处理动态资源的请求(需要计算,生成动态的html),所以需要拓展。
- 可以使用Servlet来拓展web服务器功能,当web服务器收到请求之后,如果需要计算,则交给Servlet来处理。
常见的web服务器:apache、iis、nginx等
2. 组件规范
-
什么是组件:符合规范,实现部分功能,并且需要部署到相应的容器里面才能运行的软件模块。
Servlet就是一个组件,需要部署到Servlet容器里面才能运行。
-
什么是容器:符合规范,提供组件运行环境的程序
Tomcat就是一个Servlet容器,为Servlet提供运行环境(提供网络相关的服务)

二、如何写一个Servlet
-
写一个java类,实现Servlet接口或者继承HttpServlet类
通常我们选择继承HttpServlet类
-
编译
-
打包,即创建一个具有如下结构的文件夹
|---- appname(应用名)
|---- WEB-INF
|---- classes(放.class文件)
|---- lib(放.jar文件 该文件夹可选)
|---- web.xml(部署描述文件)
-
部署:将创建好的整个文件夹拷贝到容器相应的位置
可以将整个文件夹使用jar命令先压缩成.war为后缀的文件,然后再拷贝
-
启动容器,访问Servlet
http://ip:port/appname/url-pattern
注:url-pattern在web-xml当中设置
三、Servlet是如何运行的
比如,在浏览器地址栏输入 http://ip:port/day01/hello
- 浏览器依据ip和port建立连接
- 浏览器将相关数据放到请求数据包里面,然后发送给服务器
- 服务器解析请求数据包,将解析到的数据添加到request对象,同时创建一个response对象
- 服务器创建Servlet对象,然后调用该对象的service方法
- 服务器会将request和response对象作为参数传递过来,开发人员只需要调用这两个方法的对象就可以了,不用考虑网络相关的问题。
- 比如要读取请求数据包中的内容,只需要调用request对象的方法就可以了。类似的,要向浏览器发送处理结果,只需要调用response对象的方法就可以了
- 服务器从response对象中获的处理结果,然后创建响应数据包并发送给浏览器
- 浏览器解析响应数据包,生成相应的页面

四、常见的问题
-
404
-
含义:服务器依据请求路径找不到对应的资源
404是一个状态码,状态码是一个三位数字,表示服务器处理请求的一种状态
-
产生的原因:
-
请求路径写错
要按照 http://ip:port/appname/url-pattern 来写
-
应用没有部署或者部署失败
-
-
-
500
-
含义:系统出错
-
产生的原因
-
没有严格的按照规范来写代码(包括部署描述文件写错)
-
代码不严谨
比如,对请求参数不做检查,直接做类型转换
-
-
-
405
- 含义:找不到处理方法
- 产生的原因
- 没有正确override HttpServlet的service()方法
本文详细介绍了Servlet的概念,包括其作为拓展web服务器功能的组件规范的角色,以及如何编写和运行Servlet。同时,文章还解释了常见的错误状态码及其原因。
3863

被折叠的 条评论
为什么被折叠?



