gpt4 book ai didi

java - 防止 css 经历 reSTLet

转载 作者:行者123 更新时间:2023-12-02 07:47:11 27 4
gpt4 key购买 nike

我多年来一直在寻找这个问题的答案,但在任何地方都找不到。真心希望有人能帮忙

我的结构:

WebContent
- resources
- css
- style.css
- WEB-INF
- web.xml
template.html

web.xml

 <servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

Application.java

String ROOT_URI = "C:/projects/testsite/WebContent/"
try {
configuration.setDirectoryForTemplateLoading(new File(ROOT_URI));
configuration.setObjectWrapper(new BeansWrapper());
} catch (IOException e) {
e.printStackTrace();
}

router.attach("/resources", new Directory(getContext(), LocalReference.createFileReference(ROOT_URI)));
router.attach("/index", IndexResource.class);

当我访问 URL:localhost:8080/testsite/index 时,我得到了模板文件,其中填充了正确的数据。但是 CSS 未加载。我可以在我的 Eclipse 控制台中看到 ReSTLet 正在尝试获取它,但我得到了 404

127.0.0.1   8080    GET /testsite/resources/css/style.css   -   404

正如您在上面看到的,我尝试使用 Directory 类来加载我的 css 目录,但没有效果。也许这是错误的!?有没有办法让css不经过reSTLet呢?如果 ROOT_URI 是相对路径而不是绝对路径,那就太好了。有没有更简单的方法来获取我的位置路径?

最佳答案

我首先注意到,由于您的目录基于"file"协议(protocol),因此应用程序的容器必须声明此客户端连接器。这是在 web.xml 配置文件中完成的:

<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>test.MyApplication (actually the full name of your Application</param-value>
</init-param>
<init-param>
<param-name>org.restlet.clients</param-name>
<param-value>FILE</param-value>
</init-param>
</servlet>

如果没有此说明,我认为您的日志包含一些类似于以下内容的条目:

ATTENTION: The protocol used by this request is not declared in the list of client connectors. (FILE)

话虽如此,使用"file"协议(protocol)来提供静态文件会将您的应用程序与文件系统联系起来。您可以在内部提供这些文件,也就是说让容器在应用程序 WAR 中查找静态资源(可能未压缩)。您可以简单地将目录基于“war”协议(protocol),如下所示:

router.attach("/resources", new Directory(getContext(), "war:///"));

希望这对您有帮助。

最诚挚的问候,蒂埃里·布瓦洛

关于java - 防止 css 经历 reSTLet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10664233/

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