Servlet和Http
**servlet:**基于Http协议在服务端生成的程序。
**http:**超文本传输协议
**作用:**规范了浏览器和服务器的数据交互
特点:
1.简单快速
2.灵活
3.无连接
4.无状态
5.支持b/s架构,c/s架构
http请求报文格式:
请求行
请求头
空行
请求体
http响应报文格式:
状态行
响应头
空行
响应体
Servlet:
-
是一种Web服务器端编程技术
-
是实现了特殊接口的java类
-
由支持Servlet的Web服务器调用和启动运行
-
一个Servlet负责对应一个或一组URL访问请求,并返回相应响应内容
实现(使用):
1.创建一个普通Java文件
2.Java文件的类名实现HttpServlet
3.重写Service方法
4.在WEB-INF下的web.xml中添加请求与servlet类的映射关系
IDEA与Eclipse区别:
IDEA生成的.class文件是放在本项目的out文件夹下面
Eclipse生成的.class文件是在tomcat的webapps目录下
Servlet的访问流程
***url:***http://localhost:8080/firstweb/first
组成:
***服务器地址:***端口/虚拟项目名/servlet的别名
***uri:***虚拟项目名/servlet别名
**过程:**浏览器发送请求到服务器,服务器根据请求URL地址中的URI信息在webapps目录下找到对应的项目文件夹,然后再web.xml中检索对应的servlet,找到并执行对应的servlet
Servlet生命周期:
**init:**完成servlet对象的初始化操作
在servlet接收到第一次请求时候完成创建对象工作
**生命周期:**从第一次接收到请求开始,到关闭服务器后销毁
web.xml中配置标签:
<servlet>
<servlet-name>servletLife</servlet-name>
<servlet-class>com.mashibing.ServletLife</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>servletLife</servlet-name>
<url-pattern>/servletLife</url-pattern>
</servlet-mapping>
Servlet类中可以有service方法
用来接收get或者post请求
如果service和doGet、doPost方法同时存在,那么就会调用service方法
如果同时有service,doGet和doPost方法,在service中调用了super.service()会根据请求方式调用doGet或者doPost
**doGet方法:**用来接收get请求
**doPost方法:**用来接收post请求
**总结:**在编写servlet类的时候,不需要重新实现service方法,需要重写doGet()和doPost()方法,用来接收get或者post请求。
servlet常见错误:
*404:*访问资源不存在
– 请求路径跟web.xml中路径不一致
– 请求路径的项目虚拟路径名称填写错误
*405:*请求方式和servlet方式不同