ImageVerifierCode 换一换
格式:DOC , 页数:58 ,大小:3.51MB ,
资源ID:2909191      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2909191.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(servlet完整课件.doc)为本站会员(tangtianxu1)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

servlet完整课件.doc

1、技术总是有一个演变过程Java servlet jsp 回顾一下我们现有的技术java 基础(面向对象,集合,线程,文件,网络)jdbc (java 的数据库编程)oracle / mysql / sqlserverhtml css javascript (web 开发 ) -网页设计xml JAVAEE、JAVASE、JAVAME(J2EE,J2SE,J2ME) java ee 体系的介绍(十三种技术 规范),规范即接口 servlet 项目演示 (小服务程序)英 svlt web 开发介绍 静态页面 (html) 动态页面1. 用户可以输入数据,和页面交互(注册,购物,发帖子,付款.)2.

2、 不同时间打开页面,内容是变化.3. 目前比较流行的做动态页面的技术 ( servlet/jsp , php , , asp, cgi ) 动态网页技术的比较(了解 ) bs 和 cs 的比较(1)BS :browser server 浏览器服务器 (用 HttpWatch Professional 抓浏览器包)(2)cs client server 客户服务 为什么需要 web 服务器/web 究竟是干什么的?模拟一个 web 服务器 MyWebServer.javaimport java.io.*;import .*;public class MyWebServerpublic stat

3、ic void main(String args) throws ExceptionServerSocket ss=new ServerSocket(80);Socket s=ss.accept();/提示一句话System.out.println(“在 9999 上等待连接.“);OutputStream os=s.getOutputStream();BufferedReader br=new BufferedReader(new FileReader(“d:hello.html“);String buf=“;while(buf=br.readLine()!=null)os.write(bu

4、f.getBytes();/关闭流br.close();os.close();s.close(); 通过 tomcat 来讲解 BS 结构 安装 tomcat 服务器 (tomcat 是 servlet 的容器)(1) 解压即可(2) 配置在环境变量中添加JAVA_HOME = 指向你的 jdk 的主目录(并不是 bin 文件目录)( dir - startup - shutdown - catalina start - catalina stop ) 在不配置 JAVAHOME 的前提下启动 tomcat在 startup.bat 的第 25 行中添加 set JAVA_HOME=JKD 路

5、劲 bat 是 windows 或者 dos 下的脚本(自己加的)(3) 启动 tomcat 服务器到 tomcat 主目录下 bin/startup.bat(4) 验证是否安装成功http:/localhost:8080(8080 是默认端口如果该端口已经被占用需要修改端口) tomcat 安装后问题解决(1)tomcat 无法正常启动的原因分析1. JAVA_HOME 配置错误,或者没有配置 2. 如果你的机器已经占有了 8080 端口,则无法启动, 解决方法(1) 你可以 8080 先关闭netstat an netstat anb 来查看谁占用该 8080(2) 主动改变 tomcat

6、 的端口.到 conf/server.xml 文件中修改server.xml 的端口号)protocol=“org.apache.coyote.http11.Http11NioProtocol“ redirectPort=“8443“/(3) 能够正常启动,但是会导航到另外一个页面.去修改工具-管理加载项,把默认的导航给禁用即可.(4) 在访问 tomcat 时候,一定保证 tomcat 服务器是启动 tomcat 的目录结构文件bin: 启动和关闭 tomcat 的 bat 文件conf: 配置文件 server.xml : 该文件用于配置和 server 相关的信息, 比如 tomcat

7、启动端口后,配置Host, 配置 Context 即 web 应用 web.xml : 该文件配置与 web 应用(web 应用就相当于是一个 web 站点)tomcat-users.xml: 该文件用户配置 tomcat 的用户密码 和 权限lib 目录: 该目录放置运行 tomcat 运行需要的 jar 包logs 目录:存放日志, 当我们需要去查看日志的时候,很有用!,当我们启动 tomcat 错误时候,可以查询信息.webapps 目录: 该目录下,放置我们的 web 应用(web 站点), 比如:建立 web1 目录 下面放置我们的 html 文件 jsp 文件 图片. 则 web1

8、 就被当做一个 web 应用管理起来( 特别说明 tomcat 6.0 以后支持 tomcat 5 版本 还有别的设置)work: 工作目录: 该目录用于存放 jsp 被访问后 生成的对应的 server 文件 和.class 文件 如何去访问一个 web 应用的某个文件 首页面设置及目录规范结构现在我们要求:把 hello.html 文件设置成 该 web 应用的首页,则需要把 web 应用的目录格式做的更加规范:在 web 文件夹下配置 WEB-INF 文件夹在 web.xml 文件中添加配置的代码:hello1.html通过 http:/localhost:8088/web1 来访问 h

9、ello1.htmlweb-inf 目录下的 classes 目录将来是存放 class 文件lib 目录将来时存放 jar 文件web.xml 配置当前这个 web 应用的信息. tomcat 如何去管理虚拟目录需求: 当我们把 web 应用放到 webapps 目录,tomcat 会自动管理,如果我们希望 tomcat可以管理其它目录下的 web 应用?- 虚拟目录配置我在 d 盘有一个 web 应用. 虚拟目录配置步骤: 找到 server.xml 文件 (conf) 编辑 host 节点 添加 Context path在 server.xml 中添加:myweb2:是访问时输入的 we

10、b 名,实际取出的是 web2 中的资源“d:web2“:绝对路径下 web2 中存放资源如:hello2.html实际访问时输入的地址:http:/localhost:8088/myweb2/hello2.html绝对路径:从根分区找某个文件相对路径:从该文件位置去找另一个文件 需要重启 tomcat,才能生效.(因为是采用的 dom 技术讲信息加载到内存中) context 的几个属性的说明path:docbase:reloadable ;如果设为 ture ,表示 tomcat 会自动更新 web 应用,这个开销大,建议在开发过程中,可以设为 true, 但是一旦真的发布了,则应当设为

11、false;upackWAR: 如果设为 ture ,则自动解压,否则不自动解压.:打 war 包 cd:d/web2 然后 jar cvf web2.war *:浏览打好的 war 包 Deploy 发布后会在 webapps 中自动生存改文件 配置域名我们看和一个如何配置自己的主机名:我们在实际访问网站的过程中,不可能使用 http:/localhost:8080/web 应用/资源名 的方式去访问网站,实际上使用类似http:/ 或者http:/ 的方式去访问网站,这个又是怎么实现的呢 ?看看 ie 浏览器访问一个 web 站点的流程.实现的步骤如下:(1) 在 C:WINDOWSsys

12、tem32driversetc 下的 host 文件 添加 127.0.0.1 (2) 在 tomcat 的 server.xml 文件添加主机名 (3) 在 d:web3 加入了一个 /WEB-INF/web.xml 把 hello2.html 设为首页面如果连端口都不希望带,则可以吧 tomcat 的启动端口设为 80 即可.(4) 重启生效 tomcat 体系的再说明 图:如何配置默认主机:在 tomcat/conf/server.xml 文件 为什么需要 servlet 技术?比如需求:我们希望用户发贴,用户还可以回复 这样一些和用户可以交互的功能,用普通的 java 技术就完成不了,

13、 sun 就开发了 servlet 技术供程序员使用. servlet 的介绍 servlet 其实就是 java 程序(java 类) 该 java 程序(java 类)要遵循 servlet 开发规范(API) serlvet 是运行在服务端 serlvet 功能强大,几乎可以完成网站的所有功能 是学习 jsp 基础 tomcat 和 servlet 在网络中的位置 servlet 的生命周期是怎样的/servlet 究竟是怎样工作的UML 时序图帮助大家理解参看 execel 面试题: 请简述 servlet 的生命周期(工作流程)答:标准版本:WEB 服务器首先会检查是否已经装载并创建

14、了该 servlet 实例对象。如果是直接进行第步,否则执行第步。装载并创建该 Servlet 的一个实例对象。调用 Servlet 实例对象的 init()方法。创建一个用于封装 HTTP 请求消息的 HttpServletRequest(英 rkwest)对象和一个代表HTTP 响应消息的 HttpServletResponse(英 rspns)对象,然后调用 service()方法并将请求和响应作为参数传递进去。WEB 应用被停止或重启之前,Servlet 引擎将卸载 Servlet,在卸载之前调用 Servlet 的destroy()方法1. 当 serlvet 第一次被调用的时候,会

15、触发 init 函数,该函数会把 servlet 实例装载到内存.init 函数只会被调用一次2. 然后去调用 servlet 的 service 函数3. 当第二次后访问该 servlet 就直接调用 service 函数.4. 当 web 应用 reload (英 rild)或者 关闭 tomcat(英 tmkt) 或者 关机 都会去调用destroy(英 dstr)函数,该函数就会去销毁 serlvet5. Servlet 的生命周期当客户端第一次向 web 服务器发出一个 servlet 请求时,web 服务器将会创建一个该servlet 的实例,并且调用 servlet 的 init

16、()方法;如果当服务器已经存在了一个 servlet 实例,那么,将直接使用此实例;然后再调用 service()方法,service()方法将根据客户端的请求方式来决定调用对应的 doXXX()方法;当 web 应用 reload 或者 关闭 tomcat 或者 关机,web 服务器将调用 destroy()方法,将该 servlet 从服务器内存中删除。生命全过程:1.加载2.实例化3.初始化4.处理请求5.退出服务 开发 servlet 有三种方法 (1) 实现 Servlet 接口(2) 通过继承 GenericServlet (英 dnerk) adj. 类的;一般的(3) 通过继承

17、 HttpServlet 实现 servlet 接口的方式需求如下: 请使用实现 接口的方式,来开发一个 Servlet ,要求该 Servlet 可以显示Hello,world,同时显示当前时间.步骤1. 在 webapps 下建立一个 web 应用 hspWeb12. 在 hspWeb1 下建立 WEB-INF-web.xml web.xml 可以从 ROOT/WEB-INF/web.xml拷贝 3. 在 WEB-INF 下建立 classes 目录( 我们的 Servlet 就要在该目录开发.), 建立 lib 文件夹4. 开发 MyServlet.javapackage com.hsp

18、;import javax.servlet.*;import javax.servlet.http.*; 为了能将 servlet-api.jar 包引入,需要配置环境变量变量值; E:tomcatapache-tomcat-6.0.20libservlet-api.jar 记得带上文件名import java.io.*;class MyFirstServlet implements Servlet/该函数用于初始化 servlet,就是把该 servlet 装载到内存中/该函数只会被调用一次public void init(ServletConfig config)throws Servle

19、tException/得到 ServletConfig 对象public ServletConfig getServletConfig()return null;/该函数是服务函数,我们的业务逻辑代码就是写在这里/该函数每次都会被调用public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException/该函数时得到 servlet 配置信息public java.lang.String getServletInfo()return null;/销毁该 serv

20、let,从内存中清除 ,该函数被调用一次public void destroy()5. 根据 Servlet 规范,我们还需要部署 ServletMyFirstServletcom.hsp.MyFirstServlet 注意:后面不要带.javaMyFirstServlet/ABC服务器调用流程: http:/localhost:8088/ABC- -6. 在浏览器中测试在浏览器中输入http:/localhost:8088/hspweb1/ABC7. 分析一下自己写可能出现的错误(1) MyFirstServlet 名字不一样 (启动 tomcat 错误)(2) com.hsp.MyFirs

21、tServlet 写成 MyFirstServlet.java,会报告500(3) 资源名自己写错http:/localhost:8088/hspweb1/错误的资源 url-pattern404 错误补充: 如果使用 javac 去编译一个 java 文件,则需要带命令参数javac d . java 文件补充: 如何不重启 tomcat,就指定去 reload 一个 web 应用 ,方法:进入到 tomcat 的 manager:点击 reload 即可.课堂练习自己使用 实现 Servlet 接口的方法,开发一个 Servlet,该 servlet 可以输出自己的名字在显示当前日期. 使

22、用 GenericServlet 开发 servlet了解即可:案例 :package com.hsp;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class MyGenericServlet extends GenericServletpublic void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOExceptionres.getWriter().println(“h

23、ello,world,i am geneirc servlet“);将该 Servlet 部署到 web.xml 文件中:MyGenericServletcom.hsp.MyGenericServletMyGenericServlet/MyGenericServlet 使用继承 HttpServlet 的方法来开发 Serlvet(1) 在软件公司 90%都是通过该方法开发.(2) 举例说明; 还是显示 hello,world 当前日期代码:package com.hsp;import javax.servlet.*;import javax.servlet.http.*;import jav

24、a.io.*;public class MyHttpServlet extends HttpServlet/在 HttpServlet 中,设计者对 post 提交和 get 提交分别处理/回忆 ,默认是 getprotected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOExceptionresp.getWriter().println(“i am httpServet doGet()“);protected void doPost(HttpServ

25、letRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException resp.getWriter().println(“i am httpServet doPost() post name=“+req.getParameter(“username“);还有一个 login.htmlu: 小结 get 提交 和 post 的提交的区别 从安全看 getpost Get 可以保留 uri 中的参数,利于收藏 使用 ide 来开发 servlet使用 ide (eclipsejava se+myecl

26、ipse插件 可以支持 jsp/servlet/struts/hibernate/spring)开发servlet需求:使用 ide 开发一个 servlet ,该 servlet 显示 hello,world, 和当前日期 开发步骤:(1) 建立 web 工程(2) 在 Src 目录下创建了一个包 com.hsp.servlet(3) 开发一个 ServletMySerlvet 的代码:public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOEx

27、ception response.setContentType(“text/html“);PrintWriter out = response.getWriter();out.println(“hello “+new java.util.Date().toString() );public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException this.doGet(request, response);(4) 配置 tomcat点击 ad

28、d 选择要发布到那个服务器即可:(5) 启动 tomcat1. 使用我们的老方法2. 从 eclipse 启动 tomcat(6) 在使用 eclipse 开发 servlet 可能会出现一个很麻烦事情,版本不一致错误.java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class com.hsp.servlet.MyServlet1)原因是因为 tomcat 使用 jdk 和 servlet 使用的 jdk 不一样,解决方法就是统一即可.请大家使用 eclipse

29、并配置继承 HttpServlet 开发一个 servlet, 显示 hello, 和当前日期. Servlet 的细节问题 一个已经注册的 Servlet 可以被多次映射即:This is the description of my J2EE componentThis is the display name of my J2EE componentMyServlet1com.hsp.servlet.MyServlet1MyServlet1/MyServlet1MyServlet1/hsp 当映射一个 servlet 时候,可以多层 比如 /servlet/index.html ok从这里还

30、可以看出,后缀名是 html 不一定就是 html,可能是假象. 使用通配符在 servlet 映射到 URL 中有两种格式:第一种格式 *.扩展名 比如 *.do *.ss第二种格式 以 / 开头 同时以 /* 结尾 比如 /* /news/* 通配符练习题: Servlet1 映射到 /abc/* Servlet2 映射到 /* Servlet3 映射到 /abc Servlet4 映射到 *.do 问题(面试题) : 当请求 URL 为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个 servlet 响应Servlet 引擎将调用 Servlet1。 当请求 URL 为

31、“/abc”时,“/abc/*”和“/abc ”都匹配,哪个 servlet 响应Servlet 引擎将调用 Servlet3。 当请求 URL 为“/abc/a.do ”时,“/abc/*”和“*.do”都匹配,哪个 servlet 响应Servlet 引擎将调用 Servlet1。 当请求 URL 为“/a.do”时,“/*”和“*.do”都匹配,哪个 servlet 响应Servlet 引擎将调用 Servlet2。 当请求 URL 为“/xxx/yyy/a.do”时,“/* ”和“*.do” 都匹配,哪个 servlet 响应Servlet 引擎将调用 Servlet2。在匹配的时候,

32、要参考的标准:(1) 看谁的匹配度高,谁就被选择(2) *.do 的优先级最低 Servlet 单例问题当 Servlet 被第一次访问后,就被加载到内存,以后该实例对各个请求服务.即在使用中是单例.因为 Servlet 是单例,因此会出现线程安全问题: 比如:售票系统. 如果不加同步机制,则会出现问题:这里我给大家一个原则:(1) 如果一个变量需要多个用户共享,则应当在访问该变量的时候,加同步机制synchronized (对象)/同步代码(2)如果一个变量不需要共享,则直接在 doGet() 或者 doPost()定义.这样不会存在线程安全问题 servlet 中的 配置需求: 当我们的网

33、站启动的时候 ,可能会要求初始化一些数据,(比如创建临时表), 在比如:我们的网站有一些要求定时完成的任务 定时写日志,定时备份数据 定时发送邮件解决方法: 可以通过 配合 线程知识搞定.先说明: 通过配置 我们可以指定某个 Servlet 自动创建.我们来模拟一个定时发送电子邮件的功能:实现思路:sendEmailTableid content sendtime1 “hello” 2011-11-11 20:112 “hello2” 2012-11-11 10:00看看如何线程去完成任务:这里的代码请参考项目:SendMailThread.javapackage com.hsp.model;

34、public class SendEmailThread extends ThreadOverridepublic void run() int i=0;try while(true)/每休眠一分钟,就去扫表 sendmail, 看看那份信件应当被发出Thread.sleep(10*1000);System.out.println(“发出 第“+(+i)+“邮件“);/javamail catch (Exception e) e.printStackTrace();/ TODO: handle exceptionMyInitServlet1.javapublic void init() thr

35、ows ServletException / Put your code hereSystem.out.println(“MyInitServlet1 的init 被调用“);/完成一些初始化任务System.out.println(“创建数据库,表,读取参数 “);/创建一个线程SendEmailThread sendEmailThread=new SendEmailThread();sendEmailThread.start();说明:1 ServletConfig对象该对象主要用于 读取 servlet的配置信息.案例:ServletConfigTestcom.hsp.servlet.S

36、ervletConfigTestencodingutf-8如何使用String encoding=this.getServletConfig().getInitParameter(“encoding“);补充说明:这种配置参数的方式,只能被某个Servlet 独立使用 .如希望让所有的Servlet都去读取某个参数, 这样配置: 如果要把所有的参数都读取,则使用 如下方法 :Enumeration names=this.getServletConfig().getInitParameterNames();while(names.hasMoreElements()String name=name

37、s.nextElement();System.out.println(name);System.out.println(this.getServletConfig().getInitParameter(name);补充,如何去修改Servlet的配置模板. 编写项目1. 先完成用户登录2. 添加在主界面,添加一个超链接,可以返回登录界面重新登录 http协议的再介绍 http协议是建立在 tcp/ip协议基础上 http协议全称 超文本传输协议 http协议 1.0 , 1.1版本 ,目前通用的是1.1版本http1.0 称为短连接http1.1 称为长连接 .所谓长,和短指的是 持续时间的

38、长连接 1.1 30s ,短连接是发送完数据就断掉. http的请求部分:基本结构:GET /test/hello.html HTTP/1.1 请求行Accept: */* 消息名 消息名:内容Referer: http:/localhost:8080/test/abc.html Accept-Language: zh-cnUser-Agent: Mozilla/4.0 Accept-Encoding: gzip, deflate Host: http:/:80Connection: Keep-Alive 消息头格式 (消息名: 内容 )特别说明: 并不是每一次请求的消息头都一样.空行发送的内

39、容 格式 : 内容名字=内容体 请求方式请求行中的GET称之为请求方式,请求方式有:POST,GET,HEAD,OPTIONS,DELETE,TRACE,PUT常用的有:POST,GET get和post参看ppt,和以前的笔记GET News/abc.jsp http请求消息头1) Accept: text/html,image/* 告诉服务器,我可以接受 文本,网页,图片1. Accept-Charset: ISO-8859-1 接受字符编码 iso-8859-12. Accept-Encoding: gzip,compress 可以接受 gzip,compress压缩后数据.3. Acc

40、ept-Language: en-us,zh-cn 浏览器支持中,英文4. Host: :80 我要找主机是 :805. If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 告诉服务器,我的缓冲中有这个资源文件,该文件的时间是 。6. Referer: http:/ 告诉服务器,我来自哪里,该消息头,常用于防止盗链7. User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)告诉服务器,浏览器内核8. Cookie cookie?9. Connection: close/Keep-

41、Alive 保持连接,发完数据后,我不关闭连接10. Date: Tue, 11 Jul 2000 18:23:51 GMT 浏览器发送该http请求的时间关于Referer的实际案例:/获取用户浏览器RefererString referer=request.getHeader(“Referer“);if(referer=null|!referer.startsWith(“http:/localhost:8088/servletPro“)response.sendRedirect(“/servletPro/Error“);return;红色的部分可以根据实际情况来修改. http的响应基本结

42、构:状态行:格式:HTTP版本号 状态码 原因叙述举例:HTTP/1.1 200 OK状态码 含义100-199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程200-299 表示成功接收请求并完成整个处理过程,常用200300-399 为完成请求,客户需要进行一步细化请求。例如:请求的资源已经移动一个新的地址,常用302,307400-499 客户端的请求有错误 404500-599 服务器端出现错误,常用500 http响应的状态行举例说明200 就是整个请求和响应过程没有发生错误,这个最常见.302: 表示当你请求一个资源的时候,服务器返回302 表示,让浏览器转向到

43、另外一个资源,比如: response.sendRedirect(“/web应用/资源名”)案例:response.setStatus(302);response.setHeader(“Location“, “/servletPro/Servlet2“);/ 上面两句话等价 response.sendRedirect(“/servletPro/Servlet2“);404: 找不到资源500: 服务器端错误 http响应消息头详解 Location: http:/www.baidu.org/index.jsp 【让浏览器重新定位到url】 Server:apache tomcat 【告诉浏览器

44、我是tomcat】 Content-Encoding: gzip 【告诉浏览器我使用 gzip】 Content-Length: 80 【告诉浏览器会送的数据大小80节】 Content-Language: zh-cn 【支持中文】 Content-Type: text/html; charset=GB2312 内容格式text/html; 编码gab2312 Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 【告诉浏览器,该资源上次更新时间】 Refresh: 1;url=http:/ 【过多久去,刷新到 http:/】 Content-Disposi

45、tion: attachment; filename=aaa.zip 【告诉浏览器,有文件下载】 Transfer-Encoding: chunked 传输的编码 Set-Cookie:SS=Q0=5Lb_nQ; path=/search后面详讲 Expires: -1告诉浏览器如何缓存页面IE Cache-Control: no-cache 告诉浏览器如何缓存页面火狐 Pragma: no-cache 告诉浏览器如何缓存页面 Connection: close/Keep-Alive 保持连接 1.1是Keep-Alive Date: Tue, 11 Jul 2000 18:23:51 GMT

46、定时刷新Refresh使用response.setHeader(“Refresh“, “5;url=/servletPro/Servlet2“);文件下载 Content-Disposition public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(“text/html“);/PrintWriter out = response.getWriter();/演示下载文件respon

47、se.setHeader(“Content-Disposition“, “attachment; filename=winter.jpg“);/打开文件 .说明一下web 站点下载文件的原理/1.获取到要下载文件的全路径String path=this.getServletContext().getRealPath(“/images/Winter.jpg“);/System.out.println(“path=“+path);/2创建文件输入流FileInputStream fis=new FileInputStream(path);/做一个缓冲字节数组byte buff=new byte10

48、24;int len=0;/表示实际每次读取了多个个字节OutputStream os=response.getOutputStream();while(len=fis.read(buff)0)os.write(buff, 0, len);/缺点 : 没有进度条./图标/关闭os.close();fis.close();缓存讲解提出问题:浏览器默认情况下,会缓存我们的页面,这样出现一个问题:如果我们的用户习惯把光标停留在地址栏,然后回车来取页面,就会默认调用cache中取数据。(1) 有些网站要求及时性很高,因此要求我们不缓存页面代码:/指定该页面不缓存 Ieresponse.setDateHeader(“Expires“, -1);【针对IE浏览器设置不缓存】/为了保证兼容性.response.setHeader(“Cache-Cont

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报