流水只能带走落花 而经典爱情绽放千年 芬芳如初 依然烈士般活在历史深处的细节 真实而生动 并且以不锈钢的精神穿越时空 超过我们的生命 面对经典爱情,我看见太阳下闪光的一段叫今生 埋在土里的那一段就叫来世 爱情啊,金石俱焚后的等待 漫长复漫长 今天我们靠歌声救回一些玫瑰和蝴蝶 让充满爱情的情节起死回生 我们用唇齿呵护爱情 在经典爱情的晶莹剔透里 我们看见 痴心比人活得更久

9/05/2007

Java Servlet Technology之过滤器(Filtering Requests and Responses)



# Query the request and act accordingly.

# Block the request-and-response pair from passing any further.

# Modify the request headers and data. You do this by providing a customized version of the request.

# Modify the response headers and data. You do this by providing a customized version of the response.

# Interact with external resources.

----------------------------------------------------------------------------------------

web.xml filter 的配置片段,在访问 /MyServlet_1.action 是进行过滤

<filter>

<filter-name>MyFilter</filter-name>

<filter-class>com.kela.web.filters.MyFilter</filter-class>

</filter>



<filter-mapping>

<filter-name>MyFilter</filter-name>

<servlet-name>MyServlet_1</servlet-name>

</filter-mapping>



<servlet>

<display-name>MyServlet_1</display-name>

<servlet-name>MyServlet_1</servlet-name>

<servlet-class>com.kela.web.servlets.MyServlet_1</servlet-class>

</servlet>



<servlet-mapping>

<servlet-name>MyServlet_1</servlet-name>

<url-pattern>/MyServlet_1.action</url-pattern>

</servlet-mapping>

---------------------------------------------------------------------------------------

MyFilter.java

public class MyFilter implements Filter {

private FilterConfig filterConfig = null;



public void init(FilterConfig filterConfig) throws ServletException {

System.out.println("[INFO]: 创建... ...");

this.filterConfig = filterConfig;

}



public void destroy() {

System.out.println("[INFO]: 销毁... ...");

this.filterConfig = null;

}



public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

if (filterConfig == null)

return;



PrintWriter out = response.getWriter();

CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response);

chain.doFilter(request, wrapper);

CharArrayWriter caw = new CharArrayWriter();

caw.write("[INFO]:扑捉的页面输出内容是 :" + wrapper.toString());



response.setContentLength(caw.toString().getBytes().length);

out.write(caw.toString());

out.close();

}



public class CharResponseWrapper extends HttpServletResponseWrapper {

private CharArrayWriter output;



public String toString() {

return output.toString();

}



public CharResponseWrapper(HttpServletResponse response) {

super(response);

output = new CharArrayWriter();

}



public PrintWriter getWriter() {

return new PrintWriter(output);

}

}

}



-------------------------------------------------------------------------------

MyServlet_1.java 的页面输出代码片段

... ...

out.println("I love you for ever .... ....");

... ...



--------------------------------------------------------------------------------

打印输入结果:[INFO]:扑捉的页面输出内容是 :I love you for ever .... ....

没有评论: