Servlet:是用于 java 编写的服务器端程序,其使用 java servlet API,当客户机发送请求到服务器时,服务器可以将请求信息发送给 servlet,并让 servlet 建立起服务器返回给客户机的响应。当启动 web 服务器 or 客户机第一次请求服务时,可以自动装入 servlet,装入后,servlet 继续运行直到其他客户机发出请求。

Servlet 工作原理:客户端发起一个请求,servlet 调用 service()方法时请求进行响应,service 对请求的方式进行了匹配,选择调用 dopost 或者 doget 等这些方法,然后进入对应方法中调用逻辑层上的方法,实现对客户的响应。

Servlet 生命周期:

1)初始化阶段:调用 init()方法

在下列时刻 servlet 容器装载 servlet

1.servlet 容器启动时,自动装载某些 servlet

2. 在 servlet 容器启动后,客户首次向 servlet 发送请求

3.servlet 类文件被更新以后,重新装载 servlet。Servlet 被装载后,servlet容器创建一个 servlet 对象并调用 servlet 的 init 方法。在 servlet 生命周期内,init()方法只被调用过一次。

2)响应客户请求:调用 service()

响应客户请求:对于用户到达servlet 的请求,servlet 容器会创建特定于该请求的 servletRequest 和 servletResponse 对象, 然后调用 servlet 的 service 方法,service 方法从 servletRequest 对象中获得客户请求的信息, 处理该请求,并通过 servletResponse 对象向客户返回响应消息。

3)终止:调用 destory()

当 web 应用终止或者 Servlet 容器终止或 Servlet 容器重新装载 Servlet 新实例时,Servlet 容器会调用 Servlet 对象的destory 方法,在 destory 方法中可释放 Servlet 占用的资源。

Tomcat 就是Servlet 容器,Servlet 容器为Javaweb 应用提供运行时环境,它负责管理Servlet和Jsp的生命周期,以及管理他们的共享数据。

以下方法都由 servlet 容器调用:

1)构造函数:只有第一次请求 servlet 时,创建 servlet 实例,调用构造器,这说明 servlet 是单例的,所以有线程安全问题,只被调用一次

2)init:只被调用一次,在创建好实例后,立即被调用,用来初始化servlet。

3)service:被多次调用,每次请求都会调用 service,实际响应请求。

4)destory:只被调用一次,在当前 servlet 所在的 web 应用被卸载前调用,用于释放当前 servlet 所占用的资源。

JEE5.0中的Servlet相关的就下面这几个包:
javax.servlet
javax.servlet.jsp
java.servlet.jsp.el
java.servlet.jsp.tagext
而最用得多的就是
javax.servlet
javax.servlet.http
这两个包了.
forwared和direct区别:
文件名称:forward.jsp

1
2
3
4
5
6
<html>  
     <head><title> 跳转  </title> </head
     <body>  
         <jsp:forward page="index.htm"/>     
     </body>
 </html
redirect:请求重定向:客户端行为,本质上为2次请求,地址栏改变,前一次请求对象消失。举例:你去银行办事(forward.jsp),结果告诉你少带了东西,你得先去公安局办(index.html)临时身份证,这时你就会走出银行,自己前往公安局,地址栏变为index.html.
forward:请求转发:服务器行为,地址栏不变。举例:你把钱包落在出租车上,你去警察局(forward.jsp)报案,警察局说钱包落在某某公司的出租车上(index.html),这时你不用亲自去找某某公司的出租车,警察局让出租车自己给你送来,你只要在警察局等就行。所以地址栏不变,依然为forward.jsp
 
forward,服务器获取跳转页面内容传给用户,用户地址栏不变
redirect,是服务器向用户发送转向的地址,redirect后地址栏变成新的地址

servlet+forward和direct区别的更多相关文章

  1. (转发)RequestDispatcher的include()方法和forward()方法的区别

    forward(): 该方法用于将请求从一个Servlet传递给服务器上的另外的Servlet.JSP页面或者是HTML文件. 在Servlet中,可以对请求做一个初步的处理,然后调用这个方法,将请求 ...

  2. sendRedirect()和forward()方法的区别

    sendRedirect()和forward()方法的区别 之前好像曾经整理过,但忘了放在哪里了,好像压根就没整理过,博客里也没有,故今天重新整理一下. 我们知道页面之间的跳转有两种方式:重定向与转发 ...

  3. Servlet的生命周期,并说出Servlet和CGI的区别,Servlet与JSP的区别

    一.Servlet 生命周期 1.加载 2.实例化 3.初始化 4.处理请求 5.销毁 二.Servlet与cgi的区别: Servlet处于服务器进程中,它通过多线程方式运行其service方法,一 ...

  4. Servlet与JSP的区别(转)

    原文链接:Servlet与JSP的区别 两者之间的联系和区别 [1]JSP第一次运行的时候会编译成Servlet,驻留在内存中以供调用. [2]JSP是web开发技术,Servlet是服务器端运用的小 ...

  5. 6.servlet和jsp的区别

    servlet和jsp的区别 jsp作为Servlet技术的扩展,经常会有人将jsp和Servlet搞混.本文,将为大家带来servlet和jsp的区别,希望对大家有所帮助. servlet和jsp的 ...

  6. 说出Servlet的生命周期,并说出Servlet和CGI的区别。

    说出Servlet的生命周期,并说出Servlet和CGI的区别. 山治ZHrx5 | 浏览 1377 次 推荐于2016-09-16 22:39:19 最佳答案 Servlet的生命周期分为5个阶段 ...

  7. 重定向(redirect)与转发(forward)的区别

    重定向(redirect)与转发(forward)的区别 1.重定向时地址栏会发生改变,转发时地址栏不会发生改变 当浏览器请求资源时,服务器直接访问目标地址的URL,将URL的响应内容读取,之后再将读 ...

  8. servlet转发与重定向区别

    servlet转发与重定向   HttpServletRequest: 表示浏览器向服务器发送的请求报文,由Tomcat创建然后作为参数传递给我们doget,dopost方法. 功能:getParam ...

  9. jsp中jsp:forward 与 redirect区别

    部分转载:http://hi.baidu.com/168zlf/item/2f4b2ad4351b881c20e2500c 在网上看到一些帖子,总结了一些区别,可以从以下几个方面来看: 1.从地址栏显 ...

随机推荐

  1. BZOJ 4029 HEOI2015 定价 数位贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4029 题意概述:对于一个数字的荒谬程度定义如下:删除其所有的后缀0,然后得到的数字长度为a ...

  2. hibernate笔记(三)

    目标: 第1部分: 对象的状态: 第2部分:缓存 1) 一级缓存 2) 相关知识 ----懒加载--- 第3部分:映射 一对一映射 组件映射 继承映射 一.对象的状态 举例: User   user  ...

  3. 【bzoj1180】[CROATIAN2009]OTOCI LCT

    题目描述 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通.如果是则输出“no”.否则输出“yes”,并且在结点 ...

  4. TCP/IP Note3

    TCP/IP协议 TCP/IP是不同的通信协议的大集合. 协议族:TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合. 1. TCP - 传输控制协议 TCP用于从应用程序到网 ...

  5. BZOJ3289 Mato的文件管理 【莫队 + 树状数组】

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 3964  Solved: 1613 [Submit][Status] ...

  6. 树剖模板by fcdalao

    #include<bits/stdc++.h> using namespace std; ; *MX]; *MX]; int n,Index,fir[MX],fa[MX],dfn[MX], ...

  7. yaf的安装

    http://kenby.iteye.com/blog/1979899 yaf源码分析学习网站 # wget https://github.com/laruence/php-yaf/archive/m ...

  8. [SCOI2007] 蜥蜴 (最大流)

    [SCOI2007] 蜥蜴 题目背景 07四川省选 题目描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1 ...

  9. TCP ------ TCP创建服务器中出现的套接字

    在服务器端,socket()返回的套接字用于监听(listen)和接受(accept)客户端的连接请求.这个套接字不能用于与客户端之间发送和接收数据. accept()接受一个客户端的连接请求,并返回 ...

  10. php SPL四种常用的数据结构

    1.栈[先进后出] $stack = new SplStack(); $stack->push('data1'); $stack->push('data2'); $stack->pu ...