什么是 Servlet?
是用于服务器端处理 http 协议的组件.
组件是什么?
符合规范, 实现部分功能, 并且需要部署到相应的容器里面才能运行的软件模块.(还是 java 写的)
Http 协议是什么?
HTTP 协议是 HyperText Transfer Protocol 的缩写, 即超文本传输协议. 是由 w3c(万维网联盟)制定的一种应用层协议, 用来定义浏览器与 web 服务器之间如何通信以及通信的数据格式. Servlet 就是一个组件, 需要部署到 servlet 容器里面才能运行.(tomcat 就是一个 servlet 容器 + Web 服务器)
容器是什么?
1, 符合容器的规范, 提供组件运行环境的程序.
2,servlet 容器为 servlet 提供运行环境.
3, 能够充当 Servlet 容器这个角色的有很多软件, 如 Tomcat,Weblogic,JBoss 等. 而这些 Servlet 容器不仅仅具备了管理 Servlet 组件的功能, 也具备了 Web 服务器的一些功能, 所以很多时候只要安装一个 Tomcat 软件就同时具备了 Web 服务器及 Servlet 容器的双重功能.
Servlet 特点:
1,Servlet 存储在服务器上用于处理动态网页请求
2,Servlet 需要满足 sun 的规范
3,Servlet 支持拼动态资源(html, 图片等)
Servlet 和普通 java 类的区别?
1, 需要部署到容器内才能运行
2, 针对客户端的多次 servlet 请求, 通常情况下, 服务器只会创建一 servlet 实例对象, 也就是说 servlet 一旦创建, 他就会驻留在内存之中, 为后续的其他请求服务, 直至 Web 容器推出, servlet 实例对象才会被销毁
3, 在 servlet 的整个生命周期内, servlet 的 init 方法只会被调用一次, 而对一个 Servlet 的每次访问都导致引擎调用一次 servlet 的 service 方法. 对于每次访问请求, servlet 引擎都会创建有哥 httpservletRequest 请求对象和一个 httpservletReponse 响应对象, 然后将这两个对象作为参数传递给 servlet 的 service()方法. servlet 方法再根据请求方式分别调用 doXXX 方法
访问 Servlet 常见的错误:
500 状态码: 表示系统错误. 可能原因:
Servlet 没有继承 HttpServlet 或实现 Servlet 接口
Web.xml 文件中的 < servlet-class > 写错, 与真正的包名类名不符
service 方法中的代码运行时抛出异常
404 状态码: 表示依据请求路径找不到请求的资源.
输入的地址有误(应用名大小写不正确, 名称拼写不正确)
在 Web.xml 文件中 < servlet > 和 < servlet-mapping > 中的两个 < servlet-name > 不一致
没有将工程部署到 Tomcat 的 webapps 下面
Web 工程部署时的结构没有遵循 Servlet 的规范
405 状态码: 容器找不到 service 方法来处理请求
service 方法名写错, 字母顺序不对或大小写错误
service 方法参数类型与标准不一致, 或参数顺序与标准不一致. 一定是先 HttpServletRequest, 然后是 HttpServletResponse 类型
service 方法异常, 返回值类型与标准不一致, 一定是抛出 ServletException,IOException. 返回值类型是 void.
解决 405 错误的方法即检查 service 方法是否存在, 签名 (方法名, 参数, 返回值, 异常类型) 是否与覆盖的父类中的方法一致.
来源: http://www.bubuko.com/infodetail-3157344.html