您好,欢迎访问三七文档
Web应用程序•J2EE下的WEB应用程序,主要是在HTTP协议以及HTTPS(SSL+HTTP)协议的基础上,采用J2EE相关技术在应用服务器上实现开发。•ServletJSP/taglibJavaBean是j2ee下web应用程序的三种基本技术(服务器端)•HTMLCSSJavaScript是浏览器端页面展示技术和页面脚本程序。(客户端[IE/Mozilla])J2EE-Web应用体系结构InteractionControlBusinessLogicPageConstructionDatabaseLegacySystems3rdpartysystemsJDBCHTMLJavascriptServletsJSPs-Javaclasses-beans-EJBsConnectorsHTTP协议(RFC2616)•HTTP协议,超文本传输协议的英文(HypertextTransferProtocol)简称•由于HTTP协议是基于请求/响应范式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。•请求和相应大致内容格式如下:•请求:•GET/test/test.jspHTTP/1.0•Accept:*/*•Accept-Language:zh-cn,en;q=0.5•Accept-Encoding:gzip,deflate•Connection:Close•响应:•HTTP/1.1200OK•Date:Tue,11Dec200704:15:36GMT•Server:OracleContainersforJ2EE•Content-Length:1993•Set-Cookie:JSESSIONID=0a0b065b22b8d362eab855fc4ecaab5b8aebd67ea9dc;path=/test•Cache-Control:private•Connection:close•Content-Type:text/html;charset=gb2312•测试页面HTTP协议(RFC2616)问题1.怎么把服务器的正在处理一大批数据的进度时时显示到客户端?原来我们在C/S开发的时候,这个功能很容易实现,当程序每处理一些记录后,就更新一些页面,但是由于http协议是断连接协议,以一种请求/响应模式运行,服务器上的程序不能把自己的变化情况主动反映到客户端。由于http协议的约束,我们就只能通过JAVASCRIPT定时向服务器请求,每次把服务器的进度显示到客户端。(AJAX的局部刷新等功能都是通过这种方法来实现的,微软的XMLHTTP对象)问题2.在做WEB开发的时候,可能需要在N个页面间传递参数,这些参数是一些对象,不是简单的文本,当然这些参数可以保存在服务器上的会话中,但如果太多的话,会影响服务器的性能,而我们的页面保存的参数又只能是文本?我们可以通过java的序列化办法来做,先把对象序列化,得到一个对象流,把对象流转换byte[],byte[]是不能直接显示的,然后把这个byte[]通过base64编码得到一个可见的字符串,然后把这个字符串保存在页面中,页面提交的时候,把该字符串提交到服务器,服务器通过base64解码,然后反序列化,得到对象,对对象进行操作。操作完毕,又可以重复进行上面的操作。(典型应用:JSF的视图对象保存在客户端的时候),如果该串比较大的话,考虑压缩。Servlet•用户请求,都是在Servlet中完成的。主要在系统中扮演一种控制器的角色•继承javax.servlet.http.HttpServlet即可,然后在web.xml中配置•publicvoiddestroy(){•super.destroy();•url=null;•}•protectedvoiddoGet(HttpServletRequestrequest,•HttpServletResponseresponse)throwsServletException,IOException{•}•/*•*/•protectedvoiddoPost(HttpServletRequestrequest,•HttpServletResponseresponse)throwsServletException,IOException{•}•privateStringurl;•publicvoidinit(ServletConfigconfig)throwsServletException{•super.init(config);•url=config.getInitParameter(url);•}•给大家一个例子Filter•访问控制器,使用于访问控制,比如转换请求编码,权限控制等•继承javax.servlet.Filter即可,然后在web.xml中配置•publicvoidinit(FilterConfigfilterConfig)throwsServletException{•encoding=filterConfig.getInitParameter(PARA_NAME);•if(encoding==null){•encoding=GBK;•}•}•publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,•FilterChainchain)throwsIOException,ServletException{•chain.doFilter(request,response);•}•publicvoiddestroy(){•}•给大家一个例子Listener•相当于一种监控器模型•javax.servlet.ServletContextListener•javax.servlet.http.HttpSessionListener等接口•只要实现这些接口,然后在web.xml中注册即可.•publicclassTestSessionListenerimplements•javax.servlet.http.HttpSessionListener{•publicvoidsessionCreated(HttpSessionEventarg0){•arg0.getSession().setAttribute(s,•newTimestamp(System.currentTimeMillis()));•System.out.println(TestSessionListener创建);•SingleInstance.getInstance().create();•}•publicvoidsessionDestroyed(HttpSessionEventarg0){•Timestampt=(Timestamp)arg0.getSession().getAttribute(s);•SingleInstance.getInstance().destory();•System.out.println(TestSessionListener销毁,会话时间为:•+(System.currentTimeMillis()-t.getTime())+毫秒);•}•}•给大家一个例子TagLib•一种JSP页面标签技术,只要继承TagSupport即可,然后在tld描述文件注册即可使用,主要实现JSP的页面展现等,典型引用JSTL•publicclassRepeatSumbitTokenTaglibextendsTagSupport{•}HTML•HTML是一种标记语言,平时用得最多的就是forminputselecttextarea等标记,这些标记都是为了让用户输入一个值或多个值的输入框。•表单Form•form/form属性主要有:•Action,把内容提交给具体的URL,•Method(GET/POST),•enctype值一般会有:•application/x-(标准);multipart/form-data(主要用户文件上传时候必须把form的enctype设置该值)•表单中的元素除了disabled的输入标记外,其他的都将会提交。HTML•INPUT标记,根据不同的类型还生成不同的标记inputname=“XX”type=“text”•其中type,分别有radio,checkbox,file,text,button,reset,submit,select标记,分为单选和多选,select标记中的multiple来控制单选和多选•其实select标记的单选和radio,select的多选与checkbox类似•type=“file”就是显现文件上传的html标记,如果是有带有文件的输入框,需要上传文件的话,需要把form的enctype=“multipart/form-data”,这样才能实现上传,如果没有设置,是传不了文件的,如果有带文件上传的提交,在服务器端,通过request.getParameter(“”)是不能实现的得到参数,必须通过流解析才能得到上传的文件。•Textarea标记,就是输入一个文本块的输入框,有rowscols等属性•看看html的表单元素效果testhtml.jspJavaScript•JavaScript是一种基于对象(Object)和事件驱动(EventDriven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择,具有以下几个基本特点:•是一种脚本编写语言JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程。它的基本结构形式与C、C++、VB、Delphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。•基于对象的语言。JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。浏览器中有很多对象供我们调用,如windows,document等,不同的浏览器,有些对象是不一样的。•JavaScript仅仅运行在浏览器中,是在我们客户端--浏览器中运行的,与服务器没有任何关系,只是和我们浏览器中的一些对象进行交互。JavaScript•简单性•JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计,从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型-变体型,并未使用严格的数据类型。•安全性JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。•动态性的JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(HomePage)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应
本文标题:Web 应用程序
链接地址:https://www.777doc.com/doc-3368597 .html