java基础-007
41.Servlet
Servlet 是处理客户端请求并产生动态网页内容的Java类.Servlet主要是用来处理或者存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息.所有的Servlet都必须要实现的核心接口是java.servlet.Servlet.每一个Servlet都必须要直接或间接实现这个接口,或者是继承javax.servlet.GenericServlet或者javax.http.HTTPSerclet.最后,Servlet使用多线程可以并行的多个请求服务.
42.GenericServlet和HttpServlet
GenericServlet是一个使用通用的协议无关的Servlet,它实现了Servlet和ServletConfig接口.继承子GenericServlet的Servlet应该覆盖service()方法.最后,为了开发一个能用在网页上服务于使用http协议请求的servlet,就必须继承子HttpServlet.
43.Servlet的生命周期
对每一个客户端请求,Servlet引擎载入Servlet,调用它的init()方法,完成Servlet的初始化.然后,Servlet对象通过为每一个请求单独调用service()方法来处理所有随后来自客户端的请求,最后,调用Servlet的destroy()方法把Servlet删除掉.
44.doGet()方法和doPost()方法
doGet:GET方法会把键值对追加到请求URL的后面.因为URL对字符串数目有限制,进而限制了用户在客户端请求的参数值的数目.并且请求中的参数值是可见的,因此,敏感信息不能通过这种方式传递.
doPost:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数大的数目是没有限制的,做后,通过POST请求传递的敏感信息对外部客户端是不可见的.
45.WEB应用程序
Web应用程序是对Web或者用用服务器的动态扩展.有两种类型的Web应用:面向表现的和面向服务的.面向表现的web应用程序会产生包含了很多标记语言和动套内容的交互的web页面作为请求的响应.而面向服务的web应用实现了web服务的端点(endpoint).一般来说,一个web应用可以看成是一组安装在服务器URL名称空间的特定子集下面的Servlet的集合.
46.服务端包含(Server Side Include)
服务端包含(SSI)是一种简单的解释型服务端脚本语言,大多数时候仅在web上,用Servlet标签嵌入进来.SSI最常用的场景是把一个或多个文件包含到web服务器的一个web插件中.当浏览器访问web页面的时候,web服务器会用对应的Servlet产生的文本来替换web页面中的Servlet标签.
47.Servlet链(Servlet Chaining)
Servlet链是把一个Servlet的输出发送给另一个Servlet的方法.第二个Servlet的输入可以发送给第三个Servlet,以此类推.链条上最后一个Servlet负责把响应发送给客户端.
48.HTTP响应的结构
HTTP响应由三部分组成:
- 状态码(Status Code):描述了响应的状态.可以用来检查是否成功完成了请求.请求失败的情况下,状态码可用来找出失败的原因.如果Servlet没有返回状态码.默认会返回成功的状态码HttpServletResponse.SC_OK.
- HTTP头部(HTTP Header):它们包含了更多关于响应的信息.比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的输入实例内容的编码格式.如何在Servlet中检索HTTP的头部信息.
- 主体(Body):它包含了响应的内容.它可以包含HTML代码,图片等.主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的.
49.cookie和session
cookie是web服务器发送给浏览器的一块信息.浏览器会在本地文件中给每一个web服务器存储cookie.以后浏览器在给特定的服务器发送请求的时候,同时会发送所有为该服务器存储的cookie.
session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务.
session和cookie的区别:
- 无论客户端浏览器做怎么样的设置,session都应该能正常工作.客户端可以选择禁用cookie,但是,session仍然是能够工作的,因为客户端无法禁用服务端的session.
- 在存储的数据量方面session和cookie也是不一样的.session能够存储任意的Java对象,cookie只能存储Stirng类型的对象.
50.HTTP隧道
HTTP隧道是一种利用HTTP或者HTTPs把多种网络协议技术封装起来进行通信的技术.因此,HTTP协议扮演了一个通用的网络协议的管道的包装器的角色.把其他协议的请求掩盖成HTTP的请求就是HTTP隧道.
51.sendRedirect()方法和forward()方法
sendRedirect()方法会创建一个新的请求,而forward()方法只是把请求转发到另一个新的目标上.重定向(Redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forward)以后,之前请求作用域以内的对象还是能访问的.一般认为sendRedirect()比foreard()要慢.
51.JSP
JSP页面是一种包含了静态数据和JSP元素两种类型的文本文档.静态数据可以用任何基于文本的格式来表示.比如:HTML或者XML.JSP是一种混合了静态内容和动态产生的内容技术.
浏览器处理一个JSP请求,首先要请求一个一 .jsp扩展名为结尾的页面,发起JSP请求,然后,web服务器读取这个请求,使用JSP编辑器把JSP页面转化成一个Servlet类.需要注意的是,只有当第一次请求页面或者是JSP文件发生改变的时候JSP文件才会被编译,然后服务器调用Servlet类,处理浏览器的请求.一旦请求执行结束,Servlet会把响应发送发给客户端.
JSP的优点:
- JSP页面是被动态编译成Servlet的,因此,开发者可以很容易的更新展现代码.
- JSP页面可以被预编译
- JSP页面可以很容易地和静态模板结合包括:HTML或者XML,也可以很容易和产生动态内容的代码结合起来.
- 开发者可以提供让页面设计者以类XML格式来访问的自定义JSP标签.
- 开发者可以在组件层做逻辑上的改变,而不需要编辑单独使用了应用层逻辑的页面.
52.JSP指令(Directive)
Directive是当JSP页面被编译成Servlet的时候,JSP引擎要处理的指令.Directive用来设置页面级别的指令,从外部文件插入数据,指定自定义的标签库.Directive是定义在<%@和%>之间的.下面列出了不同类型的Directive:
- 包含指令(include directive):用来包含文件和合并文件内容到当前的页面.
- 页面指令(page directive):用来定义JSP页面中指定的属性,比如:错误页面和缓冲区.
- Taglib指令:用来声明页面使用的自定义的标签库.
53.JSP动作
JSP动作以XML语法的结构来控制Servlet引擎的行为.当JSP页面被请求的时候,JSP动作会被执行.它们可以被动态的插入到文件库中,重用JavaBean组件,转发用户到其他的页面,或者是给Java插件产生HTML代码.下面列出了可用的动作:
- jsp:include:当JSP页面被请求的时候包含一个文件
- jsp:useBean:找出或者是初始化JavaBean
- jsp:setProperty:设置JavaBean属性
- jsp:getProperty:获取JavaBean的属性
- jsp:forward:把请求转发到新的页面
- jsp:plugin:产生特定浏览器的代码
54.Scriptlet
JSP技术中,scriptlet是嵌入在JSP页面中的一段代码.scriptlet是位于标签内部的所有东西,在标签与标签之间,用户可以添加任意有效的scriptlet.
55.声明(Decalation)和表达式(Expression)
声明和Java中的变量声明很相似,它用来声明随后要被表达式或者scriptlet使用的变量.添加的声明必须要用开始和结束标签包起来.
JSP表达式是web服务器把脚本语言表达式的值转化成一个String对象,插入到返回给客户端的数据流中.表达式是在<%=和%>这两个标签之间定义的.
56.隐含对象
JSP隐含对象是页面中的一些Java对象,JSP容器让这些Java对象可以为开发这所使用,开发者不用明确的声明就可以直接使用它们.JSP隐含对象也可以叫做预定义变量.下面列出了JSP页面中的隐含对象:
- application
- page
- request
- response
- session
- exception
- out
- comfig
- pageContext
java基础-007的更多相关文章
- 007 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 01 Java标识符
007 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 01 Java标识符 Java变量与常量主要内容 Java变量与常量主要内容如下,主要是对以下内容的学习,没 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- 最适合作为Java基础面试题之Singleton模式
看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...
- java基础练习 字符串,控制流,日历,日期等
1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)
线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...
随机推荐
- xcode ___gxx_personality_v0" 编译错误
xcode ___gxx_personality_v0" 编译错误 Undefined symbols for architecture i386: "___gxx_persona ...
- centos7 最小化安装 无 ifconfig,netstat 的安装
centos7 最小化安装 无 ifconfig,netstat 的安装 centos7 最小化安装之后,默认是没有 ifconfig,netstat命令的: 我们可以直接使用 yum -y inst ...
- 【BZOJ 2243】染色 - 树链剖分+线段树
#include <cstdio> #include <cstring> #include <cstdlib> using namespace std; const ...
- 各大互联网公司2014前端笔试面试题–JavaScript篇
很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...
- Intellij IDEA中配置Maven
maven学习资料:http://www.youmeek.com/intellij-idea-part-xviii-maven/ 待描述...
- q和blockquote标签的区别
q用来分离文本中的引语,定义一个短的引用.该标签会对引用的文本加双引号,一般情况很少用,博客论坛系统会用得多一些: blockquote用于对长文本的引用,用来定义一段引语,标签内的内容会自动有缩进: ...
- 关于iOS7 设计师需要了解的十件事
在今年的WWDC上,苹果推出了采用全新设计语言打造的iOS7.新系统弃用了诸如皮革.木质一类的伪3D拟真效果,取而代之的是更加简洁轻量的设计路线,其中文字排版成了重头戏,另外在某些方面也受到了扁平化设 ...
- SqlServer关闭与启用标识(自增长)列
1 --添加新列 2 ALTER TABLE TABLENAME ADD ID int 3 --赋值 4 UPDATE TABLENAME SET ID = IDENTITY_ID 5 --删除标识列 ...
- Tarjan--LCA算法的个人理解即模板
tarjan---LCA算法的步骤是(当dfs到节点u时): 实际: 并查集+dfs 具体步骤: 1 在并查集中建立仅有u的集合,设置该集合的祖先为u 1 对u的每个孩子v: 1.1 tarj ...
- Remove Nth Node From End of List [LeetCode]
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...