【Java】Servlet 返回的html静态资源寻找失败
- 在springboot项目中重写了一个servlet并且配置
server:port: 8132
servlet:
context-path: /aaa
- servlet 配置
@Beanpublic ServletRegistrationBean commonServlet() {
if (log.isDebugEnabled()) {
log.debug("开始初始化common servlet");
}
ServletRegistrationBean servletServletRegistrationBean = new ServletRegistrationBean();
servletServletRegistrationBean.setServlet(new ResourceServlet("/support/"));
Map<String, String> initParams = new HashMap<>(10);
HfViewConfig bean = context.getBean(HfViewConfig.class);
if (bean != null && !bean.equals(new HfViewConfig())) {
initParams.put(PARAM_NAME_USERNAME, bean.getLogin());
initParams.put(PARAM_NAME_PASSWORD, bean.getPassword());
}
servletServletRegistrationBean.addUrlMappings(new String[]{"/common/*"});
servletServletRegistrationBean.setInitParameters(initParams);
if (log.isDebugEnabled()) {
log.debug("开始初始化common servlet 完成.");
}
return servletServletRegistrationBean;
}
- 在首页添加了 本地的静态资源
<link href="https://segmentfault.com/q/1010000037670786/css/demo.css" rel="stylesheet"><script src="https://segmentfault.com/q/1010000037670786/js/a.js"></script>
- 在页面上加载失败了如何解决
在druid中有下面图中文件
采用的读取方式即: 读取html文件本身,其html在浏览器中
它的url会被带有
相关druid配置代码
@Beanpublic ServletRegistrationBean statViewServlet() {
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/drc/*");
Map<String, String> initParams = new HashMap<>();
initParams.put("loginUsername", "admin"); //设置登陆账号密码
initParams.put("loginPassword", "123456");
initParams.put("allow", "");
bean.setInitParameters(initParams);
return bean;
}
回答
Spring Boot 加载静态资源的默认路径为
/META-INF/resources/
/resources/
/static/
/public/
参见:
https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot
https://spring.io/guides/gs/serving-web-content/
support
并不在默认路径之列,所以下面的样式和脚本不会被加载到。试试放到上面的路径之一。
即,可以在resources/
目录下创建一个static/
或public/
目录,并将静态内容放在该目录下。通过以下方式可以访问它们http://localhost:8080/your-file.ext
。(假设server.port
是8080)
也可以通过在application.properties
配置文件中使用spring.resources.static-locations
中自定义静态资源目录。
例如:
spring.resources.static-locations=classpath:/custom/
现在,您可以使用custom/
下方的文件夹resources/
提供静态文件。
更新:
也可以使用java config:
@Configurationpublic class StaticConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/custom/");
}
}
此配置将目录的内容映射custom
到http://localhost:8080/static/**
url。
- 在druid中有这样一段代码
if (isRequireAuth() // && !ContainsUser(request)//
&& !checkLoginParam(request)//
&& !("/login.html".equals(path) //
|| path.startsWith("/css")//
|| path.startsWith("/js") //
|| path.startsWith("/img"))) {
if (contextPath.equals("") || contextPath.equals("/")) {
response.sendRedirect("/druid/login.html");
} else {
if ("".equals(path)) {
response.sendRedirect("druid/login.html");
} else {
response.sendRedirect("login.html");
}
}
return;
}
使用response.sendRedirect
用来返回页面地址此时
会发生变化会变为login.html
以上是 【Java】Servlet 返回的html静态资源寻找失败 的全部内容, 来源链接: utcz.com/a/86623.html