如何在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
}}
下面是个很简单的例子
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
}}
解决方案 »
- 请问AJAX的xmlHttp.open("post",null,true)问题
- spring hibernate接口查询速度慢的奇怪
- 求助:资源文件问题res.properties(抢分啊)
- quartz任务调度框架的问题
- 高分求助,JAVA连数据库问题
- 我想学习软件开发
- RMI远程问题
- 有哪位朋友用过Xdoclet在bean中生成spring的minglength验证?请指教.
- velocity模板中怎样调用类的静态方法??
- oracle9i为什么在2000professional上只能安装客户端?数据库服务器无法安装。
- JBPM 的GPD 如何画转角的线
- Struts2、Spring3、MyBatis3整合的问题
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.send("userName=test");
现在我想从filter中判断数据来源,是通过form提交的还是通过ajax提交的。我想在ajax提交的参数中增加一个参数ajaxFlag,在filter中判断如果ajaxFlag为空的时候是通过form表单提交的,如果有值则是通过ajax提交的。
现在通过ajax提交的时候,在filter中无法取的ajax传递的参数值。换成get方式也不行。