gpt4 book ai didi

java - 为图像请求重写创建 Java 过滤器

转载 作者:行者123 更新时间:2023-11-30 05:03:51 25 4
gpt4 key购买 nike

我创建了一个过滤器,它可以很好地处理我的应用程序收到的所有请求,为此我编写了新的类 ResourceRequestWrapper ,它扩展了 HttpServletRequestWrapper 来修改请求。

例如,当请求 /ui/tx/images/abc.png 时,我已覆盖 getServletPath()getRequestURL() HttpServletRequestWrapper 的 > 和 getRequestURI() 方法将传入请求的文本修改为 /txeditor/images/abc.png

现在,我通过修改server.xml并添加以下内容在JBoss/Tomcat中创建了虚拟目录,

<Context path="/txeditor" docBase="C:\resources\web_resources\txeditor.war" unpackWAR="false">               
</Context>

我还在C:\resources\web_resources\txeditor.war中定义了WEB-INF并创建了部署描述符,如下所示,

<?xml version="1.0"?>

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>Web descriptor for the html adaptor</description>
</web-app>

上面的一切都工作正常,每个请求都会被修改,但是当我的页面打开时,我看不到任何图像,我认为当我们修改过滤器的请求以访问 server.xml< 中定义的虚拟目录时,这不可能吗?

有人有其他想法吗?

最佳答案

这确实行不通。您想要重定向请求。

String oldUrl = request.getRequestURI();
String newUrl = oldUrl.replaceFirst("/ui/tx/", "/txteditor/");
response.sendRedirect(newUrl);

如果您想要永久 (301) 重定向,请执行以下操作而不是最后一行:

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newUrl);

关于java - 为图像请求重写创建 Java 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5755810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com