java面试突击-javaWeb技术

Web 技术

1.Servlet 的生命周期详解

Servlet 的生命周期,简单的概括这就分为四步:

servlet 类加载--->实例化--->服务--->销 毁
image
1、Web Client 向 Servlet 容器(Tomcat)发出 Http 请求

2、Servlet 容器接收 Web Client 的请求

3、Servlet 容器创建一个 HttpRequest 对象,将 Web Client 请求的信息封装到这个对象中

4、Servlet 容器创建一个 HttpResponse 对象

5、Servlet 容器调用 HttpServlet 对象的 service 方法,把 HttpRequest 对象与 HttpResponse
对象作为参数传给 HttpServlet 对象

6、HttpServlet 调用 HttpRequest 对象的有关方法,获取 Http 请求信息

7、HttpServlet 调用 HttpResponse 对象的有关方法,生成响应数据

8、Servlet 容器把 HttpServlet 的响应结果传给 Web Client

Servlet 的框架是由两个 Java 包组成的:javax.servlet 与 javax.servlet.http。

在 javax.servlet 包中定义了所有的 Servlet都必须实现或者扩展的通用接口和类。
在 javax.servlet.http 包中定义了采用 Http 协议通信的 HttpServlet 类。Servlet 的
框架的核心是 javax.servlet.Servlet 接口,所有的 Servlet 都必须实现这个接口。

在 Servlet 接口中定义了 5 个方法,其中 3 个方法代表了 Servlet 的生命周期

1、init 方法:负责初始化 Servlet 对象。
2、service 方法:负责响应客户的请求。
3、destroy 方法:当 Servlet 对象退出生命周期时,负责释放占用的资源

Jsp 和 servlet 的区别和联系 :

区别

jsp 经编译后就变成了 Servlet.
(JSP 的本质就是 Servlet,JVM 只能识别 java 的类,不能识别 JSP 的代码,Web 容器将 JSP 的代码编译成 JVM 能够识别的 java 类)


Servlet 在 Java 代码中通过 HttpServletResponse 对象动态输出 HTML 内容
JSP 在静态 HTML 内容中嵌入 Java 代码,Java 代码被动态执行后生成 HTML 内容


jsp 更擅长表现于页面显示,servlet 更擅长于逻辑控制.


Servlet 中没有内置对象,Jsp 中的内置对象都是必须通过
HttpServletRequest对象,HttpServletResponse 对象以及HttpServlet 对象得到


Jsp 是 Servlet 的一种简化,使用 Jsp 只需要完成程序员需要输出到客户端的内容,Jsp 中的 Java 脚本如何镶嵌到一个类中,由Jsp 容器完成。
而 Servlet 则是个完整的 Java 类,这个类的 Service 方法用于生成对客户端的响应。

联系

JSP 是 Servlet 技术的扩展,本质上就是 Servlet 的简易方式。JSP 编译后是“类 servlet”.

Cookie 和 session 区别

1、cookie 数据存放在客户的浏览器上,session 数据放在服务器上。

2、cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗
考虑到安全应当使用 session。

3、session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用 COOKIE。

4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。


将登陆信息等重要信息存放在 SESSION
其他信息如果需要保留,可以放在 COOKIE

Jsp 9大内置对象:

1、request 对象

request 对象是 javax.servlet.httpServletRequest 类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过 HTTP
协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request 对象的作用域为一次请求。

2、response 对象

response 代表的是对客户端的响应,主要是将 JSP 容器处理过的对象传回到客户端。response 对象也具有作用域,它只在 JSP
页面内有效。

3、session 对象

session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个 session 对象,用于保存该用户的信
息,跟踪用户的操作状态。session 对象内部使用 Map 类来保存数据,因此保存数据的格式为 “Key/value”。 session 对象的
value 可以使复杂的对象类型,而不仅仅局限于字符串类型。

4、application 对象

application 对象可将信息保存在服务器中,直到服务器关闭,否则 application 对象中保存的信息会在整个应用中都有效。
与 session 对象相比,application 对象生命周期更长,类似于系统的“全局变量”。

5、out 对象

out 对象用于在 Web 浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲
区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

6、pageContext 对象

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP 页面的 out、request、reponse、session、application 等对象。pageContext 对象的创建和初始化都是由容器来完成的,在 JSP 页面中可以直接使用 pageContext 对象。

7、config 对象

config 对象的主要作用是取得服务器的配置信息。通过 pageConext 对象的 getServletConfig() 方法可以获取一个 config 对
象。当一个 Servlet 初始化时,容器把某些信息通过 config 对象传递给这个 Servlet。 开发者可以在 web.xml 文件中为应用
程序环境中的 Servlet 程序和 JSP 页面提供初始化参数。

8、page 对象

page 对象代表 JSP 本身,只有在 JSP 页面内才是合法的。page 隐含对象本质上包含当前 Servlet 接口引用的变量,类似于 Java 编程中的 this 指针。

9、exception 对象

exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的 JSP 页面中使用该
对象将无法编译 JSP 文件。excepation 对象和 Java 的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了
所有异常情况。在 Java 程序中,可以使用 try/catch 关键字来处理异常情况; 如果在 JSP 页面中出现没有捕获到的异常,就会
生成 exception 对象,并把 exception 对象传送到在 page 指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

Request 对象主要有哪些方法:

setAttribute(String name,Object):设置名字为 name 的 request 的参数值
getAttribute(String name):返回由 name 指定的属性值
getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组
getCharacterEncoding() :返回请求中的字符编码方式
getContentLength() :返回请求的 Body 的长度
getHeader(String name) :获得 HTTP 协议定义的文件头信息
getHeaders(String name) :返回指定名字的 request Header 的所有值,结果是一个枚举的实例
getHeaderNames() :返回所以 request Header 的名字,结果是一个枚举的实例
getInputStream() :返回请求的输入流,用于获得请求中的数据
getMethod() :获得客户端向服务器端传送数据的方法
getParameter(String name) :获得客户端传送给服务器端的有 name 指定的参数值
getParameterNames() :获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实
例
getParameterValues(String name):获得有 name 指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString() :获得查询字符串
getRequestURI() :获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的 IP 地址
getRemoteHost() :获取客户端的名字
getSession([Boolean create]) :返回和请求相关 Session
getServerName() :获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容