当前位置:编程学习 > JAVA >>

在fitler 中获取 ajax传递的参数

如何在filter中获取ajax 传递的参数。request.getQueryString()为空,request.getParameter("userName")也为空。如果用form提交,在filter中 就能获取到参数。
下面是个很简单的例子
js代码,ajax 不管是用get方式还是用post方式,在filter中也无法获取 ajax传递的参数。
<script type="text/javascript">
  
   window.onload = funtion(){
   var xmlHttp = getXmlHttp();
   var url = "<%=basePath%>/index.jsp";
   xmlHttp.onreadystatechange = function() {
   if (xmlHttp.readyState == 4) {
   if (xmlHttp.status == 200) {
   var resultText = xmlHttp.responseText;
   }
   }
   }
   xmlHttp.open("POST",url,true);
   xmlHttp.send("userName=test");
   }
  
   function getXmlHttp(){
   try {

// for IE
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
try {

// for non IE
return new XMLHttpRequest();
} catch (e) {
throw new Error("无法创建XMLHttpRequest对象。");
}
}
   }
  </script>

web.xml中只配置了一个filter
<filter>
<filter-name>myFilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

java文件 filter
package filter;

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 MyFilter implements Filter {

public void destroy() {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest)req;
                //这一行获取的参数值为空。
String str = request.getQueryString();
if(str == null){
return ;
}
chain.doFilter(req, resp);
}

public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}

}
--------------------编程问答-------------------- String str = request.getParameter("userName");试一试.. --------------------编程问答--------------------
引用 1 楼 Mr_sunboy 的回复:
String str = request.getParameter("userName");试一试..

也不行,也是null --------------------编程问答-------------------- post请求需要加一个请求头..

xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.send("userName=test");
--------------------编程问答-------------------- xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  加请求头 --------------------编程问答--------------------
引用 4 楼 blackkeai 的回复:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  加请求头

加上也不管用 --------------------编程问答-------------------- 使用form提交,可以获得到。
现在我想从filter中判断数据来源,是通过form提交的还是通过ajax提交的。我想在ajax提交的参数中增加一个参数ajaxFlag,在filter中判断如果ajaxFlag为空的时候是通过form表单提交的,如果有值则是通过ajax提交的。
现在通过ajax提交的时候,在filter中无法取的ajax传递的参数值。换成get方式也不行。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,