java技术研究

统计

留言簿(3)

阅读排行榜

评论排行榜

#

网页的缓存

网页缓存
2009-07-09 10:42

网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:
(1) 打开新窗口
如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:
Cache-control: max-age=5
表示当访问此网页后的5秒内再次访问不会去服务器
(2) 在地址栏回车
如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
(3) 按后退按扭
如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问
(4) 按刷新按扭
无论为何值,都会重复访问


项目中使用过滤器来设置网页的缓存
FilterConfig fc;

    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        // set the provided HTTP response parameters
        for (Enumeration e = fc.getInitParameterNames(); e.hasMoreElements();) {
            String headerName = (String) e.nextElement();
            response.addHeader(headerName, fc.getInitParameter(headerName));
        }
        // pass the request/response on
        chain.doFilter(req, response);
    }

配置文件的配置:
<filter>
        <filter-name>NoCache</filter-name>
        <filter-class>filter.CacheFilter</filter-class>
        <init-param>
            <param-name>Cache-Control</param-name>
            <param-value>no-cache, must-revalidate</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>CacheForWeek</filter-name>
        <filter-class>filter.CacheFilter</filter-class>
        <init-param>
            <param-name>Cache-Control</param-name>
            <param-value>max-age=604800</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CacheForWeek</filter-name>
        <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>CacheForWeek</filter-name>
        <url-pattern>*.css</url-pattern>
    </filter-mapping> 
    <filter-mapping>
        <filter-name>CacheForWeek</filter-name>
        <url-pattern>*.gif</url-pattern>
    </filter-mapping>

posted @ 2012-04-10 17:54 小秦 阅读(204) | 评论 (0)编辑 收藏

jquery AJAX 当参数包含特殊字符如&*#等的时候

JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&'#@等
这是执行AJAX的时候就会出问题,因为所传的参数变了.
看个示例就明白:
              $.ajax({
                    url: '/ashx/ajax.ashx',
                    type: 'post',
                    data: 'option=delete&name=11&adb,
                    success: function (data) {
                        if (data != 'error') {
                          
                            }
                        }
               });
上面执行的ajax就是异步删除一个name为 11&abd 的数据
当请求到ajax.ashx页面时,我们获取到的name参数为11
执行操作后会发现其实删除了 name 为 11的数据,而没有删除 name 为 11&abc 的数据
这是由于有&特殊字符,把以前的俩个参数变成了三个参数 option,name,abc
这时就需要用另外一种方法传递参数:
              $.ajax({
                    url: '/ashx/ajax.ashx',
                    type: 'post',
                    data:{ 'option':'delete','name':'11&adb'},
                    success: function (data) {
                        if (data != 'error') {
                          
                            }
                        }
               });
采用上面的json格式传递参数就可以避免特殊字符引起的参数错误问题.

posted @ 2012-03-26 14:50 小秦 阅读(1198) | 评论 (1)编辑 收藏

ant快速部署web项目

 1、安装ant,下载ant包,并解压到d盘根目录d:\ant
2、配置环境变量,包括ANT和JAVA_HOME
ANT_HOME:D:\ant
JAVA_HOME:E:\workserver\jdk1.5.0_06
path:D:\ant\bin;E:\workserver\jdk1.5.0_06\bin
3、ant需要jsch-0.1.37.jar包和js-1.6R2.jar包放在ant\lib目录下
4、启动命令行cmd,到该目录:E:\workspace\ebizcenter\metadata\build\scripts
5、执行a、"ant checkout"从svn服务器下载,b、"ant build"编译java类成class文件,c、"ant deploy"部署到服务器(上传) 
6、如果是64位系统,参考这篇文章http://www.linuxso.com/linuxbiancheng/13326.html
a、去http://www.sliksvn.com/en/download下载并安装
b、安装完成后,把安装目录(如:D:\Program Files\SlikSvn\bin)  加入到系统环境变量PATH中 
c、在安装目录下(如:D:\Program Files\SlikSvn\bin)找到“libsvnjavahl-1.dll”这个文件,复制一份后重命名为“svnjavahl-1.dll”,即去掉文件名中前三个字母 

posted @ 2012-02-28 14:32 小秦 阅读(499) | 评论 (0)编辑 收藏

乱码

1、url转发需要修改响应的字符类型
response.setContentType("text/html;charset=UTF-8");
2、@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 

posted @ 2012-02-25 14:14 小秦 阅读(196) | 评论 (0)编辑 收藏

java类似ajax文件上传

 ajax 是无法实现上传文件的 , ajax与后台通信都是通过传递字符串

 

 

-- index.html

 

Html代码  收藏代码
  1. <form action="upload.jsp" id="form1" name="form1" encType="multipart/form-data" method="post" target="hidden_frame" >  
  2.     <input type="file" id="file" name="file" style="width:450">  
  3.     <input type="submit" value="上传文件"><span id="msg"></span>  
  4.     <br>  
  5.     <font color="red">支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文件的上传</font>  
  6.       
  7.     <iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>  
  8. </form>  
  9.   
  10. <!-- javascript s -->  
  11. <script type="text/javascript">    
  12.     function callback(msg) {    
  13.         document.getElementById("file").outerHTML = document.getElementById("file").outerHTML;  
  14.         document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>";  
  15.     }  
  16. </script>  

 

 

index.html 中主要要做的就是写一个 form 和 iframe ,并把 form 的 target 设为 iframe 的名字,注意要把iframe 设为不可见,其他的都是正常的文件上传的写法,这样刷新的页面就是这个隐藏的 Iframe ,而在 index.html 中是不会有页面刷新的,js的 callback 方法是回调方法。用于清空文件上传框和显示后台信息,注意清空文件上传框的方法,和普通方法有点不一样。


上传的注意事项:
1、<form method="POST" id="matchItemForm" name="formEntity" action="${CoreCtxPath}/gather/gatherAjax.html" enctype="multipart/form-data" target="hidden_frame">
这里的method很重要不能少,enctype也不能少,target代表form和iframe绑定也不能少。

posted @ 2012-02-25 14:13 小秦 阅读(4090) | 评论 (2)编辑 收藏

让Myeclipse格式化更漂亮(转自javaeye)

1.Java代码

打开Eclipse的Window菜单,然后Preferences->Java->Code Style->Formatter->Edit/Show(根据不同版本可用的按钮会不一样) ->Line Wrapping->Maximum line width:由默认的80改成自己想要设定的长度
 
2.Html代码
Window->Preferences->MyEclipse->Files and Editors->Html->Html Source->Line width->加个0以后保存。
 
3.xml代码
Window->Preferences->MyEclipse->Files and Editors->xml->xml Source->->Line width->999
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

 

posted @ 2011-10-21 10:14 小秦 阅读(5450) | 评论 (0)编辑 收藏

MySQL远程访问

       为了能够让终端通过网络访问,需要开启MYSQL远程访问服务。即在MYSQL的user表中进行设置,使任何ip的主机都能够使用用户名为root,密码为“1”访问数据库。在Linux的终端中输入如下命令:

#mysql –uroot -p

Enter password:

#mysql>use mysql;

#mysql>update user set host='%' where user='root';

#mysql>FLUSH PRIVILEGES;

#mysql>select host,user from user ;

当看到Host 这一项中有一个%记录且用户名为root。说明设置已成功。


一般MySQL安装的时候默认是绑定了本机。因此需要在配置文件中取消本机绑定。方能够被远程的主机访问。MySQL配置文件为my.cnf ,位于/etc/mysql/文件夹下。编辑my.cnf,找到bind-address =127.0.0.1。这一句就是将MySQL与本机绑定。所以将此句注释掉。取消与本机的绑定。然后执行 #sudo /etc/init.d/mysql restart 。即重启MySQL服务,重启之后就可进行远程访问。这样就完全搭建好可以在网络中被终端访问的服务器端数据库了。

posted @ 2009-07-24 14:32 小秦 阅读(721) | 评论 (1)编辑 收藏

如何让struts2和spring2在jdk1.4上跑起来

1、struts2提供的有struts-2.0.9\j4目录,这个下面有工具可以把1.5下编译的包,给编译成兼容1.4的包。
2、spring2是直接支持jre1.4的,其实大部分开源jar包都直接支持。
3、如果你用的是eclipse,你需要在项目--->属性--->构建路径---->库,中进行设置“JRE 系统库[jdk 1.4.2_07]”,当然你也要引入其它编译好了的兼容1.4的包。
4、在项目--->属性--->java编译器,中需要勾选“启用特定与项目的设置”,将“编译器一致性级别”设置为1.4,并且应用。
5、有些jar包不能在1.4环境下跑的,不过这个不好统计,我遇到的有commons-beanutils-1.6.jar不要用1.7以及以后版本的,貌似commons-logging-1.0.4.jar也不要用高版本。
这个是没有设置好的时候报出的错误信息(这里是c3p0,也可能不是这个类报出来):
(C3P0Registry.java:139) jdk1.5 management interfaces unavailable... JMX support disabled.

posted @ 2009-05-13 15:11 小秦 阅读(1239) | 评论 (0)编辑 收藏

缓存实现实现手段(转自javaeye)

缓存实现的层面有很多:

1、对象缓存
由ORM框架提供,透明性访问,细颗粒度缓存数据库查询结果,无需业务代码显式编程。当软件结构按照ORM框架的要求进行针对性设计,使用对象缓存将会极大降低web系统对于数据库的访问请求。因为类似Hibernate这样的ORM,良好的设计数据库结构和利用对象缓存,在大负载网站,能够提供极高的性能。因为使用对象缓存也无需显式编程,所以适用范围也最广泛。

2、查询缓存
对数据库查询结果行集进行缓存,适用于一些耗时,但是时效性要求比较低的场景。iBATIS就只能使用查询缓存,而无对象缓存。查询缓存和对象缓存适用的场景不一样,是互为补充的。

3、片断缓存
针对动态页面的局部片断内容进行缓存,适用于一些个性化但不经常更新的页面(例如博客)。OSCache提供了相当简陋的片断缓存,而RoR则提供了相当好的片断缓存机制。

4、Action缓存
针对URL访问返回的页面结果进行缓存,适用于粗粒度的页面缓存,例如新闻发布。OScache提供了相当简陋的Action缓存(通过web.xml中的配置),而RoR提供了相当好的Action缓存。

缓存不能一概而论,以上每种缓存分别适用于各自的场景,缓存不同的层面。当然你可以在应用程序当中把4种缓存一起用上。

posted @ 2007-11-13 14:46 小秦 阅读(358) | 评论 (0)编辑 收藏

Java路径问题最终解决方案之一(出自:http://dev.yesky.com/85/3001085_1.shtml)

相对路径本质上还是绝对路径

  因此,归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的!

  得到classpath和当前类的绝对路径的一些方法

  下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。

  1.FileTest.class.getResource("")

  得到的是当前类FileTest.class文件的URI目录。不包括自己!

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

  2.FileTest.class.getResource("/")

  得到的是当前的classpath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  3.Thread.currentThread().getContextClassLoader().getResource("")

  得到的也是当前ClassPath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  4.FileTest.class.getClassLoader().getResource("")

  得到的也是当前ClassPath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  5.ClassLoader.getSystemResource("")

  得到的也是当前ClassPath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法。

  Web应用程序中资源的寻址

  上文中说过,当前用户目录,即相对于System.getProperty("user.dir")返回的路径。

  对于JavaEE服务器,这可能是服务器的某个路径,这个并没有统一的规范!

  而不是我们发布的Web应用程序的根目录!

  这样,在Web应用程序中,我们绝对不能使用相对于当前用户目录的相对路径。

  在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。

  这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。

  这是我们开发Web应用程序时一般所采取的策略。

                                              (本文转载自:http://dev.yesky.com/85/3001085_1.shtml)

posted @ 2007-06-06 11:02 小秦 阅读(368) | 评论 (0)编辑 收藏

仅列出标题
共11页: First 上一页 3 4 5 6 7 8 9 10 11 下一页