request.setAttribute与chain.doFilter不兼容
问题描述:
我有两个servlet ReplayFilter
和VideoReplayServlet
。从ReplayFilter
,我打电话VideoReplayServlet
使用chain.doFilter
。我可以从ReplayFilter
调用VideoReplayServlet
,但我无法从VideoReplayServlet
中的请求对象中获取userId变量,我在调用chain.doFilter
之前已经在请求对象中设置了该变量。您可以在下面找到我的代码 -request.setAttribute与chain.doFilter不兼容
在ReplayFilter -
request.setAttribute("userId", userId);
request.setAttribute("uname", "mari");
chain.doFilter(请求,响应);
在VideoReplayServlet -
String uname = request.getParameter("uname");
String user_Id = request.getParameter("userId");
在VideoReplayServlet重播,我得到两个UNAME和USER_ID空。
任何人都可以帮助我吗?
答
我认为这里的问题是,你将它设置为一个属性,并期望它作为一个参数是矛盾的。 请尝试下面的代码代替
request.getAttribute("userId", userId); //Note the getAttribute() instead of getParameter()
请将您的'web.xml'文件与两个方法的代码一起发布到每个servlet中。 –
getAttribute和getParameter之间有趣的区别http://stackoverflow.com/questions/5243754/difference-between-getattribute-and-getparameter – Weslor