日期:2014-05-17  浏览次数:20705 次

【java过滤器】新手求问一句话什么意思?
第一问:

刚刚在做第一个过滤器例子的时候出现了这一句,不懂什么意思,求解释:
HttpServletRequest request=(HttpServletRequest)req
-----------------------------------------------------
这是一个非法蚊子过滤器,整个过滤器的代码如下:

package com.javaweb.ch11;

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.HttpServletRequest;



public class CharFilter implements Filter
{
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
System.out.println("非法文字过滤器");// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException
{
HttpServletRequest  request=(HttpServletRequest)req;
request.setCharacterEncoding("gb2312");
String charContent =request.getParameter("charContent");
if(charContent!=null){
if(charContent.indexOf("晕")==-1){
chain.doFilter(req, res);
}else{
request.getRequestDispatcher("SendFailure.jsp").forward(req, res);
}
}else{
chain.doFilter(req, res);
}
// TODO Auto-generated method stub

}


@Override
public void destroy()
{
System.out.println("非法文字过滤器销毁");
// TODO Auto-generated method stub

}

}


-----------------------------------------------------
第二问:

还有,在实例化一个对象或者定义一个字符的时候,经常会在后面加个括号,呢种句子该怎么翻译啊?
例如:
String name=(String)request.getAttribute("name"); 这为什么非要在前面加一个(string)?
-----------------------------------------------------
filter java

------解决方案--------------------
第二个问题 request封装的是object对象  取出来的必须进行强制转换的
------解决方案--------------------
1、HttpServletRequest 是 ServletReques 的扩展。需要强制性转化。
2、request.getAttribute("name"); 返回的是Object, 也需要强制性转化。
------解决方案--------------------
ServletRequest 
是一个接口,
HttpServletRequest使其实现这个接口的一个类。
接口A a=new B();实现A接口的类B
A a2=new C();实现A接口的类C
B b=(B)a;
当B接受对象a时,就需要强转一下了
因为a对象也有可能是new 的C
------解决方案--------------------
HttpServletRequest是ServletRequest的实现类,如果在程序中用到了在ServletRequest没有声明,但在HttpServletRequest声明了的方法时,就需要强制转化一下,来使用这些方法。