Servlet编程.ppt

上传人:ga****84 文档编号:381233 上传时间:2018-09-29 格式:PPT 页数:40 大小:316KB
下载 相关 举报
Servlet编程.ppt_第1页
第1页 / 共40页
Servlet编程.ppt_第2页
第2页 / 共40页
Servlet编程.ppt_第3页
第3页 / 共40页
Servlet编程.ppt_第4页
第4页 / 共40页
Servlet编程.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、Servlet编程,背景知识,常用的Web服务器IISApache通常的动态网页技术CGI (Common GateWay Interface)API常用的有(NSAPI,ISAPI)ASP(Active Server Page)PHP(Personal Home Page),什么是Servlet技术,Servlet是在Java2平台下取代CGI的一种技术是一个接收请求,作出响应的网络服务Java类,什么是 Servlet?,请求,客户端,响应,Servlet 运行于服务器上,Servlet 是一个用 Java 编写的程序,此程序在服务器上运行以处理客户端请求,Servlet简介,Servle

2、t是服务器小应用程序用来完成B/S架构下,客户端请求的响应处理平台独立,性能优良,能以线程方式运行Servlet API为Servlet提供了统一的编程接口,HTTP Servlet 基础知识,HttpServlet 类提供一个抽象类以创建 HTTP Servlet,public void doGet(HttpServletRequest req,HttpServletResponse res),doGet() 方法处理客户端作出的 GET 请求。,public void doPost(HttpServletRequest req,HttpServletResponse res),doPost

3、() 方法处理客户端作出的 POST 请求。,Tomcat的安装和运行,安装从http:/jakarta.apache.org/下载直接运行可执行文件安装,Tomcat的目录结构,bin/ 二进制可执行文件和脚本common/ Catalina本身和web应用可加载的类目录conf/ 配置文件目录lib/ 所有Web应用可见的类库目录logs/ 日志目录server/ 服务器所需的类库目录webapps/ Web应用所存放的目录work/ Tomcat的工作目录(存放临时文件),Tomcat配置文件,server.xml服务器的主配置文件web.xml定义所有Web应用的配置(缺省的Servl

4、et定义和MIME类型定义)tomcat-user.xml 定义了tomcat用户的信息,server.xml的层次结构, ,常用配置示例,加入新的Web应用在server.xml中Context位置加入更改端口号更改Connector中的port属性,示例 3-1 HelloWorld.java,需求:编写一个生成纯文本的简单的Servlet类。目的:了解Servlet的基本概念,在web.xml中配置servlet,在web.xml中配置servlet,让客户端浏览器可以访问 HelloWorld chap03.HelloWorld HelloWorld/hello,配置servlet-i

5、nvoker,为了方便调试servlet,可以通过配置servlet-invoker的方法,使得不需要配置servlet映射即可访问servlet程序,Servlet 的生命周期,Servlet 容器创建 Servlet 的一个实例Servlet 的生命周期就是指创建 Servlet 实例之后其存在的时间以及何时消失生命周期的 3个方法为:,init(),service(),destroy(),Servlet 的生命周期,生命周期的各个阶段为:,实例化,Servlet 容器创建 Servlet 的实例,初始化,该容器调用 init() 方法,服 务,如果请求 Servlet,则容器调用 ser

6、vice() 方法,销毁实例之前调用 destroy() 方法,销 毁,不可用,销毁实例并标记为垃圾收集,简单 Servlet 的结构,这是一个显示 HttpServletRequest 和 HttpServetResponse 接口一些方法的简单 Servlet,需要导入的包,用于处理 GET 请求的方法,创建设置文本格式和 PrintWriter 对象的方法以将数据发送给客户端,Servlet 的部署, clientservlet chapter2.ClientServlet clientservlet /clientservlet ,web.xml文件中配置Servlet,两个名称必须相

7、同,Servlet编程接口,所有Servlet编程都通过继承 javax.servlet.http.HttpServlet 实现请求处理方法:(分别对应http协议的7种请求)1、doGet响应Get请求,常用2、doPost响应Post请求,常用3、doPut用于http1.1协议4、doDelete用于http1.1协议5、doHead 仅响应Get请求的头部。6、doOptions用于http1.1协议7、doTrace用于http1.1协议实例的个数:1、在非分布的情况下,通常一个Servlet在服务器中有一个实例2、如果Servlet实现了SingleThreadModel,则该Se

8、rvlet会对每一个请求产生一个响应实例,练习 使用doGet和doPost方法处理请求示例3-2 3-3 3-4 3-5,要求:编写一个带有doGet和doPost方法的Servlet目的:掌握基本的Servlet请求处理技术要点:public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOExceptionpublic void doPost(HttpServletRequest req, HttpServletResponse res)throws Servle

9、tException,IOException,获取Http请求头,不同于表单数据请求头直接由浏览器设置,在初始的Get/Post请求行之后立即发送可以获得客户端/服务器端的一些配置信息获取请求头很简单,直接通过HttpServletRequest的getHeader方法。头的名称不区分大小写常用的头信息:getContentTypegetMethodgetRequestURIHost,练习:获取所有的HTTP请求头信息,获取所有的请求头示例3-6 GetRequestHeader.java,获取CGI变量,CGI变量:1.基于HTTP请求的行和头;2.来自于套结字 3.来自于服务器的安装参数可

10、以通过HttpServletRequest的相关方法来访问这些变量常用的CGI变量CONTENT_TYPEgetContentType()PATH_INFO-getPathInfo()REMOTE_ADDR-getRemoteAddr()QUERY_STRING-getQueryString()SERVER_NAME-getServerName()SERVER_PORT-getServerPort(),练习:获得CGI变量,编程,取得CGI变量示例3-7 GetCGIVar.java,设置HTTP响应头,利用servlet动态生成图片,示例3-8 Img.java,在servlet中跳转页面,

11、sendRedirect() 重新请求,清空属性forward() 接受HttpServletRequest和HttpServletResponse这两个类型的参数,能传递属性到跳转页面。注意两者的区别,练习sendRedirct和forward,示例3-10 Redirect.java示例3-11 Forward.java示例3-12 Test.java 获取跳转事request中的数据,通过Http报头解决中文问题,response.setContentType(“text/html;charset=GBK”);放置在response.getWriter()之前示例3-13 Chinese

12、HelloWorld.java解决servlet读取表单数据中文问题: request.setCharacterEncoding(“GBK”);,练习servlet处理表单数据中文,示例 3-14 ChineseForm.htm示例 3-15 ChineseHelloWord.java思考题:运用servlet实现一个登陆验证程序,处理Cookie,Http协议的无连接性要求出现一种保存C/S间状态的机制Cookie:保存到客户端的一个文本文件,与特定客户相关Cookie以“名-值”对的形式保存数据创建Cookie:new Cookie(name,value)可以使用Cookie 的setXX

13、X方法来设定一些相应的值setName(String name)/getName()setValue(String value)/getValue()setMaxAge(int age)/getMaxAge()利用HttpServletResponse的addCookie(Cookie)方法将它设置到客户端利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie,返回一个Cookie数组,练习:写/读Cookie,设置Cookie读取Cookie示例 3-16 LoginServlet.java示例 3-17 CookieTest.java,会话跟踪

14、,Session在某段时间一连串客户端与服务器端的“交易” 实质上,它是依靠Cookie来实现的在Jsp/Servlet中,如果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些 额外数据追加到表示会话的每个URL末尾,服务器在该标示符与其存储的有关的该会话的数据之间建立关联。如hello.jsp?jsessionid=1234可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器会自动终止会话。通过HttpSession来读写Session,HttpServletRequest中的会话管理方法,getRequestedSessionId():返回随客户端请求到来的会话

15、ID。可能与当前的会话ID相同,也可能不同。getSession(boolean isNew):如果会话已经存在,则返回一个HttpSession,如果不存在并且isNew为true,则会新建一个HttpSessionisRequestedSessionIdFromCookie():当前的Session ID如果是从Cookie获得,为trueisRequestedSessionIdFromURL():当前Session ID如果是由URL获得,为trueisRequestedSessionIdValid():如果客户端的会话ID代表的是有效会话,则返回true。否则(比如,会话过期或根本不存

16、在),返回false,HttpSession中的常用方法,getAttributeNames()/getAttribute()getCreateTime()getId()getMaxInactiveInterval()invalidate()isNew()setAttribute()setMaxInactivateInterval(),练习:Session操作,掌握Session的用法示例 3-18 SaveInfo.java示例 3-19 GetSession.java,ServletContext接口,Servlet context:用于存储同一个context中的其他servlet可以访

17、问的属性。常用方法:getRealPath()setAttribute()/getAttribute()/removeAttribute()getInitParameter()/getInitParameterNames(),将数据保存到ServletContext中,示例 3-20 FirstServlet.java示例 3-21 UserNumber.java,读取web.xml的参数,示例 3-22 InitParamsServlet.java,编写线程安全的servlet,对于全局变量一定要注意多线程的问题不要使用SingleThreadModel接口示例 3-23 MultiThreadServlet.java示例 3-24 MultiThread.htm注意线程同步synchronized的应用,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。