六、JavaWeb程序开发总结JavaWeb程序开发总结6.1JavaWeb程序开发总结6.2JSP程序开发作业Java的运行机制本地计算机系统Java虚拟机(JVM).class二进制字节码文件.javaJava源程序文件编译JVMJREJ2SDKJVM加上基础的API,可以运行Java程序,但是不能进行程序的开发JVM、JRE加上所有的API,编译、开发工具和文档,用于Java程序的开发Java的环境Java的开发工具Javac:Java编译器,用来将java程序编译成Bytecode。Java:Java解释器,执行已经转换成Bytecode的Java应用程序。Jdb:Java调试器,用来调试java程序。Javap:反编译,将类文件还原回方法和变量。Javadoc:文档生成器,创建HTML文件。Appletviewer:Applet解释器,用来解释已经转换成Bytecode的java小应用程序。Web方式的网络应用HTTP协议的工作方式建立连接发出HTTP请求发出HTTP响应断开连接HTTP协议Web方式的网络应用HTTP协议的主要特点典型的C/S结构的工作方式;简单快速、数据传输较少;可以通过HTTP协议传输任意类型的数据对象;HTTP是面向一次连接的网络协议;HTTP协议是无状态协议;HTTP协议HTTP协议一个HTTP请求报文由请求行(requestline)、请求头部(header)、空行和请求数据4个部分组成开发Web应用的常用方式Applet由Java语言编写Applet的源程序,然后编译成字节代码。当浏览器解译HTML脚本时,按照标记的URL向服务器建立发送请求,通过HTTP协议得到JavaApplet的字节代码。浏览器启动Java虚拟机,解释执行JavaApplet的字节代码。Java语言的Web开发方式HTTP回复HTTP请求浏览器WebServerAppletJVMApplet开发Web应用的常用方式Java语言的Web开发方式开发Web应用的常用方式Servlet/JSPServlet运行在服务器端的Java程序JSP(JavaServerPageJava服务页面)运行在服务器端的用Java语言编写的脚本程序和其他脚本语言(PHP,ASP)的直接解释执行不同,JSP的运行需要先将JSP的脚本编译为Servlet然后运行在服务器端的Java虚拟机上HTTP请求客户端WebServerJava虚拟机HTTP回复ServletJsp脚本开发Web应用的常用方式Java语言的Web开发方式Java的Web开发架构“HTML”+Script+各种媒体浏览器客户端服务器服务端客户端接口引擎服务端引擎与程序数据库文件库资源库……HTTP协议网络HTTP协议Java的Web开发架构Java的三个版本:J2SE:针对普通PC应用的J2SE(Java2StandardEdition);J2EE:针对企业网应用的J2EE(Java2EnterpriseEdition);J2ME:针对嵌入式设备及消费类电器的J2ME(Java2MicroEdition)三个版本;JavaWeb开发的三个层次:Servlet/JSP轻量级J2EE开发EJB开发J2EE架构容器:Web容器、EJB容器、Applet容器、客户端容器组件:Servlet、JSP、EJB、JDBC、JMS、JNDI、JTA、JCA、JXM、JAAS、JACC、JAXR、SAAJ轻量级J2EE开发框架表示层Struts+TilesMVC的开发模式业务层SpringAOP的编程模式持久层Hibernate域模块层ORM的数据库访访问模式ServiceLocatorDAO类Servlet的基本概念Servlet角色--Web中间件请求响应DataBase旧系统Java应用B2B应用……JDBCJNIRMIXML……Web服务器客户端Servlet的基本结构Servlet的工作过程Servlet的工作过程编写Servlet响应HTTP请求的Servlet需要继承HttpServlet类它是GenericServlet类的扩充,提供了一个处理HTTP协议的框架同样需要实现三个方法:init():其中包含对Servlet进行初始化的代码service():其中包含对用户请求进行处理的方法通过HttpServletRequest对象得到用户Http请求通过HttpServletResponse对象发送处理后的Http响应destroy():其中包含卸载Servlet时需要的代码编写HTTPServlet编写Servlet在HttpServlet类中对service方法进行了扩充以响应不同的HTTP请求HttpServlet类中的service方法包括doGet()doPost()doDelete()doHead()doOptions()doPut()doTrace()不同的HTTP请求会发往不同的service方法,只有无法识别的HTTP请求才需要发往service()方法。编写HTTPServlet编写Servlet运行Servelt的方式安装JDK和应用服务器(Resin)配置好应用服务器建立存放程序的Web目录将编译好的class文件考入到Web目录下的相应文件夹在web.xml里对Servlet进行设置虚拟路径的设置初始化参数的设置在浏览器中通过URL访问Servlet运行Servlet使用Eclipse开发Web应用安装JDK安装Resin安装Eclipse配置EclipseWorkSpace设置Resin集成环境创建JavaWebProject配置Resin配置Web应用运行ServletWeb的目录结构classes文件夹:此应用中编译生成所有class文放在此处lib文件夹:以JAR/zip形式表现的库文件和所有需要用到的第三方Java库文件存放此处web.xml文件:此应用的初始化配置文件使用web.xml配置应用Web.xml是应用程序自己的配置文件,采用XML格式的文件描述了Web应用的各类配置Servlet的配置和定义初始化参数的定义和配置初始化页面的定义出错页面的配置其他灵活的配置动态HTML的生成Servlet只是封装了Web应用处理的外壳,负责接收用户请求,给用户反馈响应;响应的结果以HTML的形式进行展现,HTML只是展响应结果的一个样式描述;如何处理用户的请求,仍需要程序逻辑来实现,使用标准的Java程序完成相应的逻辑处理,完成用户的请求,按照用户的需求反馈正确的响应,这才是Web应用核心;接收用户的输入用户输入的处理由客户端和服务器端两部分完成客户端通过表单等方式采集并提交用户的输入;服务器端的Servlet对客户端提交的表单数据进行分析和封装;业务逻辑通过Request对象的相应方法获得用户输入并进行处理;采集用户输入的三种方式固定参数输入动态参数输入URL参数输入从servlet读取请求获取HTTP请求的详细信息,可以更加准确的获取用户请求的详细信息,并进行具体的处理处理多语言问题处理浏览器兼容问题处理服务器安全问题处理用户会话获取HTTP的请求包括两部分,获得请求行和请求请求头从servlet返回响应Servlet通过处理状态行及响应头可执行各种处理,控制和用户的交互以及浏览器的响应方式拒绝用户的访问将用户转送到其它网站标明附加的文档是图像、Word文件或HTML文件处理用户的会话对HTTP响应的处理包括两部分,对响应状态的处理和对响应头的处理保持用户会话HTTP协议无状态记忆和一次连接的的特点导致Servlet不能自动记忆用户的访问状态;Servlet的线程运行的特点,也不允许Servlet自动记忆用户的访问状态,否则将出现线程不安全的情况;Web程序保持用户会话方法都是将用户会话信息保存在浏览器端,当用户下次访问的时候,通过浏览器告知服务器上次会话的状态Web程序保持用户会话的三种通用方式CookieURL重写隐藏表单域Cookie的工作方式服务器在发给用户浏览器的HTTP响应头中包含所要相应的Cookie信息;浏览器接收到Cookie后,将Cookie保存在客户端的文件系统中;浏览器再次访问该Web服务器时,自动在发往服务器的HTTP请求头中的加入该服务器所保存的Cookie;服务器通过Cookie得到用户上次访问的状态;Cookie的概念在Servlet中处理Cookie建立cookie:newCookie(name,value)在响应头中放置cookie:HttpServletResponse.addCookie();从请求中读取cookie:HttpServletRequest.getCookies();得到Cookie的属性getValue()得到Cookie的值getName()得到Cookie的名字getPath()得到Cookie的路径getDomain()得到Cookie的域名getMaxAge()得到Cookie的失效时间Session使用Cookie保持用户会话比较麻烦,同时将大量用户的隐私信息放在Cookie中保存也非常不安全;在Servlet中提供了Session机制,通过Session用以保持用户会话;Session指的是用户操作某个应用的时间概念,例如从用户打开浏览器访问某个网站到用户关闭浏览器离开该网站,这就是一个Session,或者是一个用户会话;Session的实现是以Cookie为基础的;Session的基本概念Session的工作方式Servlet已经生成一个可以唯一标识用户Session的序列号-SessionId;将SessionId作为Cookie的值反馈给浏览器;以SessionId为文件名,在服务器文件系统(或内存中)中建立一个文件,保存用户会话的内容;当浏览器将SessionId作为Cookie发送给Web服务器时,Web服务器根据SessionId查找相应的文件,并读取文件的内容,获得用户会话;Session的基本概念在Servlet中处理Session查找与当前请求相关关的HttpSession对象HttpServletRequest.getSession,查找session查找保存的会话信息session.getAttribute,从session中提取之前存储的值对会话信息进行处理session.setAttribute设置属性值session.removeAttribute取消属性值session.invalidate使会话不活动JSP的概念Java服务器页面(JavaServerPages);在传统的网页HTML文件(*.htm,*.html)中加入Java程序片断(Scriptlet)和JSP标记,就构成了JSP网页(*.jsp);将静态HTML与动态内容相结合,用%%将动态部份的代码括起来。%StringuserName=“abc”;out.println(userName);%JSP的基本概念JSP的执行过程接收客户端发出的HTTP请求;JSP容器将JSP转译成Servlet的源代码;将产生的Servlet源代码编译成Class加载Class到内存执行;把处理结果封装成结果响应至客户端。JSP程序的执行分为两个阶段:转译期(TranslationTime)和请求期(RequestTime)转译期:JSP网页转译成Servlet类请求期:Servlet类执行后,响应结果至客户端反复调用的时候,如果已经转译过一次,就不会再次进行,而是直接执行编译后的的Servlet类JSP的基本概念JSP的基本概念JSP/Servlet的对应关系所有