博和利初级培训第二讲

上传人:M****1 文档编号:590417936 上传时间:2024-09-14 格式:PPT 页数:40 大小:843.02KB
返回 下载 相关 举报
博和利初级培训第二讲_第1页
第1页 / 共40页
博和利初级培训第二讲_第2页
第2页 / 共40页
博和利初级培训第二讲_第3页
第3页 / 共40页
博和利初级培训第二讲_第4页
第4页 / 共40页
博和利初级培训第二讲_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《博和利初级培训第二讲》由会员分享,可在线阅读,更多相关《博和利初级培训第二讲(40页珍藏版)》请在金锄头文库上搜索。

1、 第二讲第二讲 Servlet&JSPServlet&JSP基础培训基础培训博和利初级培训博和利初级培训博和利初级培训博和利初级培训 开发技能开发技能开发技能开发技能WebWeb编程概述编程概述- B/S- B/SDBServerWebServer浏览器浏览器与浏览器与WebWeb服务器的动态交互服务器的动态交互提交按钮,点此提交按钮,点此ButtonButton将将把把FORMFORM内的数据传送到服内的数据传送到服务器务器各种输入控件,接各种输入控件,接受用户输入。受用户输入。MethodMethod属性指定了属性指定了数据传送方式,可数据传送方式,可以是以是GETGET或或POSTPOS

2、TGETGET方式将数据接在方式将数据接在URLURL后面传送给服务器端程序,后面传送给服务器端程序,如:如:http:/url?name1=abc&name2=defhttp:/url?name1=abc&name2=defPOSTPOST方式将数据放在方式将数据放在HTTPHTTP请求的请求头后面发送。请求的请求头后面发送。Servlet简介简介Servlet是java语言的CGI实现,与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性。高效高效 传统的CGI程序以进程方式运行,而Servlet以线程方式运行。方便

3、方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表 单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。功能强大功能强大可以完成很多传统的CGI程序很难做到的事情。可移植性好可移植性好ServletAPI具有完善的标准。Servlet基本结构基本结构 public class SomeServlet extends HttpServlet / / 必须继承自必须继承自HttpServletHttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response

4、)throws ServletException, IOException / / 使用使用“request”request”读取和请求有关的信息(比如读取和请求有关的信息(比如CookiesCookies)和表单数据)和表单数据 / / 使用使用“response”response”指定指定HTTPHTTP应答状态代码和应答头(比如指定内容类型,设应答状态代码和应答头(比如指定内容类型,设置置CookieCookie) PrintWriter out = response.getWriter(); / / 使用使用 outout把应答内容发送到浏览器把应答内容发送到浏览器 public vo

5、id doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ServletServlet生命周期生命周期生命周期生命周期服务器只创建每个Servlet的单一实例,每个用户请求都会引发新的线程。创建Servlet实例时,会调用init()方法,针对每个用户请求都会创建一个线程,该线程调用前面创建实例的service()方法,由service()方法依据接收到的HTTP请求的类型,调用相应的doXxx方法,比如doGet(),最后调用destroy(

6、)方法销毁。Servlet工作原理工作原理Web服务器服务器doGet()()方法方法doPost()()方法方法HTTP GET请求请求HTTP POST请求请求响应响应响应响应客户机客户机HttpServletRequest&HttpServletResponse doGet 和 doPost 方法的参数都是 HttpServletRequest和 HttpServletResponse 对象。其中HttpServletRequest 对象代表了客户端的请求,servlet通过这个对象获得客户 端 的 请 求 数 据; HttpServletResponse对象代表了servlet对客户端

7、请求的响应,sevlet用这个对象向客户端返回数据。HttpServletRequest&HttpServletResponse 通过通过HttpServletRequest对象获取客户请求数据:对象获取客户请求数据:getParameter()()方法方法protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) Stringstr=request.getParameter(name); / 参数为FORM内某输入控件的名字 通过通过HttpServletResponseHttpServletRespon

8、se对象向客户端返回数据对象向客户端返回数据protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)PrintWriterout=response.getWriter(); / / 获取输出流对象获取输出流对象 out.println(); / / 通过输出流对象向客户端返回通过输出流对象向客户端返回HTMLHTML文文本本 Servlet处理用户请求简介处理用户请求简介单个值的读取单个值的读取 request.getParameter(“Param1”);多个值的读取多个值的读取 request.get

9、ParameterValues();参数名的查找参数名的查找 request.getParameterNames();request.getParameterMap();原始表单数据的读取以及对上载文件的分析原始表单数据的读取以及对上载文件的分析 request.getReader();request.getInputStream();多字符集输入的读取多字符集输入的读取request.setCharacterEncoding(“utf-8”);ServletServlet设置响应报头设置响应报头普通设置方法普通设置方法setHeader(StringheaderName,Stringhead

10、erValue)HttpServletResponseHttpServletResponse提供的方法提供的方法setDateHeader(Stringheader,longmilliseconds)setIntHeader(Stirngheader,intheaderValue)setContentType(StringmimeType)setContentLength(intlength)会话跟踪会话跟踪HTTP是无状态协议,它没有提供内置方法来对一系列由相同用户发起的请求进行识别。客户程序每次读取Web页面,都打开到Web服务器的单独的连接,并且服务器也不自动维护客户的上下文信息。因此如

11、果Web应用程序如果想要为来自同一个用户的请求保留状态或数据的话(比如购物车程序,用户会在不同网页间切换来选购商品,因此要求Web应用程序必须要能记住一个用户选购的所有商品),这一般可以通过以下几个方法实现: CookieURL重写隐藏表单项目解决解决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 HttpSessionAPI是一个

14、基于Cookie和URL重写机制的高级会话状态跟踪接口:如果浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL改写方法。Servlet开发者无需关心细节问题,也无需直接处理Cookie或附加到URL后面的信息,API自动为Servlet开发者提供一个可以方便地存储会话信息的地方。会话状态跟踪会话状态跟踪API 在Servlet中使用会话信息是相当简单的,主要的操作包括:查看和当前请求关联的会话对象,必要的时候创建新的会话对象;查看与某个会话相关的信息;在会话对象中保存信息以及会话完成或中止时释放会话对象。会话跟踪基础常用常用ap

15、iapi样例样例HttpSessionsession=request.getSession();session.setAttribute(“test”,”test”);Stringstr=(String)session.getAttribute(“test”);session.removeAttribute(“test”);JSP概述 JSP采用的是动态代码与静态HTML页面相结合的方式,JSP的语法内容放入在以“%”开始,以“%”结束的特殊标记之内。 JSP页面文件通常以.jsp为扩展名。虽然从代码编写来看,JSP页面更象普通Web页面而不象Servlet,但实际上,JSP最终会被转换成正规

16、的Servlet,静态HTML直接输出到和Servletservice方法关联的输出流。JSP文件结构.其他HTML语言其他HTML语言JSP执行过程*.jsp*.java*.classrequestresponse执执行行jsp parserJSDKservletservlet分析器分析器JSP执行过程查找对应的查找对应的JSPJSP文件文件是否存在是否存在YN是否是修改或创建是否是修改或创建后第一次调用后第一次调用Y调用调用JspJsp Parser Parser将其将其编译成编译成ServletServlet程序程序调用调用JSDKJSDK将对应的将对应的ServletServlet程序

17、编译成程序编译成ServletServlet字节码字节码执行执行( (若未载入则先载入若未载入则先载入) )已有的对应的已有的对应的JavaJava字节码字节码NClientClientServerServerJSP语法概述JSP原始代码中包含了原始代码中包含了JSP元素和元素和Templatedata两类两类 Templatedata指的是JSP引擎不处理的部分,即标记以外的部分,例如代码中的HTML的内容等 ,这些数据会直接传送到客户端的浏览器。 JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。JSP语法概述脚本元素(脚本元素(Scriptin

18、gElement) 脚本元素用来在JSP中嵌入Java代码,它允许声明变量和方法,包含任意脚本代码和对表达式求值。这些Java代码将成为转换得到的Servlet的一部分。指令(指令(Directive)JSP指令是用作从JSP发送到JSP引擎上的一个信息。它们不向客户端产生任何输出,只是指示JSP引擎需要做什么,所有的指令都在整个JSP文件内有效。也就是说,一个指令影响整个JSP文件,并且只影响这个JSP文件。在标签中指令由标记。动作(动作(Action) 动作用来引入现有的组件或者控制JSP引擎的行为。JSP基础-注释注释注释注释!- comment - 或 !- 注释 - 这种注释发送到客

19、户端,但不直接显示,在源代码中可以查到。这种注释不发送到客户端。JSP基础基础-声明声明声明声明语法:样例样例: berhely JSP基础-表达式表达式表达式语法:样例: berhely a= b= c= JSP基础-脚本段脚本段脚本段语法:样例: berhely % for(int i = 0; i JSP基础- include指令include指令指令include指令的作用是向当前页中插入一个静态文件的内容。语法: 样例: Thecurrentdateandtimeare 当JSP引擎把JSP文件转译成java文件时,会把当前JSP和被包含的JSP页面合并成一个新的JSP页面。当被包含

20、的文件的内容发生变化时,则必须要重新将JSP页面转译成java文件才能看到更新后的内容。JSP基础- - page指令page 指令指令 page指令用于定义JSP文件中的全局属性。语法:JSP基础-page指令language=javal声明脚本语言的种类,目前只能用java 。import=package.class|package.*,.“l需要导入的Java包的列表,这些包作用于程序段,表达式,以及声明。下面的包在JSP编译时已经导入了,所以就不需要再指明了:java.lang.*/javax.servlet.*/javax.servlet.jsp.*/javax.servlet.ht

21、tp.*errorPage=relativeURLl设置处理异常事件的JSP文件。如果运行时有未能处理的异常发生,就跳转到这个JSP。isErrorPage=true|falsel表明当前的JSP页面是否作其他JSP页面的errorPage的URL目标。如果被设置为true,那么就可以使用隐含的变量exception对象。该属性默认为“false”。JSP基础- page指令buffer=none|8kb|sizekb”指定到客户的输出流中缓存的模式。如果值为“none”,就不出现任何缓存,所有的输出都由一个PrintWriter直接写到ServletResponse。如果指定Buffer值,

22、那么输出就用不小于这个值的缓冲区来进行缓冲。autoFlash=true|false” 如果值为“true”,当缓冲区被填满时,到客户的输出缓冲区会自动刷新。如果值为“false”,就会出现运行时异常,表示缓存溢出。默认为“true”。JSP基础- page指令指令作用于整个JSP页面,同样包括静态的包含文件。但是指令不能作用于动态的包含文件,比如 。 可以在一个页面中用上多个指令,但是其中的属性只能用一次,不过也有例外,那就是import属性。因为import属性和Java中的import语句类似(参照Java Language,import语句引入得是Java语言中的类),所以此属性就能多

23、用几次。 无论把“% page %指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部。JSP基础- taglib指令taglib指令指令这个指令允许页面使用用户自定义的标签。它也为标签库(一个压缩文件)命名,标签在这个库中定义。语法: 属性:uri=“tagLibraryURI UniformResourceIdentifier(URI ,统一资源标识符),标识标签库描述符。一个标签库描述符用来维一地确定该定制标签集的名字,并告诉包容器如何处理指定的标签。prefix=tagPrefix 自定义标签的

24、前缀字符。不能用jsp,jspx,java,javax,servlet,sun, 和sunw做为你的前缀,这些已被Sun公司声明保留。例子: JSP基础-动作这里只介绍和两个动作。JSP基础-动作例子: testJSP基础- 动作 告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。与静态插入文件的include指令标签不同,当JSP引擎把JSP页面转译成java文件时,不把JSP页面中动作指令include所包含的文件与原JSP页面合并成一个新的JSP页面,而是告诉java解释器,这个文件在JSP运行时(java文件的字节码文件被加载执行)才包含进来。如果包含的是普通的文本文件,

25、就将文件的内容发送到客户端,由客户端负责显示;如果包含的是JSP文件,JSP引擎就执行这个文件然后将执行的结果发送到客户端,由客户端负责显示。语法: page=filename / JSP基础-内置对象内置对象内置对象requestrequest封装了来自客户端的请求,它是javax.servlet.ServletRequest类的一个实例。来自客户的请求经由JSP引擎处理后,由request对象进行封装。responseresponse它是javax.servlet.ServletReponse类的一个实例。它封装由JSP产生的响应,并被发送到客户端以响应请求。它由JSP引擎生成并传递给JS

26、P 。pageContextpageContextjavax.servlet.jsp.PageContext,作用域page。sessionsessionjavax.servlet.http.HttpSession,表示为发出请求的客户建立的会话,并只是对这个HTTP请求才有效。JSP基础-内置对象内置对象内置对象applicationjavax.servlet.SservletContext,通过调用getServletConfig().getContext() 方法获得,作用域整个web应用程序运行期,表示JSP正在执行的上下文。outjavax.servlet.jsp.JspWriter,代表输出流的对象,作用域page。configjavax.servlet.ServletConfig,页面的ServletConfig对象,作用域page。pagejava.lang.Object,作用域page。JSP基础-内置对象内置对象内置对象exceptionexceptionjava.lang.Throwable,作用域page。它是java.lang.Throwable类的一个实例。它指的是运行时的异常,也就是被调用的错误页面中的结果,并且它只在错误页面中才有(错误页面就是在页面指令中有isErrorPage=true属性的页面)。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号