简体   繁体   English

筛选器Servlet无法与NetBeans中的glassfish一起使用

[英]Filter servlet not working with glassfish in netbeans

This is my web.xml 这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

     <filter>
            <display-name>MyFilter</display-name>
            <filter-name>MyFilter</filter-name>
            <filter-class>AB_DB.MyFilter</filter-class>
          </filter>
          <filter-mapping>
            <filter-name>MyFilter</filter-name>
            <url-pattern>/MyFilter</url-pattern>
          </filter-mapping>
          <servlet>
            <description></description>
            <display-name>Profile</display-name>
            <servlet-name>Profile</servlet-name>
            <servlet-class>AB_DB.Profile</servlet-class>
          </servlet>
          <servlet-mapping>
            <servlet-name>Profile</servlet-name>
            <url-pattern>/Profile</url-pattern>
          </servlet-mapping>
        </web-app>

This is the filter servlet I've tried 这是我尝试过的过滤器servlet

package AB_DB;


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 MyFilter() {
    }

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        String requri = ((HttpServletRequest) request).getRequestURI().substring(((HttpServletRequest) request).getContextPath().length() + 1);
        System.out.println(requri);
        //if request uri starts with user/ then system will forward the request to Profile servlet
        if (requri.startsWith("user/")) {
            //get userid from request uri
            String id = requri.substring(5);
            System.out.println(id);

            //set attribute "user" with userid value
            request.setAttribute("user", id);

            //forward the request to Profile servlet
            request.getRequestDispatcher("/Profile")
                    .forward(request, response);
        } else {
            chain.doFilter(request, response);
        }
    }

    public void init(FilterConfig fConfig) throws ServletException {
    }

}

However in the GlassFish 4 server log, there is no errors at all when running the project. 但是,在GlassFish 4服务器日志中,运行项目时完全没有错误。 The URI isnt even being printed out with 'System.out.println(id);' 甚至不使用“ System.out.println(id);”来打印URI。 so I assume that the filter isnt even being injected. 所以我假设过滤器甚至没有被注入。

Can anyone see any issues with my code? 谁能看到我的代码有任何问题? The sevlet Profile isn't being ran sevlet配置文件未运行

You have mapped oyur filter to /MyFilter 您已将oyur过滤器映射到/MyFilter

<url-pattern>/MyFilter</url-pattern>

and that doesn't match with URL you are requesting 且与您要求的网址不符

/user/Surname1993

so your filter won't get invoked 这样您的过滤器就不会被调用

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM