2010年1月27日水曜日

Struts2拦截器中操作Action

public String intercept(ActionInvocation invoker) throws Exception {

ActionContext ctx = invoker.getInvocationContext();
Object action = invoker.getAction();
String actionStr = action.toString();

//取得request和response 对象
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();

//取得当前URL
Enumeration qnames= request.getParameterNames();
String qstring="";
while(qnames.hasMoreElements()){
String qname=(String)qnames.nextElement();
String[] qvalues=request.getParameterValues(qname);
for(int j= 0;j< qvalues.length;j++){
if(!qnames.hasMoreElements()&&j==qvalues.length-1){
qstring=qstring+java.net.URLEncoder.encode(qname)+"="+java.net.URLEncoder.encode(qvalues[j]);
}else{
qstring=qstring+java.net.URLEncoder.encode(qname)+"="+java.net.URLEncoder.encode(qvalues[j])+"&";
}

}
}
String referer= request.getHeader("Referer");
String refurl = null;
if(!CommonUtil.isInvalid(referer)&&referer.endsWith(".do")){
refurl= referer;
}else{
if(CommonUtil.isInvalid(qstring)){
refurl= referer;
}else{
refurl= referer+"&"+qstring;
}
}
System.out.println("##################################refurl="+refurl);

//取得当前Action名
String name = invoker.getInvocationContext().getName();
//取得当前namespace
String namespace = invoker.getProxy().getNamespace();
if ((namespace != null) && (namespace.trim().length() > 0)) {
if ("/".equals(namespace.trim())) {
} else {
namespace += "/";
}
}
//取得当前URL
String URL = namespace + invoker.getProxy().getActionName();
URL += ".do";

//遍历request中getParameter中所有参数
Map parameterMap = request.getParameterMap();
Iterator iter = parameterMap.entrySet().iterator();

while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
String key = (String)entry.getKey();
String value = (String)request.getParameter(key);
//System.out.println("#############"+key+"="+request.getParameter(key));
if(!StringOperateUtil.urlRewriteCheck(key, value)){
return "urlRewrite";
}
}

}

0 件のコメント: