




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、servlet&jspservlet&jsp基础培训基础培训webweb编程概述编程概述- b/s- b/sdbserverweb server浏览器浏览器与浏览器与webweb服务器的动态交互服务器的动态交互提交按钮,点此提交按钮,点此buttonbutton将将把把formform内的数据传送到服内的数据传送到服务器务器各种输入控件,接各种输入控件,接受用户输入。受用户输入。methodmethod属性指定了属性指定了数据传送方式,可数据传送方式,可以是以是getget或或postpostgetget方式将数据接在方式将数据接在urlurl后面传送给服务器端程序,后面传送给
2、服务器端程序,如:如:http:/url?name1=abc&name2=defhttp:/url?name1=abc&name2=defpostpost方式将数据放在方式将数据放在httphttp请求的请求头后面发送。请求的请求头后面发送。servlet简介简介servlet是java语言的cgi实现,与传统的cgi和许多其他类似cgi的技术相比,java servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性。 高效高效 传统的cgi程序以进程方式运行,而servlet以线程方式运行。 方便方便 servlet提供了大量的实用工具例程,例如自动地解析和解码
3、html表 单数据、读取和设置http头、处理cookie、跟踪会话状态等。 功能强大功能强大可以完成很多传统的cgi程序很难做到的事情。 可移植性好可移植性好servlet api具有完善的标准。servlet基本结构基本结构 public class someservlet extends httpservlet / / 必须继承自必须继承自httpservlethttpservlet public void doget(httpservletrequest request, httpservletresponse response)throws servletexception, ioe
4、xception / / 使用使用“request”request”读取和请求有关的信息(比如读取和请求有关的信息(比如cookiescookies)和表单数据)和表单数据 / / 使用使用“response”response”指定指定httphttp应答状态代码和应答头(比如指定内容类型,设应答状态代码和应答头(比如指定内容类型,设置置cookiecookie) printwriter out = response.getwriter(); / / 使用使用 outout把应答内容发送到浏览器把应答内容发送到浏览器 public void dopost(httpservletrequest
5、request, httpservletresponse response) throws servletexception, ioexception 服务器只创建每个servlet的单一实例,每个用户请求都会引发新的线程。 创建servlet实例时,会调用init()方法,针对每个用户请求都会创建一个线程,该线程调用前面创建实例的service()方法,由service()方法依据接收到的http请求的类型,调用相应的doxxx方法,比如doget(),最后调用destroy()方法销毁。servlet工作原理工作原理web服务器服务器doget()()方法方法dopost()()方法方法h
6、ttp get请求请求http post请求请求响应响应响应响应客户机客户机httpservletrequest&httpservletresponse doget 和 dopost 方法的参数都是 httpservletrequest 和 httpservletresponse 对象。其中httpservletrequest 对象代表了客户端的请求,servlet 通过这个对象获得客户 端 的 请 求 数 据; httpservletresponse对象代表了servlet对客户端请求的响应,sevlet用这个对象向客户端返回数据。httpservletrequest&htt
7、pservletresponse 通过通过httpservletrequest对象获取客户请求数据:对象获取客户请求数据:getparameter()()方法方法protected void doget(httpservletrequest request, httpservletresponse response) string str = request.getparameter(name); / 参数为form内某输入控件的名字 通过通过httpservletresponsehttpservletresponse对象向客户端返回数据对象向客户端返回数据protected void dog
8、et(httpservletrequest request, httpservletresponse response) printwriter out = response.getwriter(); / / 获取输出流对象获取输出流对象 out.println(); / / 通过输出流对象向客通过输出流对象向客户端返回户端返回htmlhtml文本文本 servlet处理用户请求简介处理用户请求简介 单个值的读取单个值的读取 request.getparameter(“param1”); 多个值的读取多个值的读取 request.getparametervalues(); 参数名的查找参数名的
9、查找 request.getparameternames(); request.getparametermap(); 原始表单数据的读取以及对上载文件的分析原始表单数据的读取以及对上载文件的分析 request.getreader(); request.getinputstream(); 多字符集输入的读取多字符集输入的读取 request.setcharacterencoding(“utf-8”);servletservlet设置响应报头设置响应报头 普通设置方法普通设置方法setheader(string headername, string headervalue) httpservle
10、tresponsehttpservletresponse提供的方法提供的方法setdateheader(string header, long milliseconds)setintheader(stirng header, int headervalue)setcontenttype(string mimetype)setcontentlength(int length)会话跟踪会话跟踪http是无状态协议,它没有提供内置方法来对一系列由相同用户发起的请求进行识别。客户程序每次读取web页面,都打开到web服务器的单独的连接,并且服务器也不自动维护客户的上下文信息。因此如果web应用程序如果
11、想要为来自同一个用户的请求保留状态或数据的话(比如购物车程序,用户会在不同网页间切换来选购商品,因此要求web应用程序必须要能记住一个用户选购的所有商品),这一般可以通过以下几个方法实现: cookie url重写 隐藏表单项目解决解决http无状态的方法无状态的方法 cookie cookie是是一些由服务器发向浏览器并且还能由浏览器读回来的小段的文本信息。web服务器将它发送到浏览器,之后在访问同一网站或域时,浏览器又将它原封不动的返回。一般用于记录用户名密码、根据用户的偏好定制站点、定向广告。cookie的内容主要包括:名字,值,过期时间,路径和域。 -域可以指定某一个域比如。-路径就是
12、跟在域名后面的url路径 ,比如/news。解决解决http无状态的方法无状态的方法 cookie代码样例代码样例 cookie usercookie = new cookie(“uesr”, “uid1234”);usercookie.setmaxage(60*60*24*265);/一年response.addcookie(usercookie );解决解决httphttp无状态的方法无状态的方法 url重写重写 利用url重写技术,每个可能被用户点击的url都会被动态修改,为url附加上一个标志本次会话的id。采用这种方式时,客户程序在每个url的尾部添加一些额外数据,用来表示当前的会话
13、,服务器将这个标识符与它存储的用户相关数据关联起来。比如: http:/url/xxx?jsessionid=123 解决解决http无状态的方法无状态的方法 隐藏的表单域隐藏的表单域所谓隐藏表单项目指的是html表单上不在客户端上显示的项目,它们在提交表单时也被送到服务器端。我们可以利用这一机制来维护会话信息。 在提交表单时,要将指定的名称和值自动包括在get和post数据中,隐藏域可以用来存储有关会话的信息。缺点:仅当每个页面都是由表单提交而动态生成时,才能使用这种方法。servletservlet的会话管理的会话管理httpsession api httpsession api是一个基于
14、cookie和url重写机制的高级会话状态跟踪接口:如果浏览器支持cookie,则使用cookie;如果浏览器不支持cookie或者cookie功能被关闭,则自动使用url改写方法。servlet开发者无需关心细节问题,也无需直接处理cookie或附加到url后面的信息,api自动为servlet开发者提供一个可以方便地存储会话信息的地方。 会话状态跟踪会话状态跟踪api 在servlet中使用会话信息是相当简单的,主要的操作包括:查看和当前请求关联的会话对象,必要的时候创建新的会话对象;查看与某个会话相关的信息;在会话对象中保存信息以及会话完成或中止时释放会话对象。会话跟踪基础 常用常用ap
15、iapi样例样例httpsession session = request.getsession();session.setattribute(“test”,”test”);string str = (string)session.getattribute(“test”);session.removeattribute(“test”); jsp概述 jsp采用的是动态代码与静态html页面相结合的方式,jsp的语法内容放入在以“%”开始,以“%”结束的特殊标记之内。 jsp页面文件通常以.jsp为扩展名。虽然从代码编写来看,jsp页面更象普通web页面而不象servlet,但实际上,jsp最终
16、会被转换成正规的servlet,静态html直接输出到和servlet service方法关联的输出流。jsp文件结构 . 其他 html 语言 其他 html 语言 jsp执行过程*.jsp*.java*.classrequestresponse执行执行jsp parserjsdkservletservlet分析器分析器jsp执行过程查找对应的查找对应的jspjsp文件文件是否存在是否存在yn是否是修改或创建是否是修改或创建后第一次调用后第一次调用y调用调用jspjsp parser parser将其将其编译成编译成servletservlet程序程序调用调用jsdkjsdk将对应的将对应的
17、servletservlet程序编译成程序编译成servletservlet字节码字节码执行执行( (若未载入则先载入若未载入则先载入) )已有的对应的已有的对应的javajava字节码字节码nclientclientserverserverjsp语法概述 jsp原始代码中包含了原始代码中包含了jsp元素和元素和template data两类两类 template data指的是jsp引擎不处理的部分,即标记以外的部分,例如代码中的html的内容等 ,这些数据会直接传送到客户端的浏览器。 jsp元素则是指将由jsp引擎直接处理的部分,这一部分必须符合jsp语法,否则会导致编译错误。jsp语法概
18、述 脚本元素(脚本元素(scripting element) 脚本元素用来在jsp中嵌入java代码,它允许声明变量和方法,包含任意脚本代码和对表达式求值。这些java代码将成为转换得到的servlet的一部分。 指令(指令(directive) jsp指令是用作从jsp发送到jsp引擎上的一个信息。它们不向客户端产生任何输出,只是指示jsp引擎需要做什么,所有的指令都在整个jsp文件内有效。也就是说,一个指令影响整个jsp文件,并且只影响这个jsp文件。在标签中指令由标记。 动作(动作(action) 动作用来引入现有的组件或者控制jsp引擎的行为。jsp基础-注释注释 注释注释!- com
19、ment - 或 !- 注释 - 这种注释发送到客户端,但不直接显示,在源代码中可以查到。这种注释不发送到客户端。jsp基础基础-声明声明 声明声明语法:样例样例: berhely jsp基础-表达式 表达式表达式语法:样例: berhely a= b= c= jsp基础-脚本段 脚本段脚本段语法:样例: berhely % for(int i = 0; i jsp基础- include指令 include 指令指令include指令的作用是向当前页中插入一个静态文件的内容。语法: 样例: the current date and time are 当jsp引擎把jsp文件转译成java文件时
20、,会把当前jsp和被包含的jsp页面合并成一个新的jsp页面。当被包含的文件的内容发生变化时,则必须要重新将jsp页面转译成java文件才能看到更新后的内容。jsp基础- - page指令page 指令指令 page指令用于定义jsp文件中的全局属性。 语法: jsp基础- page指令language=javal 声明脚本语言的种类,目前只能用java 。import=package.class | package.* ,. “l 需要导入的java包的列表,这些包作用于程序段,表达式,以及声明。下面的包在jsp编译时已经导入了,所以就不需要再指明了: java.lang.*/ javax.
21、servlet.* /javax.servlet.jsp.*/javax.servlet.http.*errorpage=relativeurll 设置处理异常事件的jsp文件。如果运行时有未能处理的异常发生,就跳转到这个jsp。iserrorpage=true | falsel 表明当前的jsp页面是否作其他jsp页面的errorpage的url目标。如果被设置为true,那么就可以使用隐含的变量exception对象。该属性默认为“false”。jsp基础- page指令 buffer=none | 8kb | sizekb”指定到客户的输出流中缓存的模式。如果值为“none”,就不出现任
22、何缓存,所有的输出都由一个printwriter直接写到servletresponse。如果指定buffer值,那么输出就用不小于这个值的缓冲区来进行缓冲。 autoflash=true | false” 如果值为“true”,当缓冲区被填满时,到客户的输出缓冲区会自动刷新。如果值为“false”,就会出现运行时异常,表示缓存溢出。默认为“true”。 jsp基础- page指令 指令作用于整个jsp页面,同样包括静态的包含文件。但是指令不能作用于动态的包含文件,比如 。 可以在一个页面中用上多个指令,但是其中的属性只能用一次,不过也有例外,那就是import属性。因为import属性和jav
23、a中的import语句类似(参照java language,import语句引入得是java语言中的类),所以此属性就能多用几次。 无论把“% page %指令放在jsp的文件的哪个地方,它的作用范围都是整个jsp页面。不过,为了jsp程序的可读性,以及好的编程习惯,最好还是把它放在jsp文件的顶部。jsp基础- taglib指令 taglib指令指令这个指令允许页面使用用户自定义的标签。它也为标签库(一个压缩文件)命名,标签在这个库中定义。语法: 属性: uri=“taglibraryuri uniform resource identifier (uri ,统一资源标识符),标识标签库描述
24、符。一个标签库描述符用来维一地确定该定制标签集的名字,并告诉包容器如何处理指定的标签。 prefix=tagprefix 自定义标签的前缀字符。不能用jsp, jspx, java, javax, servlet, sun, 和sunw做为你的前缀,这些已被sun公司声明保留。例子:jsp基础-动作 这里只介绍和两个动作。jsp基础- 动作 例子: test jsp基础- 动作 jsp:include 告诉jsp页面动态包含一个文件,即jsp页面运行时才将文件加入。与静态插入文件的include指令标签不同,当jsp引擎把jsp页面转译成java文件时,不把jsp页面中动作指令include所包含的文件与原jsp页面合并成一个新的jsp页面,而是告诉java解释器,这个文件在jsp运行时(java文件的字节码文件被加载执行)才包含进来。如果包含的是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含的是jsp文件,jsp引擎就执行这个文件然后将执行的结果发送到客户端,由客户端负责显示。语法: jsp:include page=filename jsp:param name=paramname
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高校退休管理岗招聘考试重点题
- 2025年机关财务招聘面试模拟试卷
- 2025年无机化工生产工考试重点题及答案集解析集集解析集
- 2025年社会福利会计能力题集
- 课件APP介绍教学课件
- 2025年宠物销售代表面试题及答案
- 2025年风险管理师职业素质评估试题及答案解析
- 2025年快递企业安全实务题及答案
- 2025年志愿服务基金会笔试模拟考试试卷
- 机电专业班长培训知识课件
- 2025年稳定币在大宗商品跨境贸易中的应用研究报告
- 医院财务人员专业能力提升培训
- PDCA循环在医院应急管理中的应用
- 2026创新设计高考总复习生物(人教版)-限时强化练答案解析
- 2025年人资部长面试题及答案
- 《语文八下第三单元复习课》课件
- 2025年山西省公务员考试行测试卷历年真题及答案详解(名校卷)
- 教学课件 金属学与热处理-崔忠圻
- 多智能体系统教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集
- 艺术欣赏完整版课件全套ppt教程(最新)
- 北师大版五年级数学上册全册教案含反思
评论
0/150
提交评论