Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java EE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 缓存问题 [Re:fhdking]
fhdking





发贴: 28
积分: 0
于 2007-11-07 15:49 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
一、servlet的service()方法
回顾Servlet的生命周期,通过查看源代码了解init()及service()方法的设计思想;
问:
(1)我们在编写Servlet类时,为什么不覆盖它的service()方法,通常覆盖doGet()之类的方法?
如果用覆盖servlet的service()方法,那么servlet在处理表单提交时,就会去调用父类的service方法,父类的service方法会根据提交的方式做出判断,然后调用对应的doXX()方法。如果是覆盖doGet()之类的方法,servlet就会根据提交的方式直接调用相应的doXX()方法。
(2)如果要覆盖service()方法,通常会覆盖下列方法中的哪一个方法?
service(HttpServletRequest req, HttpServletResponse resp)
service(ServletRequest req, ServletResponse res)

二、浏览器缓存内幕及解决方案
在下面三种不同的情况下,浏览器的缓存情况不同:
1).Servlet没有覆盖getLastModified方法,响应消息中无LastModified头字段,在浏览器缓存的文档无“上次修改时间”.
2).有getLastModified方法,响应消息中有LastModified头字段,但返回时间晚于缓存文档“上次修改时间”
3).有getLastModified方法,响应消息中有LastModified头字段,但返回时间早于等于缓存文档“上次修改时间”
后退、前进、转到(手工输入后按回车) 通过超链接访问 刷新
1)不发请求,直接使用缓存 发出请求 发出请求
2)不发请求,直接使用缓存 不发请求 发出请求,返回200
3)不发请求,直接使用缓存 不发请求 发出请求,返回304
2、如何禁止Servlet的缓存?(张老师JavaWeb书第236页)
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
3、如何禁止JSP页面的缓存?
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

4、如何禁止静态页面的缓存?(张老师JavaWeb书第238页)
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
静态页面被禁止后,刷新浏览器返回304
JSP页面被禁止后,刷新浏览器返回200
三、初始化参数
1、相对于单个Servlet:P178
在web.xml文件中配置
<servlet>
<servlet-name>ReadInitParam</servlet-name>
<servlet-class>servlet.ReadInitParam</servlet-class>
<init-param>
  <param-name>dbname</param-name>
  <param-value>mysql</param-value>
</init-param>
</servlet>
访问方法为:
getServletConfig().getInitParameter("keyname")
2、相对于整个Web应用程序:P201
在web.xml文件中配置
<context-param>
  <param-name>company</param-name>
  <param-value>itcast.cn</param-value>
</context-param>
访问方法为:
getServletContext().getInitParameter("keyname")

四、资源文件(.properties)的访问
1、使用Properties类来访问:
Properties prop = new Properties();

//方法一
//InputStream is = new FileInputStream("db.properties");
//db.properties要放在启动tomcat的bin目录中

//方法二
//InputStream is = new FileInputStream(this.getServletContext().getRealPath("/") + "WEB-INF/classes/config/db.properties");
//db.properties可以放在web工程的任意目录

//方法三
//InputStream is = this.getServletContext().getResourceAsStream("WEB-INF/classes/config/db.properties");
//db.properties可以放在web工程的任意目录,相对于工程的上下文路径

//方法四
//InputStream is = this.getClass().getClassLoader().getResourceAsStream("/config/db.properties");
InputStream is = ReadProp.class.getClassLoader().getResourceAsStream("/config/db.properties");
//db.properties只能放在类路径即classes目录中
prop.load(is);
is.close();
//读取key对应的value
prop.getProperty("keyname")

2、使用ResourceBundle类来访问:
//也只能放在类路径下
ResourceBundle rb = ResourceBundle.getBundle("config/db");
//读取key对应的value
rb.getString("keyname")




话题树型展开
人气 标题 作者 字数 发贴时间
100135 JAVA学习日子分享 fhdking 3647 2007-10-16 16:03
97144 Re:JAVA学习日子分享 fhdking 1568 2007-10-17 13:51
95054 Re:JAVA学习日子分享 fhdking 18 2007-10-25 14:21
95488 Re:JAVA学习日子分享 fhdking 3449 2007-10-25 14:27
95488 Re:JAVA学习日子分享 fhdking 1407 2007-10-26 14:21
95029 Re:JAVA学习日子分享 fhdking 59 2007-10-28 14:17
94993 Re:JAVA学习日子分享 fhdking 1380 2007-10-28 14:21
94982 Re:JAVA学习日子分享 fhdking 841 2007-10-29 14:29
95204 Re:JAVA学习日子分享 fhdking 2640 2007-10-30 13:25
94661 Re:JAVA学习日子分享 wwww6662003 8 2007-11-01 07:47
94831 Re:JAVA学习日子分享 fhdking 72 2007-11-04 13:53
95820 Re:JAVA学习日子分享 fhdking 2678 2007-11-04 13:56
95719 Re:JAVA学习日子分享 fhdking 2274 2007-10-18 14:07
94813 Re:JAVA学习日子分享 fhdking 903 2007-11-05 15:15
95507 缓存问题 fhdking 3108 2007-11-07 15:49
95154 Re:JAVA学习日子分享--路径问题 fhdking 3766 2007-11-07 15:53
94266 Re:JAVA学习日子分享--路径问题 JJ_JJ 57 2007-11-09 01:23
97637 JSP乱码和out内置对象 fhdking 3357 2007-11-08 09:33
94412 Re:JAVA学习日子分享 fhdking 73 2007-11-09 17:57
97119 include和forward方法 fhdking 3648 2007-11-12 10:21
94205 Re:JAVA学习日子分享 王勇 19 2007-11-17 18:05
93914 Re:JAVA学习日子分享 fhdking 46 2007-11-19 15:06
94442 Re:JAVA学习日子分享 fhdking 9819 2007-11-19 15:17
94336 Re:JAVA学习日子分享 fhdking 6200 2007-11-20 11:05
95688 Re:JAVA学习日子分享 fhdking 1623 2007-10-19 13:33
95885 培训日记(利用session自动登录) fhdking 6190 2007-11-21 11:05
92938 Re:JAVA学习日子分享 ws5696611 54 2007-12-26 19:09
93535 Re:JAVA学习日子分享 g007 10 2008-01-14 15:26
95216 Re:JAVA学习日子分享 fhdking 2579 2007-10-21 14:53
95180 Re:JAVA学习日子分享 fhdking 313 2007-10-22 15:46
95501 Re:JAVA学习日子分享 fhdking 1733 2007-10-23 13:42
95280 Re:JAVA学习日子分享 fhdking 1929 2007-10-24 13:37
94834 Re:JAVA学习日子分享 yunshao110 5 2007-10-25 07:51
95012 Re:JAVA学习日子分享 yunshao110 5 2007-10-25 07:54

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923