ServletResponseFilter对HTML加密,保护美工的劳动果实。
来源:互联网 发布:乌托邦网络 编辑:程序博客网 时间:2024/05/01 14:23
Filter类代码如下:
package com.youk.wf.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.youk.util.HtmlEncode;
/**
<p>Title: Btoall</p>
<p>Description: </p>
<p>Copyright: Copyright (c) 2004</p>
<p>Company: Youkone inc Ningbo.</p>
@author victor wu(woowind@sina.com)
@version 1.0
*/
public class HtmlProtectFilter
extends HttpServlet
implements Filter {
private FilterConfig filterConfig;
HtmlEncode encode = new HtmlEncode();
//Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpServletRequest httpRequest = (HttpServletRequest) request;
String path =httpRequest.getRequestURI();
//String mimitype = filterConfig.getServletContext().getMimeType(path);
httpRequest.setCharacterEncoding("GBK");
String ext = ".ww";
if(path.length() > 2){
path = path.substring(path.length()-3,path.length()).toLowerCase();
}
//需要乱序的资源;后2位;
if(!path.equals(ext)){
filterChain.doFilter(httpRequest, response);
}else{
System.out.println("ext="+path);
httpResponse.setContentType("text/html; charset=GBK");
ResponseWrapper wrapper = new ResponseWrapper(
httpResponse);
filterChain.doFilter(httpRequest, wrapper);
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
/**
*
*/
public void destroy(){
}
/**
*
* <p>Title: SMS</p>
* <p>Description: SMS</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: Youk Inc.</p>
* @author 吴锋彬(woowind@sina.com)
* @version 1.0
*/
public class ResponseWrapper extends HttpServletResponseWrapper {
private PrintWriter printWriter;
private ResponseOutputStream outputStream;
public ResponseWrapper(ServletResponse response) throws
java.io.IOException {
super((HttpServletResponse) response);
outputStream = new ResponseOutputStream
(response.getOutputStream());
printWriter = new PrintWriter(outputStream);
}
public ServletOutputStream getOutputStream() throws
java.io.IOException {
return outputStream;
}
public PrintWriter getWriter() throws java.io.IOException {
return printWriter;
}
}
/**
*
* @param args String[]
*/
public static void main(String[] args){
try{
String cn = "你好";
int h = cn.charAt(0);
String s = new Integer(h).toHexString(h);
//String result = java.net.URLEncoder.encode(,"GBK");
System.out.println(s);
}catch(Exception ex){
ex.printStackTrace();
}
}
public class ResponseOutputStream extends ServletOutputStream {
private OutputStream outputStream;
private ByteArrayOutputStream arrayStream;
private boolean closed = false;
public ResponseOutputStream(OutputStream stream) {
outputStream = stream;
arrayStream = new ByteArrayOutputStream();
}
public void write(int i) throws java.io.IOException {
arrayStream.write(i);
}
public void write(byte[] b)throws java.io.IOException{
arrayStream.write(b);
}
public void write(byte[] b , int a , int bb)throws java.io.IOException{
arrayStream.write(b,a,bb);
}
public void close() throws java.io.IOException {
if (!closed) {
outputStream.close();
closed = true;
}
}
public void flush() throws java.io.IOException {
if (arrayStream.size() != 0) {
if (!closed) {
processStream();
arrayStream = new ByteArrayOutputStream();
}
}
}
private void processStream() throws java.io.IOException {
System.out.println("replace.");
outputStream.write(replaceContent(arrayStream.toByteArray()));
outputStream.flush();
}
byte[] replaceContent(byte[] bytesContent) {
try{
String s = new String(bytesContent, "GBK");
if(s.toLowerCase().indexOf("<html>") != -1){
String encodeHtml = encode.encode(s);
String addS = "<script>s=/"" + encodeHtml + "/";";
String sc = "document.write(unescape(s));</script>";
return (addS+sc).getBytes();
}
}catch(Exception ex){
}
return bytesContent;
}
}
}
weblogic8.1 on red hat / jboss3.2.5 on windows200 测试通过
我的qq:1265877
msn:woowind@sina.com
欢迎和我联系
- ServletResponseFilter对HTML加密,保护美工的劳动果实。
- 如何保住一个人一生的劳动果实
- (别人的劳动果实,有源码下载)对进度条的通用封装实现
- UESTC 1515 保护果实
- 【UESTC】保护果实
- 如何保护自己的劳动成果
- 保护果实 【 数学几何】+【贪心】
- 原创视频加密技术对版权保护的重要意义
- dotNet加密锁(对.NET加密保护)
- dotNet加密锁(对.NET加密保护)
- dotNet加密锁(对.NET加密保护)
- dotNet加密锁(对.NET加密保护)
- .Net加密锁(对.NET加密保护)
- .Net加密锁(对.NET加密保护)
- 新劳动合同法对程序员的影响
- UESTC oj- 1515 保护果实 (几何
- 盛夏的果实
- 胜利的果实
- 调用system函数时,如何隐藏其dos窗口
- xampp-1.4.9 for Linux, Windows
- VC调用word的疑难问题?
- 学java也快半年了,一直在看基础的东西,终于决定开始转J2ee了……
- 网友收藏的一些关于VB处理的函数
- ServletResponseFilter对HTML加密,保护美工的劳动果实。
- 使用FileUpload组件实现文件上传
- 热烈祝贺重庆大学75周年校庆
- (JavaScript)Validator中javascript的使用
- JCA1.5学习笔记
- C#字符串的使用笔记
- DB2 SQL1092N
- 【专题】展示UML的发展之路:UML辛路历程
- 在b/s开发中经常用到的javaScript技术