相关疑难解决方法(0)

servlet映射url模式中/和/*之间的区别

熟悉的代码:

<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映射?

web.xml servlets url-pattern

171
推荐指数
4
解决办法
17万
查看次数

在调用转发到JSP的Servlet时,浏览器无法访问/查找CSS,图像和链接等相关资源

当我将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)

css jsp servlets image

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

在/*上映射全局前端控制器servlet时如何访问静态资源

我将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/文件都在文件夹中.

我怎么能访问它们?

java resources servlets

58
推荐指数
8
解决办法
11万
查看次数

在WEB-INF下移动资源

我有一个包含数百个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服务器.

web.xml servlets web-inf

5
推荐指数
2
解决办法
2337
查看次数

Spring WAR中的CSS文件返回404

我有一个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请求.处理此问题的最佳方法是什么?我宁愿不必更改所有请求映射.

html css jsp maven

4
推荐指数
1
解决办法
5494
查看次数

标签 统计

servlets ×4

css ×2

jsp ×2

web.xml ×2

html ×1

image ×1

java ×1

maven ×1

resources ×1

url-pattern ×1

web-inf ×1