1、Web 应用程序 J2EE下的WEB应用程序,主要是在HTTP 协议以及HTTPS(SSL+HTTP)协议的基础上,采用J2EE相关技术在应用服务器上实现开发。Servlet JSP/taglib JavaBean 是j2ee下web应用程序的三种基本技术(服务器端)HTML CSS JavaScript是浏览器端页面展示技术和页面脚本程序。(客户端IE/Mozilla)J2EE-Web 应用体系结构应用体系结构InteractionControlBusinessLogicPageConstructionDatabaseLegacy Systems3rd party systemsJDBCHT
2、MLJavascriptServletsJSPs-Java classes-beans-EJBsConnectorsHTTP/HTTPSHTTP协议(RFC2616)HTTP协议,超文本传输协议的英文(Hypertext Transfer Protocol)简称由于HTTP协议是基于请求/响应范式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是
3、MIME信息包括服务器信息、实体信息和可能的内容。请求和相应大致内容格式如下:请求:GET/test/test.jsp HTTP/1.0Accept:*/*Accept-Language:zh-cn,en;q=0.5Accept-Encoding:gzip,deflateConnection:Close响应:HTTP/1.1 200 OKDate:Tue,11 Dec 2019 04:15:36 GMTServer:Oracle Containers for J2EEContent-Length:1993Set-Cookie:JSESSIONID=0a0b065b22b8d362eab855f
4、c4ecaab5b8aebd67ea9dc;path=/testCache-Control:privateConnection:closeContent-Type:text/html;charset=gb2312测试页面HTTP协议(RFC2616)问题1.怎么把服务器的正在处理一大批数据的进度时时显示到客户端?原来我们在C/S开发的时候,这个功能很容易实现,当程序每处理一些记录后,就更新一些页面,但是由于http协议是断连接协议,以一种请求/响应模式运行,服务器上的程序不能把自己的变化情况主动反映到客户端。由于http协议的约束,我们就只能通过JAVASCRIPT定时向服务器请求,每次把服务
5、器的进度显示到客户端。(AJAX的局部刷新等功能都是通过这种方法来实现的,微软的XMLHTTP对象)问题2.在做WEB开发的时候,可能需要在N个页面间传递参数,这些参数是一些对象,不是简单的文本,当然这些参数可以保存在服务器上的会话中,但如果太多的话,会影响服务器的性能,而我们的页面保存的参数又只能是文本?我们可以通过java的序列化办法来做,先把对象序列化,得到一个对象流,把对象流转换byte,byte是不能直接显示的,然后把这个byte通过base64编码得到一个可见的字符串,然后把这个字符串保存在页面中,页面提交的时候,把该字符串提交到服务器,服务器通过base64解码,然后反序列化,得
6、到对象,对对象进行操作。操作完毕,又可以重复进行上面的操作。(典型应用:JSF 的视图对象保存在客户端的时候),如果该串比较大的话,考虑压缩。Servlet用户请求,都是在用户请求,都是在Servlet中完成的。主要在系统中扮演一种控制器的角色中完成的。主要在系统中扮演一种控制器的角色继承继承 javax.servlet.http.HttpServlet 即可,然后在即可,然后在web.xml 中配置中配置public void destroy()super.destroy();url=null;protected void doGet(HttpServletRequest request,H
7、ttpServletResponse response)throws ServletException,IOException/*/protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException private String url;public void init(ServletConfig config)throws ServletException super.init(config);url=config.getInitPa
8、rameter(url);给大家一个例子Filter访问控制器,使用于访问控制,比如转换请求编码,权限控制等访问控制器,使用于访问控制,比如转换请求编码,权限控制等继承继承 javax.servlet.Filter 即可,然后在即可,然后在web.xml 中配置中配置public void init(FilterConfig filterConfig)throws ServletException encoding=filterConfig.getInitParameter(PARA_NAME);if(encoding=null)encoding=GBK;public void doFilte
9、r(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException chain.doFilter(request,response);public void destroy()给大家一个例子Listener相当于一种监控器模型javax.servlet.ServletContextListenerjavax.servlet.http.HttpSessionListener等接口只要实现这些接口,然后在web.xml 中注册即可.public class T
10、estSessionListener implementsjavax.servlet.http.HttpSessionListener public void sessionCreated(HttpSessionEvent arg0)arg0.getSession().setAttribute(s,new Timestamp(System.currentTimeMillis();System.out.println(TestSessionListener 创建);SingleInstance.getInstance().create();public void sessionDestroyed
11、(HttpSessionEvent arg0)Timestamp t=(Timestamp)arg0.getSession().getAttribute(s);SingleInstance.getInstance().destory();System.out.println(TestSessionListener 销毁,会话时间为:+(System.currentTimeMillis()-t.getTime()+毫秒);给大家一个例子TagLib 一种一种JSP页面标签技术,只要继承页面标签技术,只要继承 TagSupport 即可,然后在tld描述文件注册即可使用,主要实现JSP的页面展现等
12、,典型引用JSTL public class RepeatSumbitTokenTaglib extends TagSupport HTML HTML是一种标记语言,平时用得最多的就是form input select textarea等标记,这些标记都是为了让用户输入一个值或多个值的输入框。表单Form 属性主要有:Action,把内容提交给具体的URL,Method(GET/POST),enctype 值一般会有:application/x-www-form-urlencoded(标准);multipart/form-data(主要用户文件上传时候必须把form的enctype 设置该值)
13、表单中的元素除了disabled的输入标记外,其他的都将会提交。HTMLINPUT标记,根据不同的类型还生成不同的标记其中type,分别有radio,checkbox,file,text,button,reset,submit,select 标记,分为单选和多选,select标记中的 multiple 来控制单选和多选其实 select 标记的单选和radio,select 的多选与checkbox类似type=“file”就是显现文件上传的html标记,如果是有带有文件的输入框,需要上传文件的话,需要把form 的enctype=“multipart/form-data”,这样才能实现上传,
14、如果没有设置,是传不了文件的,如果有带文件上传的提交,在服务器端,通过request.getParameter(“”)是不能实现的得到参数,必须通过流解析才能得到上传的文件。Textarea标记,就是输入一个文本块的输入框,有rows cols等属性看看html的表单元素效果testhtml.jspJavaScriptJavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序
15、等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择,具有以下几个基本特点:是一种脚本编写语言JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程。它的基本结构形式与C、C+、VB、Delphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。基于对象的语言。JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己
16、已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。浏览器中有很多对象供我们调用,如windows,document等,不同的浏览器,有些对象是不一样的。JavaScript仅仅运行在浏览器中,是在我们客户端-浏览器中运行的,与服务器没有任何关系,只是和我们浏览器中的一些对象进行交互。JavaScript简单性JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计,从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型-变体型,并未使用严格的数据类型。安全性JavaScript是一种安全性语言,它不允许访问
17、本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。动态性的JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。跨平台性JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的
18、浏览器就可正确执行。从而实现了“编写一次,走遍天下”的梦想。查看一个JavaScript例子,图片移动,采用对象的方式编程,CSSCSS 是 Cascading Style Sheet 的缩写。译作层叠样式表单。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。引用方式第一种:是在把所有的CSS样式信息放在CSS文件中,然后在网页中引用这个CSS文件。第二种:在网页中定义CSS样式标记 第三种:在HTML标记上的style属性上直接定义CSS信息,如比较常用的CSS定义方式一种是包一组CCS标记定义为一个Class 如:.normaltextwidth:30px;font-color:red,然后在HTML的标记中引用该Class 如:一种是直接定义给指定的HTML标记,如果是这种方式定义,引用该CSS网页中的所有相关HTML都将采用定义的CSS风格,不建议这样使用,如,一般只对A标记,或者是body标记进行这样的定义:如 A:linkcolor:#333333;text-decoration:none;cursor:hand CSS标记的很多,针对不同的HTML还不一样,具体可以参考CSS的参考手册2.0Summary HTTP Servlet&JSP HTML CSS JavaScript欢迎大家提问!谢谢!Email:yijtulic