什么是servlet?servlet的运行原理?如何自定义一个servlet?
1.什么是Servlet?
Servlet是SUN公司推出的在服务器端处理HTTP协议的组件规范。
2.Servlet的运行原理?
- 浏览器通过向服务器发送的ip地址,端口号等信息与服务器建立连接。
- 建立连接后浏览器端通信组件将请求数据打包,然后将请求数据发送给服务器。
- 服务器接收到用户请求数据后服务器端通信组件将数据拆包。
- 创建request请求对象和response响应对象。
- 创建Servlet实例对象后调用该实例对象的doGet/doPost/service方法传入request请求对象和response响应对象。
- request请求对象接收请求信息数据,处理完毕后由response相应对象将处理结果进行响应。
- 服务器端通信组件将响应信息打包并发送给浏览器。
- 浏览器接收到响应信息后通信组件将其拆包并将数据展示在浏览器页面
- 响应结束与服务器端口断开连接。
3.Servlet生命周期?
实例化:在第一次访问或启动tomcat时,tomcat会调用此无参构造方法实例化servlet。
初始化:tomcat在实例化此servlet后,会立即调用init方法初始化servlet。
就绪:容器收到请求后调用servlet的service方法来处理请求。
销毁:容器依据自身算法删除servlet对象,删除前会调用destory方法
其中实例化,初始化,销毁只会执行一次,service方法执行多次,默认情况下servlet是在第一次接受到用户请求的情况下才会实例化,可以在web.xml中的<servlet><servlet>标签内添加一个<load-on-startup>1<load-on-startup>配置,此时在启动tomcat时会创建servlet实例。
4.如何实现一个自定义的servlet?
- 写一个Servlet类extends HttpServlet并重写doPost或doGet或service方法
- 在web.xml中进行部署
<servlet>
<servlet-name>别名</servlet-name>
<servlet-class>包名.项目名(类名)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>别名<servlet-name>
<url-pattern>/网络路径名</url-pattern>
</servlet-mapping>
5.servlet中不同的状态码对应的错误问题?