Java 无法从JSP获取Servlet筛选器中的请求参数
我无法从JSP下面传递用户名并在Servlet过滤器中访问它。下面是JSP&过滤器。我尝试过使用请求参数、属性和参数名称进行访问,但只得到空值。 我已经在调试模式下运行了应用程序,在我按下submit按钮后,它将进入过滤器。 如果我做错了什么,请告诉我。 JSP:Java 无法从JSP获取Servlet筛选器中的请求参数,java,jsp,servlets,servlet-filters,Java,Jsp,Servlets,Servlet Filters,我无法从JSP下面传递用户名并在Servlet过滤器中访问它。下面是JSP&过滤器。我尝试过使用请求参数、属性和参数名称进行访问,但只得到空值。 我已经在调试模式下运行了应用程序,在我按下submit按钮后,它将进入过滤器。 如果我做错了什么,请告诉我。 JSP: 用户名 ` 过滤器: public class UserFilter implements Filter { FilterConfig config; Boolean flag; @Suppress
用户名
`
过滤器:
public class UserFilter implements Filter {
FilterConfig config;
Boolean flag;
@SuppressWarnings("unused")
private Logger log = ResourceLocator.getInstance().getLogger(this);
public void init(FilterConfig config) {
this.config = config;
}
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpSession httpSession = httpRequest.getSession();
Enumeration<String> params = httpRequest.getParameterNames();
while(params.hasMoreElements()){
String name = params.nextElement();
String value = request.getParameter(name);
log.debug("Name : ",name);
log.debug("value : ",value);
}
if (request.getParameter("username") == null && (request.getAttribute("username") == null)) {
RequestDispatcher dispatcher1 = request.getRequestDispatcher("/logon.jsp");
if (dispatcher1 != null) {
dispatcher1.forward(request, response);
return;
}
}
}
public类UserFilter实现过滤器{
过滤器配置;
布尔标志;
@抑制警告(“未使用”)
私有记录器日志=ResourceLocator.getInstance().getLogger(此);
public void init(FilterConfig配置){
this.config=config;
}
@抑制警告(“未选中”)
public void doFilter(ServletRequest请求、ServletResponse响应、FilterChain链)抛出IOException、ServletException{
HttpServletRequest httpRequest=(HttpServletRequest)请求;
HttpSession HttpSession=httpRequest.getSession();
枚举参数=httpRequest.getParameterNames();
while(params.hasMoreElements()){
字符串名称=params.nextElement();
字符串值=request.getParameter(名称);
log.debug(“名称:”,名称);
调试(“值:”,值);
}
if(request.getParameter(“用户名”)==null&(request.getAttribute(“用户名”)==null)){
RequestDispatcherDispatcher1=request.getRequestDispatcher(“/logon.jsp”);
如果(dispatcher1!=null){
调度员1.转发(请求、响应);
返回;
}
}
}
web.xml
<filter>
<filter-name>CommonUserContextFilter</filter-name>
<filter-class>UserContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CommonUserContextFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CommonUserContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CommonUserContextFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
CommonUserContextFilter
UserContextFilter
CommonUserContextFilter
*.做
CommonUserContextFilter
/*
CommonUserContextFilter
*.jsp
请共享您的web.xmlso r您使用Servlet和Http请求获取空值?您是否可以尝试直接从httpRequest获取,而不使用枚举?那么,在调试模式下,过滤代码何时被命中?Shivam,是的,我获取Servlet和Http的空值。我按下提交按钮后,过滤代码被命中。我看到您的过滤器类不在包中。请将您的筛选器类移动到包中。例如com.*.*等。可能是我的评论没有意义,但您可以尝试一下吗
<filter>
<filter-name>CommonUserContextFilter</filter-name>
<filter-class>UserContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CommonUserContextFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CommonUserContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CommonUserContextFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>