Java Web基础教程.ppt
《Java Web基础教程.ppt》由会员分享,可在线阅读,更多相关《Java Web基础教程.ppt(107页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Java WebJava Web基础教程基础教程广西大学 计算机与信息工程学院Web 应用程序特点oB-S结构应用程序结构应用程序n用户使用浏览器(用户使用浏览器(Browser)访问)访问Web应用程序,应用程序,如:用户注如:用户注册,通过浏览器填写用户信息册,通过浏览器填写用户信息n程序运行于程序运行于Web服务器(服务器(Server),),如:实现保存用户注册信如:实现保存用户注册信息功能的程序代码由息功能的程序代码由Web服务器完成。服务器完成。o动态网站的运行机制动态网站的运行机制(以用户注册为例以用户注册为例)2提交注册数据Web服务器浏览器5解释HTML文档4返回HTML文档
2、3执行注册应用程序1填写注册表单执行结果执行结果htmlhtml文档文档主流Web技术介绍ASP网页编程技术微软低端B-S结构、IIS(不跨平台)、解释型、简单(脚本与HTML混杂编码)、小型应用ASP.NET网页编程技术微软高端B-S结构、基于.net framework运行(不跨平台)、支持面向对象JavaWeb编程技术Sun公司倡导,许多公司参与制订的Web软件开发规范,与ASP.NET属同层次的软件开发技术跨平台,很容易在不同平台之间移置开源,便于Java开发人员学习和运用,由于技术标准开源,很多大公司将自己的产品绑定到Java技术规范上,如Oralce、IBM、JBOSS等Java
3、Web主要技术介绍oJava web技术主要包括两种技术:技术主要包括两种技术:JSP和和ServletnJSP技术技术oJSP:Java Server Pageso与与ASP类似,在传统的网页类似,在传统的网页HTML文件中,加入文件中,加入Java程序片段和程序片段和JSP标记就标记就构成了构成了JSP网页,简单易学。网页,简单易学。oJSP是一种编译性程序,首次执行时编译,再次访问时直接执行,效率高是一种编译性程序,首次执行时编译,再次访问时直接执行,效率高。nServlet技术技术oServlet:小服务程序,是一种特殊的:小服务程序,是一种特殊的Java类,该类可以被类,该类可以被W
4、eb服务器解释服务器解释执行,并生成执行,并生成HTML文档。文档。o优点:优点:Servlet技术是技术是JSP技术的基础,它比技术的基础,它比JSP的效率高、安全性更好。的效率高、安全性更好。o缺点:它利用输出缺点:它利用输出HTML语句来实现动态网页,不易实现面向表示的任务。语句来实现动态网页,不易实现面向表示的任务。oJSP与与Servlet相结合相结合n面向表示的任务采用面向表示的任务采用JSP技术,对于面向处理的任务采用技术,对于面向处理的任务采用Servlet技术。技术。Java Web程序环境配置oJava Web开发运行环境开发运行环境n开发环境开发环境o直接开发:直接开发:
5、JDK+Web服务器服务器+记事本记事本o工具开发工具开发:eclipse,NetBeans(JDK+Tomcat+可视化环境可视化环境)o辅助辅助工具:工具:Dreamweavern运行环境运行环境oJRE(Java运行环境运行环境)Web服务器服务器oJDK安装与安装与配置配置oWeb服务器介绍服务器介绍n支持支持Java Web的的Web服务器有很多服务器有很多oApache Tomcat开源开源免费免费oGlassFish开源免费,开源免费,JavaEE服务器服务器oJBoss开源免费,开源免费,JavaEE服务器服务器oBea WeblogicoIBM WebSphere oMacr
6、omedia JRunTomcat的目录结构oTomcat6的目录结构比的目录结构比Tomcat5有所精减有所精减n/bin:存放启动和停止存放启动和停止Tomcat服务的脚本文件服务的脚本文件n/conf:存放存放Tomcat服务器的各种配置文件,其中最重要的是服务器的各种配置文件,其中最重要的是server.xmln/lib:存放存放Tomcat服务器所需的各种服务器所需的各种JAR文件文件n/logs:存入存入Tomcat的日志文件的日志文件n/webapps:Web应用目录,将应用目录,将Web应用程序部署于此应用程序部署于此(每一每一个子文件夹对应一个个子文件夹对应一个Web应用应用
7、)n/work:Tomcat把由把由JSP生成的生成的Servlet放于此目录下放于此目录下o配置配置Web服务器服务器Tomcatn配置环境变量(配置环境变量(不是必须的不是必须的)oTomcat的启动文件会自动配置环境;的启动文件会自动配置环境;o如果采用命令启动方式,自动配置会失效,此时需要手工配置如果采用命令启动方式,自动配置会失效,此时需要手工配置环境环境变量变量浏览器与Web服务器的动态交互提交按钮,点此提交按钮,点此ButtonButton将将把把FORMFORM内的数据传送到服内的数据传送到服务器务器各种输入控件,接各种输入控件,接受用户输入。受用户输入。MethodMetho
8、d属性指定了属性指定了数据传送方式,可数据传送方式,可以是以是GETGET或或POSTPOSTGETGET方式将数据接在方式将数据接在URLURL后面传送给服务器端程序,后面传送给服务器端程序,如:如:http:/url?name1=abc&name2=defhttp:/url?name1=abc&name2=defPOSTPOST方式将数据放在方式将数据放在HTTPHTTP请求的请求头后面发送。请求的请求头后面发送。Servlet简介Servlet是java语言的CGI实现,与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率,更容易使用,功能更强大,具有更好的
9、可移植性。Servlet是一种服务器端的编程语言,是J2EE中比较关键的组成部分,Servlet技术的推出,扩展了Java语言在服务器端开发的功能,巩固了Java语言在服务器端开发中的地位,而且现在使用非常广泛的JSP技术也是基于Servlet的原理,JSP+JavaBeans+Servlet成为实现MVC模式的一种有效的选择。Servlet在本质上就是Java类,编写Servlet需要遵循Java的基本语法,但是与一般Java类所不同的是,Servlet是只能运行在服务器端的Java类,而且必需遵循特殊的规范,在运行的过程中有自己的生命周期,这些特性都是Servlet所独有的。另外Servl
10、et是和HTTP协议是紧密联系的,所以使用Servlet几乎可以处理HTTP协议各个方面的内容,这也正是Servlet收到开发人员青睐的最大原因。Servlet简介高效高效 传统的CGI程序以进程方式运行,而Servlet以线程方式运行。方便方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表 单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。功能强大功能强大可以完成很多传统的CGI程序很难做到的事情。可移植性好可移植性好ServletAPI具有完善的标准。Servlet基本结构 public class SomeServlet extends HttpSe
11、rvlet /必须继承自必须继承自HttpServletHttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException /使用使用“requestrequest”读取和请求有关的信息(比如读取和请求有关的信息(比如CookiesCookies)和表单数据)和表单数据 /使用使用“responseresponse”指定指定HTTPHTTP应答状态代码和应答头(比如指定内容类型,设应答状态代码和应答头(比如指定内容类型,
12、设置置CookieCookie)PrintWriter out=response.getWriter();/使用使用 outout把应答内容发送到浏览器把应答内容发送到浏览器 public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException Servlet生命周期服务器只创建每个Servlet的单一实例,每个用户请求都会引发新的线程。创建Servlet实例时,会调用init()方法,针对每个用户请求都会创建一个线程,该线程调用前面创建实例的
13、service()方法,由service()方法依据接收到的HTTP请求的类型,调用相应的doXxx方法,比如doGet(),最后调用destroy()方法销毁。Servlet生命周期Servlet工作原理Web服务器服务器doGet()()方法方法doPost()()方法方法HTTP GET请求请求HTTP POST请求请求响应响应响应响应客户机客户机Servlet容器环境在HTTP通信和web服务器平台之间实现了一个抽象层。Servlet容器负责把请求传递给Servlet,并把结果返回给客户。在使用Servlet的过程中,并发访问的问题由Servlet容器处理,当多个用户请求同一个Serv
14、let的时候,Servlet容器负责为每个用户启动一个线程,这些线程的运行和销毁由Servlet容器负责,而在传统的CGI程序中,是为每一个用户启动一个进程,因此Servlet的运行效率就要比CGI的高出很多。HttpServletRequest&HttpServletResponse doGet 和 doPost 方法的参数都是 HttpServletRequest和 HttpServletResponse 对象。其中HttpServletRequest 对象代表了客户端的请求,servlet通过这个对象获得客户 端 的 请 求 数 据;HttpServletResponse对象代表了ser
15、vlet对客户端请求的响应,sevlet用这个对象向客户端返回数据。HttpServletRequest&HttpServletResponse 通过通过HttpServletRequest对象获取客户请求数据对象获取客户请求数据:getParameter()()方法方法protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)Stringstr=request.getParameter(name);/参数为FORM内某输入控件的名字 通过通过HttpServletResponseHttpServletRe
16、sponse对象向客户端返回数据对象向客户端返回数据protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)PrintWriterout=response.getWriter();/获取输出流对象获取输出流对象 out.println();/通过输通过输出流对象向客户端返回出流对象向客户端返回HTMLHTML文本文本 Servlet处理用户请求简介单个值的读取单个值的读取 request.getParameter(“Param1”);多个值的读取多个值的读取 request.getParameterVal
17、ues();参数名的查找参数名的查找 request.getParameterNames();request.getParameterMap();原始表单数据的读取以及对上载文件的分析原始表单数据的读取以及对上载文件的分析 request.getReader();request.getInputStream();多字符集输入的读取多字符集输入的读取request.setCharacterEncoding(“utf-8”);Servlet设置响应报头普通设置方法普通设置方法setHeader(StringheaderName,StringheaderValue)HttpServletRespon
18、seHttpServletResponse提供的方法提供的方法setDateHeader(Stringheader,longmilliseconds)setIntHeader(Stirngheader,intheaderValue)setContentType(StringmimeType)setContentLength(intlength)servlet激活器 invoker org.apache.catalina.servlets.InvokerServlet 2 在在conf/web.xml下配置下配置servlet激活器invoker/servlet/*缺省servlet某个serv
19、let的映射路径仅仅是一个/在web.xml中找不到对应的servlet,将交给这个servlet处理访问静态的html文件或图片时,实际是这个缺省的Servlet处理的返回结果,当然它也可以对那些非法请求给出相应的处理结果缺省servletdefaultorg.apache.catalina.servlets.DefaultServlet default /HTTP无状态性HTTP是Hyper Text Transfer Protocol的缩写,顾名思义,这个协议支持着超文本的传输。那么什么是超文本呢?说白了就是使用HTML编写的页面。通常,我们使用客户端浏览器访问服务器的资源,最常见的UR
20、L也是以html为后缀的文件。因此,我们可以说超文本是网络上最主要的资源。既然HTTP协议的目的在于支持超文本的传输,更加广义一些就是支持资源的传输,那么在客户端浏览器向HTTP服务器发送请求,继而HTTP服务器将相应的资源发回给客户端这样一个过程中,无论对于客户端还是服务器,都没有必要记录这个过程,因为每一次请求和响应都是相对独立的,就好像你在自动售货机前投下硬币购买商品一样,谁都不会也不需要记住这样一个交易过程。一般而言,一个URL对应着唯一的超文本,而HTTP服务器也绝对公平公正,不管你是 Michael,还是Jordon,它都会根据接收到的URL请求返回相同的超文本。正是因为这样的唯一
21、性,使得记录用户的行为状态变得毫无意义,所以,HTTP协议被设计为无状态的连接协议符合它本身的需求。然而,随着时间的推移,人们发现静态的HTML着实无聊而乏味,增加动态生成的内容才会令Web应用程序变得更加有用。于是乎,HTML的语法在不断膨胀,其中最重要的是增加了表单(Form);客户端也增加了诸如脚本处理、DOM处理等功能;对于服务器,则相应的出现了CGI(Common Gateway Interface)以处理包含表单提交在内的动态请求。在这种客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也
22、要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。会话跟踪HTTP是无状态协议,它没有提供内置方法来对一系列由相同用户发起的请求进行识别。客户程序每次读取Web页面,都打开到Web服务器的单独的连接,并且服务器也不自动维护客户的上下文信息。因此如果Web应用程序如果想要为来自同一个用户的请求保留状态或数据的话(比如购物车程序,用户会在不同网页间切换来选购商品,因此要求Web应用程序必须要能记住一个用户选购的所有商品),这一般可以通过以下几个方法实现:CookieURL重写隐藏表单项目解决HTTP无状态的方法
23、Cookiecookie是是一些由服务器发向浏览器并且还能由浏览器读回来的小段的文本信息。Web服务器将它发送到浏览器,之后在访问同一网站或域时,浏览器又将它原封不动的返回。一般用于记录用户名密码、根据用户的偏好定制站点、定向广告。cookie的内容主要包括:名字,值,过期时间,路径和域。-域可以指定某一个域比如。-路径就是跟在域名后面的URL路径,比如/news。解决HTTP无状态的方法Cookie代码样例代码样例 Cookie userCookie=new Cookie(“uesr”,“uid1234”);userCookie.setMaxAge(60*60*24*265);/一年resp
24、onse.addCookie(userCookie);解决HTTP无状态的方法URL重写重写 利用URL重写技术,每个可能被用户点击的URL都会被动态修改,为URL附加上一个标志本次会话的ID。采用这种方式时,客户程序在每个URL的尾部添加一些额外数据,用来表示当前的会话,服务器将这个标识符与它存储的用户相关数据关联起来。比如:http:/url/xxx?jsessionid=123 解决HTTP无状态的方法隐藏的表单域隐藏的表单域所谓隐藏表单项目指的是HTML表单上不在客户端上显示的项目,它们在提交表单时也被送到服务器端。我们可以利用这一机制来维护会话信息。在提交表单时,要将指定的名称和值自
25、动包括在GET和POST数据中,隐藏域可以用来存储有关会话的信息。缺点:仅当每个页面都是由表单提交而动态生成时,才能使用这种方法。Servlet会话管理HttpSession APIHttpSessionAPI是一个基于Cookie和URL重写机制的高级会话状态跟踪接口:如果浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL改写方法。Servlet开发者无需关心细节问题,也无需直接处理Cookie或附加到URL后面的信息,API自动为Servlet开发者提供一个可以方便地存储会话信息的地方。会话状态跟踪会话状态跟踪API 在Se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java Web基础教程 Web 基础教程
限制150内