熟悉的代码:
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我的理解是/*地图http://host:port/context/*.
怎么样/?它肯定不会映射到http://host:port/contextroot.事实上,它会接受http://host:port/context/hello,但拒绝http://host:port/context/hello.jsp.
任何人都可以解释如何http://host:port/context/hello映射?
当我将servlet转发到JSP时,我在加载CSS和图像以及创建指向其他页面的链接方面遇到了麻烦.具体而言,当我把我的<welcome-file>给index.jsp的CSS被加载并正在显示我的图片.但是,如果我将我设置<welcome-file>为HomeServlet哪个转发控制index.jsp,则不应用CSS并且不显示我的图像.
我的CSS文件在web/styles/default.css.
我的照片在web/images/.
我像这样链接到我的CSS:
<link href="styles/default.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
我正在显示我的图像如下:
<img src="images/image1.png" alt="Image1" />
Run Code Online (Sandbox Code Playgroud)
这个问题是怎么造成的,怎么解决?
更新1:我添加了应用程序的结构,以及其他一些可能有用的信息.

该header.jsp文件是包含CSS链接标记的文件.该HomeServlet设置为我welcome-file在web.xml:
<welcome-file-list>
<welcome-file>HomeServlet</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
servlet被声明并映射为web.xml:
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>com.brianblog.frontend.HomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
更新2:我最终发现了问题 - 我的servlet映射不正确.显然当设置一个Servlet时,<welcome-file>它不能有一个URL模式/,我觉得有点奇怪,因为它不代表网站的根目录?
新映射如下:
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/HomeServlet</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud) 我将Spring MVC调度程序映射为全局前端控制器servlet /*.
<servlet>
<servlet-name>home</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>home</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
但是,此映射会停止访问CSS,JS,图像等静态文件,这些/res/文件都在文件夹中.
我怎么能访问它们?
我有一个包含数百个HTML,JavaScript和图像文件的Web应用程序.这些文件位于根目录下:
my_root--
-- html
-- js
-- images
Run Code Online (Sandbox Code Playgroud)
这些文件夹包含一些子文件夹.
出于安全原因,我需要将所有这些资源移到WEB-INF文件夹下,这样它们就无法直接访问.
目前,JSP和servlet文件已经在WEB-INF文件夹下.
对于我来说,安全地移动WEB-INF下的所有HTML/JavaScript /图像文件夹而不破坏所有链接/转发到这些文件夹中的资源并确保这些资源无法直接访问的最简单方法是什么?
我正在使用WebSphere和WebLogic服务器.
我有一个Java EE应用程序,我正在使用Spring和Maven构建.它具有通常的项目结构.这是一个层次结构.
MyApplication
src
main
webapp
WEB-INF
layout
header.jsp
styles
main.css
Run Code Online (Sandbox Code Playgroud)
我想在我的JSP中包含该CSS文件.我有以下标签.
<c:url var="styleSheetUrl" value="/styles/main.css" />
<link rel="stylesheet" href="${styleSheetUrl}">
Run Code Online (Sandbox Code Playgroud)
部署应用程序时,未找到CSS页面.当我查看页面源时,href是/MyApplication/styles/main.css.在WAR内部,有一个/styles/main.css.但是,当我尝试直接在浏览器中访问CSS文件时,我得到了404.
我发现问题的原因是Dispatcher Servlet映射.映射如下所示.
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我想Dispatcher Servlet不知道如何处理CSS请求.处理此问题的最佳方法是什么?我宁愿不必更改所有请求映射.