| « | 五月 2012 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||
一个将输入转为大写输入的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>















