相关疑难解决方法(0)

如何在Java中使用servlet过滤器来更改传入的servlet请求URL?

如何使用servlet过滤器来更改传入的servlet请求URL

http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123

http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123


更新:根据BalusC的以下步骤,我想出了以下代码:

public class UrlRewriteFilter implements Filter {

    @Override
    public void init(FilterConfig config) throws ServletException {
        //
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) req;
        String requestURI = request.getRequestURI();

        if (requestURI.startsWith("/Check_License/Dir_My_App/")) {
            String toReplace = requestURI.substring(requestURI.indexOf("/Dir_My_App"), requestURI.lastIndexOf("/") + 1);
            String newURI = requestURI.replace(toReplace, "?Contact_Id=");
            req.getRequestDispatcher(newURI).forward(req, res);
        } else {
            chain.doFilter(req, res);
        }
    }

    @Override
    public void destroy() {
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

相关条目web.xml如下所示: …

java url servlets request servlet-filters

179
推荐指数
3
解决办法
21万
查看次数

Servlet返回"HTTP状态404请求的资源(/ servlet)不可用"

我的文件WebContent/jsps夹中的JSP文件中有一个HTML表单.我servlet.javasrc文件夹中的默认包中有一个servlet类.在我web.xml的映射为/servlet.

action在HTML表单的属性中尝试了几个URL :

<form action="/servlet">
Run Code Online (Sandbox Code Playgroud)
<form action="/servlet.java">
Run Code Online (Sandbox Code Playgroud)
<form action="/src/servlet.java">
Run Code Online (Sandbox Code Playgroud)
<form action="../servlet.java">
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用.他们都在Tomcat 6/7/8中继续返回如下所示的HTTP 404错误:

HTTP状态404 - /servlet

描述:请求的资源(/ servlet)不可用.

或者如下面的Tomcat 8.5/9:

HTTP状态404 - 未找到

消息:/ servlet

描述:源服务器没有找到目标资源的当前表示,或者不愿意透露存在该资源

为什么不起作用?

html forms jsp servlets http-status-code-404

82
推荐指数
2
解决办法
10万
查看次数

带变量的Servlet映射(Tomcat 7.0)

是否可以将URL映射到servlet(可能是Tomcat特有的),以便后面的两个URL({id}是从代码中检索的变量),

/users/{id}/a

/users/{id}/b
Run Code Online (Sandbox Code Playgroud)

映射到两个不同的servlet,或者我是否必须为映射到的servlet实现我自己的某种过滤器/users/*

更清楚的是,具有该模式的任何URL /users/*/a都应映射到同一个servlet.同样的道理/users/*/b.

java tomcat servlets servlet-filters

8
推荐指数
2
解决办法
3652
查看次数

servlet的通配符路径?

有一个@WebServlet(urlPatterns = "/myServlet/").如果用户去myapp/myServlet/other,我仍然希望我的servlet能够捕获.所以说,在servlet路径之后的通配符.我怎么能这样做?

servlets wildcard url-pattern path-parameter

8
推荐指数
1
解决办法
7148
查看次数