Servlet
概念
Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
步骤
1、编写一个servlet:
① a.继承HttpServlt
b.重写doGet或doPost方法
② a.编写配置文件(WEB-INF/WEB.xml)
servlet-name:给Servlet起一个名字,全局唯一
servlet-class:保存Servlet的全限定名,复制即可
b.绑定路径
servlet-name:使用上面起的名字即可
url-pattern:访问路径,以 "/"开头,唯一
③ 访问
HTTP://主机:端口号/项目号/路径
2、接受参数: key=value
String value = request.getParameter(key);
如:http://localhost/hello?username=tom
request.getParameter(username); 获取成功
3、向浏览器回写内容
resp.setContentType("text/html;charset=utf-8");
resp.getWrite().print("数据"+value);
执行原理
分为三个阶段:初始化、运行、销毁
初始化阶段
1、Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。
2、Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet初始化配置信息。
3、Servlet容器创建一个servlet对象
4、Servlet容器调用servlet对象的init方法进行初始化
运行阶段
当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest、servletResponse对象。 然后调用service方法。并把这两个参数传递给service方法。
Service方法通过servletRequest对象获得请求的信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。
然后销毁servletRequest和servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。
销毁阶段
当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。
生命周期
servlet生命周期方法
void init(ServletConfig config):初始化当前Servlet
void service(ServletRequest req,ServletResponse res):服务方法
void destroy():销毁方法
生命周期方法的执行顺序
执行构造器创建对象->执行init方法执行初始化操作->执行service方法->执行destroy进行资源销毁
注意:1、Servlet必须保留一个公共的无参构造,Servlet在应用中最多一个对象。
2、初始化方法在第一次请求的时候执行
3、service方法每次访问都会执行
4、destroy方法在正常关闭服务器的时候执行
Servelet的体系结构
Servelet-接口
GenericServlet-抽象类
HttpServlet-抽象类
*GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法做为抽象
*将来定义Servlet时,可以继承GenericServlet,实现service()方法即可
*HttpServlet:对HTTP协议的一种封装,简化操作
1、定义类继承HttpServlet
2、重写doGet/doPost方法
Servelet相关配置
1、urlpattern:Servlet访问路径
一个servlet可以定义多个访问路径:@Web({"/d4","/dd4","/ddd4"})
2、路径定义规则
①/xxx:路径匹配
②/xxx/xxx:多层路径,目录结构
③*.do:扩展名匹配
Http
概念
Hyper Txet Transfer Protocol 超文本传输协议
传输协议:定义了,客户端和服务端通信时,发送数据的格式
特点:①基于TCP\IP的高级协议 ②默认端号:80 ③基于请求/响应模型:一次请求对应一次响应 ④无状态的:每次请求之间相互独立,不能交互数据
请求信息和响应信息包括
请求:请求行、请求头、空行、消息体
响应:状态行、响应头、空行、消息体