Spring Dispatcher Servlet在尝试加载我的CSS样式表时导致问题

问题描述 投票:0回答:1

当我加载我的JSP页面home.jsp时,我包含样式表signIn.css。但是在我无法加载资源的地方发生了一些事情:服务器响应了我的样式表状态404(Not Found)。当我的CSS文件存储在/customerPortal/src/main/webapp/WEB-INF/signIn.css时,我认为我的spring调度程序servlet正在寻找URI /customerPortal/signIn.css(没有使用spring我没有问题) 。我认为它与getServletMappings有关,它会切断文件位置。

我的CSS页面与home.jsp页面位于完全相同的位置。我还设置了SpringMvcInitializer类和MvcConfiguration类,因为我正在使用Spring启动。我也有一个家庭控制器。我没有使用spring-dispatcher-servlet.xml。

//MvcConfiguration.java

package Configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import ShoppingCart.Cart;

@Configuration
@ComponentScan(basePackages="Controllers/")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter {

    @Bean
    public ViewResolver getViewResolver()
    {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".jsp");

        return resolver;
    }

    @Bean
    public Cart getCart(){
        return new Cart();
    }
}

//SpringMvcInitializer.java

package Configuration;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

    @Override 
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] {MvcConfiguration.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    protected String[] getServletMappings() {

        return new String[] { "/" };
    }
}

//home.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@include file="header.jsp" %>
<link rel="stylesheet" href="/src/main/webapp/WEB-INF/signIn.css">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
</body
</html>

我的jsp和css页面存储在/customerPortal/src/main/webapp/WEB-INF/home.jsp /customerPortal/src/main/webapp/WEB-INF/signIn.css中

但是在我的eclipse控制台上,我得到以下内容: - 名为'dispatcher'的DispatcherServlet处理[/customerPortal/signIn.css]的GET请求 - 没有找到[/signIn.css]的处理程序方法 - 找不到HTTP请求的映射DispatcherServlet中的URI [/customerPortal/signIn.css],名称为“dispatcher”

在我的Chrome控制台浏览器上,我得到:获取http://localhost:8035/customerPortal/signIn.css net :: ERR_ABORTED 404(未找到)

当我的CSS文件存储在/ customer Portal / src / main / webapp / WEB-INF / signIn.css时,为什么要查找URI /客户门户/签到In.css?

css spring-boot spring-mvc jsp
1个回答
1
投票

为了您的信息,您不能使用URL直接访问WEB-INF,Java servlet将不允许它。此外,不要在WEB-INF下放置资源

你现在该怎么办?

在webapp下创建一个名为,resources的文件夹,然后为css(resources / css)创建一个文件夹。然后将所有css放在css文件夹下。并创建另一个文件夹js并将所有JavaScript文件放在那里。

然后将此方法添加到您的MvcConfiguration类。

@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
                .addResourceHandler("/resources/**")
                .addResourceLocations("/resources/");
    }

现在你在资源中拥有你的css,然后通过它访问它

<link rel="stylesheet" href="resources/css/signIn.css" />

解决当前问题,但不建议将静态资源放在WEB-INF下。

将您的<link rel="stylesheet" href="/src/main/webapp/WEB-INF/signIn.css">代码更改为此

<style><%@include file="/WEB-INF/signIn.css"%></style>

祝你好运......!快乐的编码..!

© www.soinside.com 2019 - 2024. All rights reserved.