blaze

欢迎来到blaze>>   | 首页 资源中心 | solaris | Ruby on rails | ajax | oracle | JCOM | tapestry | WorkFlow | 我的项目 | JSF | 乱七八糟 | spring | opensource | struts | hibernate | eclipse | 灵光乍现 | ITPUB论坛

tomcat filter

发表人:fourfire | 发表时间: 2005年四月11日, 08:45

一个将输入转为大写输入的tomcat filter。

存在一个问题,html文件的filter,jsp没有输出。而jsp文件的filter,html不起作用,有知道的请指教。


1 jspfilter

/*
 * 创建日期 2005-4-9
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package test;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

/**
 * @author Administrator
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class SimpleUpperJspFilter implements Filter {
 FilterConfig filterConfig = null;

 /* (非 Javadoc)
  * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
  */
 public void init(FilterConfig filterConfig) throws ServletException {
  this.filterConfig = filterConfig;

 }

 /* (非 Javadoc)
  * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
  */
 public void doFilter(
  ServletRequest request,
  ServletResponse response,
  FilterChain chain)
  throws IOException, ServletException {

  // System.out.println();
  //String url=((HttpServletRequest) request).getRequestURI();
  
  UpperJspWrapper myWrappedResp =
   new UpperJspWrapper((HttpServletResponse) response);
  chain.doFilter(request, myWrappedResp);
  //myWrappedResp.getOutputStream().close(); 
  //  chain.doFilter(request,response);
  //((HttpServletResponse)response).sendRedirect("/index.jsp");

 }

 /* (非 Javadoc)
  * @see javax.servlet.Filter#destroy()
  */
 public void destroy() {

 }

}
jspwrapper

/*
 * 创建日期 2005-4-9
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package test;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

/**
 * @author Administrator
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class UpperJspWrapper extends HttpServletResponseWrapper {

 /**
  * @param arg0
  */
 public UpperJspWrapper(HttpServletResponse arg0)
  throws IOException {
  super(arg0);
  

 }
 

 public PrintWriter getWriter() throws java.io.IOException {
  
   return new UpperCaseWriter(super.getWriter());
  

 }

}
class UpperCaseWriter extends PrintWriter {
 UpperCaseWriter(Writer writer) {
  super(writer);
 }

 public void write(String s, int off, int len) {
  super.write(s.toUpperCase(), off, len);
 }

 public void write(char[] buffs, int off, int len) {
  super.write(new String(buffs).toUpperCase().toCharArray(), off, len);
 }
 public void write(int c) {
  super.write(Character.toUpperCase((char) c));
 }

}
2 html filter

/*
 * 创建日期 2005-4-9
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package test;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

/**
 * @author Administrator
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class SimpleUpperHtmlFilter implements Filter {
 FilterConfig filterConfig = null;

 /* (非 Javadoc)
  * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
  */
 public void init(FilterConfig filterConfig) throws ServletException {
  this.filterConfig = filterConfig;

 }

 /* (非 Javadoc)
  * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
  */
 public void doFilter(
  ServletRequest request,
  ServletResponse response,
  FilterChain chain)
  throws IOException, ServletException {

  // System.out.println();
  //String url=((HttpServletRequest) request).getRequestURI();
  
  UpperHtmlWrapper myWrappedResp =
   new UpperHtmlWrapper((HttpServletResponse) response);
  chain.doFilter(request, myWrappedResp);
  //myWrappedResp.getOutputStream().close(); 
  //  chain.doFilter(request,response);
  //((HttpServletResponse)response).sendRedirect("/index.jsp");

 }

 /* (非 Javadoc)
  * @see javax.servlet.Filter#destroy()
  */
 public void destroy() {

 }

}
warpper:

/*
 * 创建日期 2005-4-9
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package test;

import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

/**
 * @author Administrator
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class UpperHtmlWrapper extends HttpServletResponseWrapper {
 private ByteArrayOutputStream output;
  private int contentLength;
  private String contentType;

  public UpperHtmlWrapper(HttpServletResponse response) {
 super(response);
 output=new ByteArrayOutputStream();
  }

  public byte[] getData() {
 return output.toByteArray();
  }

  public ServletOutputStream getOutputStream() {
 return new UpperHtmlOutStream(output);
  }
 
  public PrintWriter getWriter() {
 return new PrintWriter(getOutputStream(),true);
  }

  public void setContentLength(int length) {
 this.contentLength = length;
 super.setContentLength(length);
  }

  public int getContentLength() {
 return contentLength;
  }

  public void setContentType(String type) {
 this.contentType = type;
 super.setContentType(type);
  }


  public String getContentType() {
 return contentType;
  }


}
outstream

/*
 * 创建日期 2005-4-9
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package test;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletOutputStream;

/**
 * @author Administrator
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class UpperHtmlOutStream extends ServletOutputStream {
 
 private DataOutputStream stream;

  public UpperHtmlOutStream(OutputStream output) {
 stream = new DataOutputStream(output);
  }

  public void write(int b) throws IOException  {
 stream.write(b);
  }

  public void write(byte[] b) throws IOException  {
 stream.write(new String(b).toUpperCase().getBytes());
  }

  public void write(byte[] b, int off, int len) throws IOException  {
 stream.write(new String(b).toUpperCase().getBytes(),off,len);
  }


}

3 配置

web.xml

<filter>
        <filter-name>MyJspFilter</filter-name>
        <filter-class>test.SimpleUpperJspFilter</filter-class>
        <init-param>
    <param-name>param1</param-name>
    <param-value>test</param-value>
 </init-param>

   </filter>

<filter-mapping>
        <filter-name>MyjspFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

发表评论

标题

在此添加评论

称呼

邮箱地址(可选)

个人主页(可选)




Valid XHTML 1.0 Strict and CSS. Powered by pLog
Design by Blog.lvwo.com