Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从JSP获取Servlet筛选器中的请求参数_Java_Jsp_Servlets_Servlet Filters - Fatal编程技术网

Java 无法从JSP获取Servlet筛选器中的请求参数

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

我无法从JSP下面传递用户名并在Servlet过滤器中访问它。下面是JSP&过滤器。我尝试过使用请求参数、属性和参数名称进行访问,但只得到空值。 我已经在调试模式下运行了应用程序,在我按下submit按钮后,它将进入过滤器。 如果我做错了什么,请告诉我。 JSP:


用户名

`
过滤器:

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>