- <struts>
- <package name="entity.workspaceManager" extends="json-default" namespace="/entity/manager">
- <interceptors>
- <interceptor name="urlDecodeFilterInterceptor"
- class="com.whaty.platform.sso.web.interceptor.UrlDecodeFilterInterceptor">
- </interceptor>
-
- <interceptor-stack name="urlDecodeStack">
- <interceptor-ref name="urlDecodeFilterInterceptor"></interceptor-ref>
- <interceptor-ref name="defaultStack"></interceptor-ref>
- </interceptor-stack>
-
- </interceptors>
-
- <default-interceptor-ref name="interceptorStack"></default-interceptor-ref>
- <global-results>
具体实现:
- package com.whaty.platform.sso.web.interceptor;
-
- import java.io.UnsupportedEncodingException;
- import java.net.URLDecoder;
- import java.util.Iterator;
- import java.util.Map;
-
- import javax.servlet.http.HttpServletRequest;
-
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.apache.struts2.ServletActionContext;
-
- import com.opensymphony.xwork2.ActionInvocation;
- import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-
- public class UrlDecodeFilterInterceptor extends AbstractInterceptor {
- private static final long serialVersionUID = -2335290125344040914L;
- private static final Log LOG = LogFactory.getLog(UrlDecodeFilterInterceptor.class);
-
- public String intercept(ActionInvocation invocation) throws Exception {
- Map parameters = invocation.getInvocationContext().getParameters();
- HttpServletRequest request = ServletActionContext. getRequest();
-
- if("get".equalsIgnoreCase(request.getMethod())){
- for (Iterator i = parameters.keySet().iterator(); i.hasNext();) {
- String param = (String) i.next();
- String[] values = (String[])parameters.get(param);
- if(values != null && values.length > 0){
- for (int j = 0; j < values.length; j++) {
- if(values[j] != null && !"".equals(values[j])){
- try {
- values[j] = new String(values[j].getBytes("iso8859-1"),"UTF-8");
- parameters.put(param, values[j]);
- } catch (UnsupportedEncodingException e1) {
- e1.printStackTrace();
- }
- }
- }
- }
- }
- }
-
- if("application/x-www-form-urlencoded;charset=UTF-8".equals(request.getContentType())){
- for (Iterator i = parameters.keySet().iterator(); i.hasNext();) {
- String param = (String) i.next();
- String[] values = (String[])parameters.get(param);
- if(values != null && values.length > 0){
- for (int j = 0; j < values.length; j++) {
- if(values[j] != null && !"".equals(values[j])){
- try {
- values[j] = URLDecoder.decode(values[j], "UTF-8");
- parameters.put(param, values[j]);
- } catch (UnsupportedEncodingException e1) {
- e1.printStackTrace();
- }
- }
- }
- }
- }
- }
-
- return invocation.invoke();
- }
- }
|