• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
笔者将response内响应给使用者的内容,
使用GZIP压缩的方式回传给浏览器,而IE5和NS6也都有支持Gzip的压缩格式。
这个方法在之前就有人提出过,因为是让网页在输出时经过压缩,
可以让传输量变小很多,虽然现在的网络频宽对于用来看网页已经绰绰有余,
但是档案大小太大的网页还是会造成一定的影响。
经过Gzip压缩过的网页,档案大小可以到原本压缩前的20%。
使用GZIP压缩的方式回传给浏览器,而IE5和NS6也都有支持Gzip的压缩格式。
这个方法在之前就有人提出过,因为是让网页在输出时经过压缩,
可以让传输量变小很多,虽然现在的网络频宽对于用来看网页已经绰绰有余,
但是档案大小太大的网页还是会造成一定的影响。
经过Gzip压缩过的网页,档案大小可以到原本压缩前的20%。
复制内容到剪贴板
程序代码

package com.jsptw.filter;
import java.io.*;
import java.io.*;
HTTP 压缩是指浏览器能够理解压缩过的 HTML 代码, 文本文档等, 从而减少网络传输流量的一种功能. 在目前的大部分主流浏览器上, 都支持这种功能, 例如 Ineternet Explorer, FireFox, Netscape, Opera 等, 对应的 HTTP 版本应该是 HTTP 1.1.
要探测浏览器是否支持 HTTP 压缩, 只要查看浏览器请求的头中是否有如下字样:
Accept-Encoding: gzip, deflate
即可, 这个即是说明浏览器支持 gzip 和 deflate(一种压缩格式)的压缩内容. 这就意味着: 可以向浏览器返回默认的未压缩的文本, 也可以用 GZIP 和 deflate 压缩过后传送给它, 浏览器会自己探测这些内容并解压缩, 这就以为着传输某些资料的时候(例如文本的 HTML 代码)可以大大减少网络需要传送的内容数.
那么, 如何实现这个功能呢? 其实 Apache Tomcat 5 安装时候所自带的示例目录下都做好了一个过滤器用来实现这个功能了:
{Tomcat5.0安装目录}\webapps\jsp-examples\WEB-INF\classes\compressionFilters
下就是这个过滤器的源码和类文件, 使用时候只要将这些文件放入类路径中, 然后向 web.xml 中加入过滤器配置语句就可以了:
要探测浏览器是否支持 HTTP 压缩, 只要查看浏览器请求的头中是否有如下字样:
Accept-Encoding: gzip, deflate
即可, 这个即是说明浏览器支持 gzip 和 deflate(一种压缩格式)的压缩内容. 这就意味着: 可以向浏览器返回默认的未压缩的文本, 也可以用 GZIP 和 deflate 压缩过后传送给它, 浏览器会自己探测这些内容并解压缩, 这就以为着传输某些资料的时候(例如文本的 HTML 代码)可以大大减少网络需要传送的内容数.
那么, 如何实现这个功能呢? 其实 Apache Tomcat 5 安装时候所自带的示例目录下都做好了一个过滤器用来实现这个功能了:
{Tomcat5.0安装目录}\webapps\jsp-examples\WEB-INF\classes\compressionFilters
下就是这个过滤器的源码和类文件, 使用时候只要将这些文件放入类路径中, 然后向 web.xml 中加入过滤器配置语句就可以了:
这个小实例使用GZIP压缩的方式回传给浏览器,而IE5和NS6也都有支持Gzip的压缩格式。
这个方法在之前就有人提出过,因为是让网页在输出时经过压缩,可以让传输量变小很多,虽然现在的网络频宽对于用来看网页已经绰绰有余,但是档案大小太大的网页还是会造成一定的影响。
这里是压缩功能的代码:
这个方法在之前就有人提出过,因为是让网页在输出时经过压缩,可以让传输量变小很多,虽然现在的网络频宽对于用来看网页已经绰绰有余,但是档案大小太大的网页还是会造成一定的影响。
这里是压缩功能的代码:
复制内容到剪贴板
程序代码

import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;
拳头是最基本的一重武器,也是最重要的,好比练武之人必须先扎稳马步。
2.孔雀翎之支持https
复制内容到剪贴板
程序代码

HttpClient httpclient=new HttpClient();//创建一个客户端,类似打开一个浏览器
GetMethod getMethod=new GetMethod("http://www.blablabla.com");//创建一个get方法,类似在浏览器地址栏中输入一个地址
int statusCode=httpclient.executeMethod(getMethod);//回车——出拳!
System.out.println("response=" + getMethod.getResponseBodyAsString());//察看拳头命中情况,可以获得的东西还有很多,比如head, cookies等等
getMethod.releaseConnection();//释放,记得收拳哦
GetMethod getMethod=new GetMethod("http://www.blablabla.com");//创建一个get方法,类似在浏览器地址栏中输入一个地址
int statusCode=httpclient.executeMethod(getMethod);//回车——出拳!
System.out.println("response=" + getMethod.getResponseBodyAsString());//察看拳头命中情况,可以获得的东西还有很多,比如head, cookies等等
getMethod.releaseConnection();//释放,记得收拳哦
2.孔雀翎之支持https
Tags: HttpClient 武器