【问题标题】:Web.xml warning "File name references to main that does not exist in web content"Web.xml 警告“对 Web 内容中不存在的 main 的文件名引用”
【发布时间】:2018-04-12 15:37:38
【问题描述】:

问题:

  1. 我想在 web.xml 中将 servlet 'main' 设置为欢迎文件,但它显示警告“对 web 内容中不存在的 main 的文件名引用”
  2. 浏览器无法访问 CSS 文件,但可以访问位于同一父目录“assets”下的图像
  3. 我想知道这两个问题是否相关以及如何解决它们

我已经参考过的内容:

  1. how-to-include-external-css-file-in-jsp
  2. 类似的 SO 问题:123

结果:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.1"
 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
 <display-name>SampleApplication</display-name>
 <welcome-file-list>
  <welcome-file>main</welcome-file>
 </welcome-file-list>
</web-app>

MainServlet.java

@WebServlet(name = "main", urlPatterns = { "/main" })
public class MainServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public MainServlet() {
        super();
    }

    /**
     * Forwards to the main page.
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        RequestDispatcher dispatcher
        = this.getServletContext().getRequestDispatcher("/WEB-INF/views/MainView.jsp");
        dispatcher.forward(request, response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //Additional Logic
    }

MainView.jsp

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ship Short Dated Products</title>

<!-- ---------------------- BOOTSTRAP AND CUSTOM STYLESHEETS ----------------------- -->
<link rel="stylesheet" type="text/css"
    href="<c:url value="http://fonts.googleapis.com/css?family=Roboto:400,100,300,500" />">
<link rel="stylesheet" type="text/css"
    href="<c:url value="/assets/bootstrap-3.3.7-dist/css/bootstrap.min.css" />">
<link rel="stylesheet" type="text/css"
    href="<c:url value="/assets/font-awesome/css/font-awesome.min.css" />">
<link rel="stylesheet" type="text/css"
    href="<c:url value="/assets/css/form-elements.css" />">
<link rel="stylesheet" type="text/css"
    href="<c:url value="/assets/css/main-layout.css" />">

<!-- 
--------------------------- JQUERY AND BOOTSTRAP PLUGINS -------------------------------
--------------------------- Please maintain the order for libs -------------------------
-->
<script
    src="<c:url value="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" />"></script>
<script
    src="<c:url value="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" />"></script>

<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->

</head>

<body>
    <!-- -------------------------------- IMAGE CONTENT -------------------------------- -->
    <img class="img-responsive" src="assests/images/HMSGradient.jpg">
    <!-- IMAGE CONTENT End -->

</body>
</html>

目录结构

谢谢!

【问题讨论】:

    标签: java css jsp servlets web.xml


    【解决方案1】:

    您应该在&lt;welcome-file&gt; 元素中定义一个欢迎文件列表。所以请尝试将其更改为&lt;welcome-file&gt;MainView.jsp&lt;/welcome-file&gt;,并将jsp文件移动到WebContent/main/。另外,你不需要MainServlet.java

    【讨论】:

    • 我更喜欢将 jsp 文件保存在 WEB-INF 中,用户看不到它。如果我将路径设置为&lt;welcome-file&gt;/WEB-INF/views/MainView.jsp&lt;/welcome-file&gt;,它可以在没有任何警告的情况下工作。相反,如果不对该路径进行硬编码,我想使用 servlet 名称来获取该页面。另外,如果我将其更改为您的方法,它会加载 MainView.jsp 的 CSS 文件吗?
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2013-03-15
    • 2013-01-20
    相关资源
    最近更新 更多