servlet

1.生命周期

a.构造方法。生成一个servlet

b.init()方法。当开启服务器时,servlet第一次被装载,servlet引擎调用这个servlet的init()的方法,只调用一次。系统保证,在init()方法成功以前,是不会调用servlet去处理任何请求的。

c.service()方法。这是servlet最重要的方法,是真正处理请求的地方。对于每一个请求,servlet引擎将调用servlet的service方法,并将servlet请求对象和servlet响应对象作为参数传递给它

d.destory()方法。这是相对于init()的可方法,当servlet即将被卸载时由servlet引擎来调用,这个方法用来释放init()方法中做分配的资源

2.servlet三大域对象的应用

a.ServletContext

(1).生命周期:当Web应用被加载进容器时创建代表整个web应用的ServletContext对象,当服务器关闭或Web应用被移除时,ServletContext对象跟着销毁

(2).作用范围:整个web应用

(3).作用:

①. 在不同的servlet之间转发getServletContext().getReauestDispatcher("/index.jsp").forword(request,response) 方法执行结束,service就会返回到服务器,再有服务器去调用目标servlet,其中request会重新创建,并将之前的request的数据拷贝进去

②. 读取资源文件。

i、由于相对路径默认相对的是java虚拟机启动的目录,所以我们直接写相对路径将会是相对于tomcat/bin目录,所以是拿不到资源的。   如果写成绝对路径,当项目发布到其他环境时,绝对路径就错了。

ii、为了解决这个问题ServletContext提供了: this.getServletContext().getRealPath("/1.properties"),给进一个资源的虚拟路径,将会返回该资源在当前环境下的真实路径。this.getServletContext().getResourceAsStream("/1.properties"),给一个资源的虚拟路径返回到该资源真实路径的流。

iii、当在非servlet下获取资源文件时,就没有ServletContext对象用了,此时只能用类加载器    classLoader.getResourceAsStream("../../1.properties"),此方法利用类加载器直接将资源加载到内存中,有更新延迟的问题,以及如果文件太大,占用内存过大classLoader.getResource("../1.properties").getPath(),直接返回资源的真实路径,没有更新延迟的问题。

b.HttpSession域

(1).生命周期:(会话范围)在第一次调用 request.getSession() 方法时,服务器会检查是否已经有对应的session,如果没有就在内存  中创建一个session并返回。 当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。 如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。  如果调用session提供的invalidate() ,可以立即销毁session。 注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内,  则活化后session还是存在的。否则Session不存在。  如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失

(2).作用范围:一次会话。

c.ServletRequest域

(1).生命周期:在service 方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束

(2).作用范围:(请求范围)整个请求链(请求转发也存在)。

(3).作用:  在整个请求链中共享数据。最常用到:在Servlet 中处理好的数据交给Jsp显示,此时参数就可以放置在Request域中带过去。

JSP

1.运行方式

当服务器启动后,当Web浏览器端发送过来一个页面请求时,Web服务器先判断是否是JSP页面请求。如果该页面只是一般的HTML/XML页面请求,则直接将HTML/XML页面代码传给Web浏览器端。如果请求的页面是JSP页面,则由JSP引擎检查该JSP页面,如果该页面是第一次被请求、或不是第一次被请求但已被修改,则JSP引擎将此JSP页面代码转换成Servlet代码,然后JSP引擎调用服务器端的Java编译器javac.exe对Servlet代码进行编译,把它变成字节码(.class)文件,然后再调用JAVA虚拟机执行该字节码文件,然后将执行结果传给Web浏览器端。如果该JSP页面不是第一次被请求,且没有被修改过,则直接由JSP引擎调用JAVA虚拟机执行已编译过的字节码.class文件,然后将结果传送Web浏览器端。

2.PageContext域

(1).生命周期:当对JSP的请求时开始,当响应结束时销毁

(2).作用范围:(页面范围)整个JSP页面,是四大作用域中最小的一个。

    作用:

        (1)获取其它八大隐式对象,可以认为是一个入口对象。

        (2)获取其所有域中的数据

            pageContext  操作所有域中属性的方法

              public java.lang.Object getAttribute(java.lang.String name,int scope)       

 public void setAttribute(java.lang.String name, java.lang.Object value,int scope)

              public void removeAttribute(java.lang.String name,int scope)

              pageContext 中代表域的常量

                PageContext.APPLICATION_SCOPE

                PageContext.SESSION_SCOPE

                PageContext.REQUEST_SCOPE

                PageContext.PAGE_SCOPE

 findAttribute方法,在四大域中搜寻属性,搜寻的顺序是page域、request域、session域、application域

从小域到大域开始搜索,如果搜索到就直接获取该值,如果所有域中都找不到,返回一个null(与el表达式不同,此处返回null,对网页是不友好的)

(3)跳转到其他资源      其身上提供了forward和include方法,简化重定向和转发的操作

3.九大内置对象

 

request内置对象     java.servlet.HttpServletRequest类

response内置对象  javax.servlet.HttpServletResponse类的对象

page内置对象         java.lang.Object类的对象

session内置对象     java.servlet.http.HttpSession类的对象

application内置对象 javax.servlet.ServletContext

out内置对象   

exception内置对象    java.lang.Throwable类的一个对象

config内置对象   javax.servlet.ServletConfig类

pageContext对象是一个比较特殊的对象。它相当于页面中所有其他对象功能的最大集成者,即使用它可以访问到本页面中所有其他对象,例如前面已经描述的request、response以及application对象等。

servlet和Jsp的复习整理的更多相关文章

  1. 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注冊模块(附完整源代码)

    近期看老罗视频,做了一个简单的用户注冊系统.用户通过网页(JSP)输入用户名.真名和password,Servlet接收后通过JDBC将信息保存到MySQL中.尽管是个简单的不能再简单的东西,但麻雀虽 ...

  2. Servlet,jsp,JSP技术 ,JSP编程

     一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...

  3. Servlet与JSP版本历史以及Tomcat支持的版本

    查询这个的关键字:Java EE的版本历史. JavaServer Pages (JSP) Java Servlet 参考: https://en.wikipedia.org/wiki/Java_EE ...

  4. JBoss和Tomcat版本、及Servlet、JSP规范版本对应一览 【转】

    原文地址:http://blog.csdn.net/hills/article/details/40896357 JBoss和Tomcat版本.及Servlet.JSP规范版本对应一览 JBossAS ...

  5. 你也可以当面霸-Servlet与JSP的原理及特点

    既然是面试系列,就是面试官和应聘者之间的对话.本文是采用一问一答的形式呈现给读者的,这样能有一个明确的考察点,不像理论知识那么枯燥. 01.什么是Servlet技术 Servlet是和平台无关的服务器 ...

  6. Servlet、JSP选择题(2)

    Java EE软件工程师认证考试 试题库-选择题 一.    选择题(包括单选和双选) 1.B 编写一个Filter,需要(  ) A. 继承Filter 类 B. 实现Filter 接口 C. 继承 ...

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

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

  8. 如何查看Servlet、JSP的版本(Tomcat V7.0.70)

    1. 简要说明:Tomcat6.0 所支持的是Servlet2.5,Tomcat 7.0 所支持的Servlet3.0,Servlet2.5 和Servlet3.0的差异较大,对于Servlet3.0 ...

  9. myEclipse6.5与数据库(SQL Server2008)连接遇到的问题(自己总结的干货)<用SSH框架的时候,用servlet+javabean+jsp的时候>

    昨天因为学习SSH框架的搭建,时隔一年又重新遇到了myEclipse连接数据库的问题.废话不多说,上干货 (以下全部按照我遇到的问题的顺序,也就是没有顺序,就是任性) 请注意:这是在myEclipse ...

随机推荐

  1. iOS数据存储类型 及 堆(heap)和栈(stack)

    iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 --  由编译器自动分配释放. 2堆 --  一般由程序员分配释放,若程序员不释放,程序结束时可能由O ...

  2. SignalR 教程一

    转帖官方教程:Tutorial: Getting Started with SignalR 2 and MVC 5 http://www.asp.net/signalr/overview/gettin ...

  3. js判断值是不是全是数字

    if(isNaN(value)){ 不是数字 }else{ 全是数字 }

  4. Handshake Lemma

    - finite undirected gragh ∑deg(v) = 2|E| In a k-ary tree where every node has either 0 or k children ...

  5. border-radius__边框圆角

    1.四个参数: border-radius: 值1 值2 值3 值4;顺序:从左开始,顺时针顺 div{ width: 200px; height: 100px; background-color: ...

  6. 公司内部搭建git服务器

    前言 因为gitHub上的项目是公开的,不适合公司内部项目放在上面,而私人的需要收费,这绝非是我们愿意的.所以找了个跟gitHub很相似,但是又免费的gitLab.现在将搭建gitLab过程记录一下留 ...

  7. Linux入门——vsftpd

    vsftpd Introduction vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用. vsftpd 的名字代表"very secure FTP ...

  8. HTTP学习之URL与资源

    URL是因特网资源的标准化名称,该字符串指向一条电子信息片段,定义服务端应用程序在什么位置以及客户端要如何与其交互 一条完整的URL由多个片段组成. 通用URL组件 方案 以哪种协议访问服务器 用户 ...

  9. go包管理工具glide使用方法

    golang没有官方最佳管理方案,在go的世界里存在大量的自制解决方案. go语言的包是没有中央库统一管理的,通过使用go get命令从远程代码库(github.com,goolge code 等)拉 ...

  10. Linux大文件split分割以及cat合并

    文件大小分割文件时,需要以-C参数指定分割后的文件大小: $ split -C 100M large_file.txt stxt   如上所示,我们将大文件large_file.txt按100M大小进 ...