《Servlet服务器端编程.ppt》由会员分享,可在线阅读,更多相关《Servlet服务器端编程.ppt(38页珍藏版)》请在三一办公上搜索。
1、第三章 Servlet服务器端编程,3.3 Servlet编程接口,3.2 一个简单的Servlet程序,3.1 Sevlet基础知识,3.4 处理HTTP报头,3.5 处理Cookie,3.6 会话跟踪,3.7 ServletContext接口,3.0 任务引入,能力目标,熟练掌握Servlet类的编写能力;掌握配置Servlet映射的方法;掌握Servlet多线程处理方法;具体技能:处理HTTP报头的技能;处理Cookie的技能;处理Session的技能;编写线程安全的Servlet的技能。,态度目标,问题解决能力;主动性;理解能力。,本章知识点,Servlet简介 Tomcat的安装、配
2、置及布署;配置Servlet 映射;请求对象request与应答对象response简介;常用request的请求参数;会话对象Cookie与Session的实现;全局对象ServletContext类的使用。,任务引入,美国Loucs公司预计开发的客户投保系统,并不是一个大众网站系统,所以在客户自行进行投保操作时要进行身份验证的工作,要求系统通过不同的客户操作进行显示不同客户的数据信息。本章节的Servlet技术可以方便的进行后台程序的控制,并且能够与服务器端的程序(如数据库、WebServices等)通信,所以简单的验证工作更轻而易举。,3.1 Servlet基础知识,3.1.3 Tomc
3、at的安装、运行及配置,3.1.2 Servlet简介,3.1.1 背景知识,3.1.1 背景知识,常用的Web服务器:IIS;Apache;Weblogic;Websphere;JBOSS。常用开发工具:JBuilder;Eclipse;MyEclipse;NetBeans。,通常的动态网页技术:CGI(Common GateWay Interface);API常用的有(NSAPI,ISAPI);ASP(Active Server Page);ASP.NET;PHP(Personal Home Page);Servlet;JSP(Java Server Page)。,3.1.1 背景知识,3
4、.1.2 Servlet简介,Servlet是在Java2平台下取代 CGI 的一种技术,是一个接收请求,作出响应的网络服务Java类。Servlet是服务器小应用程序;Servlet用来完成B/S架构下,客户端请求的响应处理;Servlet平台独立,性能优良,能以线程方式运行;Servlet API为Servlet提供了统一的编程接口。,3.1.3 Tomcat的安装、运行及配置,一、安装 从 http:/下载,直接运行可执行文件安装 二、Tomcat的目录结构 bin/二进制可执行文件和脚本 common/Catalina本身和web应用可加载的类目录 conf/配置文件目录 lib/所有
5、Web应用可见的类库目录 logs/日志目录 server/服务器所需的类库目录 webapps/Web应用所存放的目录 work/Tomcat的工作目录(存放临时文件),3.1.3 Tomcat的安装、运行及配置,三、Tomcat配置文件 server.xml 服务器的主配置文件 web.xml 定义所有Web应用的配置(缺省的Servlet定义和MIME类型定义)tomcat-user.xml 定义了tomcat用户的信息,3.1.3 Tomcat的安装、运行及配置,四、server.xml的层次结构 server.xml的层次结构 五、常用配置示例 加入新的Web应用:在server.x
6、ml中Context位置加入下列参数。更改端口号 更改Connector中的port属性,3.2 一个简单的Servlet程序,3.2.3 Servlet的生命周期,3.2.2 在web.xml中配置servlet,3.2.1 案例,3.2.1 案例,需求:编写一个生成纯文本的简单的Servlet类。目的:了解Servlet的基本概念 案例3-1:一个简单的Servlet类,3.2.2 在web.xml中配置servlet,在web.xml中配置servlet,让客户端浏览器可以访问:HelloWorld chap03.HelloWorld HelloWorld/hello 为了方便调试ser
7、vlet,可以通过配置servlet-invoker的方法,使得不需要配置servlet映射即可访问servlet程序。,3.2.3 Servlet的生命周期,生命全过程:加载实例化初始化处理请求退出服务 API中的过程:init()public void init(ServletConfigconfig)throws ServletExceptionservice()public void service(ServletRequestreq,ServletResponseres)throws ServletException,destroy()public void destroy(),3.
8、3 Servlet编程接口,3.3.2 Servlet编程案例,3.3.1 Servlet编程接口,所有Servlet编程都通过继承 实现 请求处理方法:(分别对应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实现了Sin
9、gleThreadModel,则该Servlet会对每一个请求产生一个响应实例。,3.3.1 Servlet编程接口,3.3.2 Servlet编程案例,案例:使用doGet和doPost方法处理请求 要求:编写一个带有doGet和doPost方法的Servlet 目的:掌握基本的Servlet请求处理技术 要点:public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException public void doPost(HttpServletRequest req
10、,HttpServletResponse res)throws ServletException,IOException 案例3-2:案例3-3;案例3-4;案例3-5,3.4 处理HTTP报头,3.4.2 获取CGI变量,3.4.1 获取Http请求头,3.4.3 设置HTTP响应头,3.4.4 Servlet的跳转,3.4.1 获取Http请求头,不同于表单数据;请求头直接由浏览器设置,在初始的Get/Post请求行之后立即发送 可以获得客户端/服务器端的一些配置信息 获取请求头很简单,直接通过HttpServletRequest的getHeader方法。头的名称不区分大小写,常用的头信息
11、如下:getContentType getMethod getRequestURI Host 案例3-6:获取所有的HTTP请求头信息,3.4.2 获取CGI变量,CGI变量:1.基于HTTP请求的行和头;2.来自于套结字 3.来自于服务器的安装参数 可以通过HttpServletRequest的相关方法来访问这些变量 常用的CGI变量 CONTENT_TYPEgetContentType()PATH_INFO-getPathInfo()REMOTE_ADDR-getRemoteAddr()QUERY_STRING-getQueryString()SERVER_NAME-getServerNa
12、me()SERVER_PORT-getServerPort()案例3-7:编程获取CGI变量,3.4.3 设置HTTP响应头,3.4.4 Servlet的跳转,在Servlet中通过验证后经常需要跳转到其他页面显示 1.SendRedirect方式 response.sendRedirect(url)案例3-8;例3-9;2.Forward方式 request.getRequestDispatcher(url).forward(request,response)案例3-10;案例3-11。,3.5 处理Cookie,3.5.2 Cookie案例,3.5.1 Cookie基础,Http协议的无连
13、接性要求出现一种保存C/S间状态的机制;Cookie:保存到客户端的一个文本文件,与特定客户相关;Cookie以“名-值”对的形式保存数据;创建Cookie:new Cookie(name,value);可以使用Cookie 的setXXX方法来设定一些相应的值。setName(String name)/getName()setValue(String value)/getValue()setMaxAge(int age)/getMaxAge(),3.5.1 Cookie基础,3.5.1 Cookie基础,利用HttpServletResponse的addCookie(Cookie)方法将它设
14、置到客户端;利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie,返回一个Cookie数组。,3.5.2 Cookie案例,学习Cookie相关案例,学习如何设置及读取Cookie。设置Cookie案例:3-12 读取Cookie案例:3-13,3.6 会话跟踪,3.6.2 HttpServletRequest中的 会话管理方法,3.6.1 会话跟踪,3.6.3 HttpSession中的常用方法,3.6.1 会话跟踪,Session 在某段时间一连串客户端与服务器端的“交易”;实质上,它是依靠Cookie来实现的。在Jsp/Servlet中,如
15、果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些 额外数据追加到表示会话的每个URL末尾,服务器在该标示符与其存储的有关的该会话的数据之间建立关联。如hello.jsp?jsessionid=1234 可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器会自动终止会话。通过HttpSession来读写Session。,3.6.2 HttpServletRequest中的会话管理方法,getRequestedSessionId():返回随客户端请求到来的会话ID。可能与当前的会话ID相同,也可能不同。getSession(boolean isNew):如果会话已经存
16、在,则返回一个HttpSession,如果不存在并且isNew为true,则会新建一个HttpSession。isRequestedSessionIdFromCookie():当前的Session ID如果是从Cookie获得,为true。,3.6.2 HttpServletRequest中的会话管理方法,isRequestedSessionIdFromURL():当前Session ID如果是由URL获得,为true。isRequestedSessionIdValid():如果客户端的会话ID代表的是有效会话,则返回true。否则(比如,会话过期或根本不存在),返回false。,getAtt
17、ributeNames()/getAttribute()getCreateTime()getId()getMaxInactiveInterval()invalidate()isNew()setAttribute()setMaxInactivateInterval()Session用法案例:案例3-14;案例3-15,3.6.3 HttpSession中的常用方法,3.7 ServletContext接口,3.7.2 案例分析,3.7.1 ServletContext接口,3.7.1 ServletContext接口,Servlet context:用于存储同一个context中的其他servl
18、et可以访问的属性。常用方法:getRealPath()setAttribute()/getAttribute()/removeAttribute()getInitParameter()/getInitParameterNames(),3.7.2 ServletContext接口案例,ServletContext接口案例案例一:3-16案例二:3-17案例三:3-18,Servlet含义;Tomcat的安装、配置及布署;配置Servlet 映射;请求对象request与应答对象response;常用request的请求参数;会话对象Cookie与Session的实现;全局对象ServletContext类的使用。,本章小结,设计:Web后台登录 要求:该功能使用Servlet完成;完成登录界面设计(至少包括用户名及口令两项内容);由Servlet连接数据库判断客户的有效性;当登录成功显示欢迎界面,登录失败重新导向到登录界面;,实训作业,