springboot 如何添加webapp文件夹

目录
  • springboot 添加webapp文件夹
  • 踩坑:添加webapp文件夹能访问jsp却找不到静态资源404
    • 目录结构
    • 解决方法

springboot 添加webapp文件夹

spring boot框架本身他没有webapp文件夹的,如果要实现前后台不分离,就需要手动创建webapp问价夹。

这是一个刚创建好的spring boot项目。接下来我们手动用idea给这个项目创建一个webapp。

这里先新建一个空的webapp文件夹

接下来点击ProjectStructure,就是上面那两张截图都可以

点击modules,点击右面左上方的+号,找到web,点击

web添加后就是这样了,我们可以点击右边的小笔来编辑wenapp的目录,全部定位到我们新建的webapp文件夹下

出来后如果要是发现有这个小蓝点就成功了。

踩坑:添加webapp文件夹能访问jsp却找不到静态资源404

这次项目突发奇想想用一次springboot,但是入坑才发现坑好多啊。

项目说明:springboot版本是2.2.2,jdk是1.8

springboot官方推荐使用thymeleaf模板引擎,把静态资源放到resources下面的static中,然后页面放到templement中,但这次因为时间比较紧,所以我想把以前项目里面的webapp直接搬过来,里面的jsp直接使用,结果jsp能访问到,但里面的图片,css,js全都报404错误。

目录结构

直接在与java同级创建一个webapp目录, 然后把以前旧spring MVC项目中的webapp直接复制了过来。

结果访问里面的jsp可以正常访问到,但静态资源全都找不到了。

单独访问css都是都跳转到报错页面

道理我知道点,应该是springboot默认拦截所有uri用作各种处理,然后就把静态资源也拦了,想不拦就得配置放行。

然后百度了一堆方法不过可能是springboot版本不一样或者是jdk版本不一样,反正就是实现不了,prop文件配置也不生效,最后好不容易找到一个我这个版本可以使用的方法:

springboot默认扫描的静态资源的路径是这些

  • classpath:/static
  • classpath:/public
  • classpath:/resources
  • classpath:/META-INF/resources

我们的目标就是就是把webapp中的内容编译到最后一种classpath:/META-INF/resources中,然后放行这个路径即可

解决方法

1.在pom.xml中的build->resources中增加这个,作用是吧webapp编译到 META-INF/resources 中

<resource>
    <directory>src/main/webapp</directory>
    <targetPath>META-INF/resources</targetPath>
    <includes>
        <include>**/**</include>
    </includes>
</resource>

这种重新编译后可以看到webapp已经被编译进去了

2.增加一个配置类

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;

@Configuration
public class staticConfig implements WebMvcConfigurer {
    //这个写不写没啥用
   /* @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())
                .excludePathPatterns("/META-INF/resources*");
    }*/

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/");
    }
}

这样访问,我的css,js终于出来了!!!

如果还有问题,需要检查是否拦截器中return成false了,如果返回结果不是404,而是500啥的,需要检查是否是设置了字符集编码转换造成的,我找不到的一个原因就是字符集转换造成的。

ps:虽说springboot放行了静态资源拦截,我加了登录拦截器后静态资源又被拦截器拦截了。

所以又得指定放行相关文件,增加excludePathPatters就行

package com.bomc.enterprise.config;
import com.bomc.enterprise.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    //不注册这个在过滤器中 service将报空
    @Bean
    public LoginInterceptor loginInterceptor(){
        return new LoginInterceptor();
    }

    //添加拦截器方法
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加拦截路径
        String[] addPathPatters={
                "/**"
        };
        //添加不拦截路径
        String[] excludePathPatters={
                "/", "/login/login", "/login/loginPage","/login/register",
                "/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg",
                "/**/*.jpeg", "/**/*.gif", "/**/fonts/*", "/**/*.svg",
                "/**/*.ttf","/**/*.woff","/**/*.eot","/**/*.otf","/**/*.woff2"
        };
        //注册登录拦截器
        registry.addInterceptor(loginInterceptor()).addPathPatterns(addPathPatters).excludePathPatterns(excludePathPatters);
        //如果多条拦截器则增加多条
    }

    //添加放行静态资源
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/");
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot中配置Web静态资源路径的方法

    介绍: 本文章主要针对web项目中的两个问题进行详细解析介绍:1- 页面跳转404,即controller转发无法跳转页面问题:2- 静态资源文件路径问题. 项目工具: Intelij Idea, JDK1.8, SpringBoot 2.1.3 正文: 准备工作:通过Idea创建一个SpringBoot-web项目,此过程不做赘述,创建完成后项目结构如下图: 1- 创建一个controller代码如下: package com.example.webpractice.controller; i

  • 详解SpringBoot之访问静态资源(webapp...)

    springboot访问静态资源,默认有两个默认目录, 一个是  classpath/static 目录 (src/mian/resource) 一个是 ServletContext 根目录下( src/main/webapp ) 这在里可能有小伙伴对 classpath 不怎么了解,这里简要的介绍下,classpath 即WEB-INF下面的classes目录 ,在springboot项目中可能就是,src/main/resource 目录. 1,classpath 目录下-访问默认文件夹名为

  • 运用springboot搭建并部署web项目的示例

    前言 一直以来都是用springmvc+mybatis进行后端接口开发工作,最近闲来无事,根据现有功能需求,用springboot+mybatis部署一套简单的web项目. 所用工具 IntelliJ IDEA 2018.1.4 JDK 1.8 apache-tomcat-8.0.50 所解决的问题 1.如何用idea创建springboot项目 2.如何进行 服务器.数据库.mybatis.视图解析器的配置 3.如何使用mybatis generator 自动生成代码 4.如何使用multip

  • springboot 如何添加webapp文件夹

    目录 springboot 添加webapp文件夹 踩坑:添加webapp文件夹能访问jsp却找不到静态资源404 目录结构 解决方法 springboot 添加webapp文件夹 spring boot框架本身他没有webapp文件夹的,如果要实现前后台不分离,就需要手动创建webapp问价夹. 这是一个刚创建好的spring boot项目.接下来我们手动用idea给这个项目创建一个webapp. 这里先新建一个空的webapp文件夹 接下来点击ProjectStructure,就是上面那两张

  • idea创建项目没有webapp文件夹的解决方法

    1.点击菜单栏File →Project Structure 2.在Modules模块中,增加web配置 3.设置web根目录和web.xml文件所在位置. 自动生成的目录中,web改成src\main\webapp,如下图 4.点击OK,效果如下图 到此这篇关于idea创建项目没有webapp文件夹的解决方法的文章就介绍到这了,更多相关idea没有webapp文件夹内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • Android studio 添加assets文件夹的方法

    我们知道Eclipse创建的工程默认是有个assets文件夹的,但是Android studio默认没有帮我们创建,那么我们就自己创建一个就好啦. (1)手动创建 在项目的顶部有个下拉,默认选择的是Android, 但是在Android 模式下不能真实反映整个工程的目录结构,所以我们点击它在下拉选项中选择Project,选完之后目录发生了变化 我们找到/src/main,选中main文件夹右键新建一个文件夹,命名为assets,这样就OK了. (2)自动创建 Android studio提供了一

  • 如何利用NTFS加密文件及文件夹

    NTFS是WinNT以上版本支持的一种提供安全性.可靠性的高级文件系统.在Win2000和WinXP中,NTFS还可以提供诸如文件和文件夹权限.加密.磁盘配额和压缩这样的高级功能. 一.加密文件或文件夹 步骤一:打开Windows资源管理器. 步骤二:右键单击要加密的文件或文件夹,然后单击"属性". 步骤三:在"常规"选项卡上,单击"高级".选中"加密内容以便保护数据"复选框 在加密过程中还要注意以下五点: 1.要打开&quo

  • Android 多国语言value文件夹命名的方法

    新建多国语言包 要在android studio项目中新建多国语言包,有两种方式,一种是手动建,一种是用使用android studio辅助建. 手动新建 在res目录下建立不同名称的values文件来调用不同的语言包 Values文件总结如下: 中文(中国):values-zh-rCN中文 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英語(美国):values-en-rUS 英語(英国):values-en-rGB 英文(澳大利亚):values-en-

  • ASP.NET Core中的wwwroot文件夹

    ASP.NET Core中wwwroot文件夹 默认情况下,ASP.NET Core应用程序中的wwwroot文件夹被视为webroot文件夹,并且该文件夹或目录应位于根项目文件夹中. 在ASP.NET Core应用程序中,静态文件可以存储在webroot文件夹下的任何文件夹中,并且可以使用指向该根目录的相对路径进行访问. 添加wwwroot(webroot)文件夹 当使用Web和MVC模板创建ASP.NET Core Web应用程序时,默认情况下,该文件夹(wwwroot)在根项目文件夹中创建

  • SpringBoot如何通过webjars管理静态资源文件夹

    WebMvcAutoConfiguration 添加资源映射: public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); } else { Duration cachePeriod = this.resource

  • java实现文件夹上传功能实例代码(SpringBoot框架)

    目录 前言 一.前端如何设置上传组件并将资源上传到后台服务 1)首先我们需要新建一个用来提交文件夹的form表单 2)然后我们添加自己框架内的一些按钮来触发该隐藏的表单 二.后台如何接收处理文件夹表单数据 总结 前言 有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下 一.前端如何设置上传组件并将资源上传到后台服务 这里的项目框架为若依VUE版本,下面将核心的代码

  • springboot如何获取相对路径文件夹下静态资源的方法

    今日遇到一个问题:springboot需要获取到一个自定义名称文件夹下的静态资源(图片等),并且文件夹的路径不在classPath下面,而是一个相对路径. 一开始使用修改配置文件的方式: # 配置静态资源访问前缀 spring.mvc.static-path-pattern=*/** # 配置静态资源路径,默认配置失效 spring.resources.static-locations=../upload 发现并不行,无法解析出相对路径. 后面通过自定义静态资源映射配置类实现了: @Config

  • VSCODE添加open with code实现右键打开文件夹

    问题描述 由于之前在安装VSCODE的时候,没注意详细阅读提示,而且第一次安装比较随意,只是带着想试一下VSCODE才安装的,所以安装的时候漏了勾选open with code这个非常好用的功能!!! 我怎么发现的呢?是因为我最近在学VUE.JS的时候总是要打开一个文件夹但是发现人家都可以直接右键打开,但是我却非要先打开VSCODE,打开文件夹,这多麻烦啊,效率太低了吧???后来查了一下才发现原来是漏了勾选这个选项,哭了!!! 我的环境 win10 vscode v1.31.1 那么我们应该怎么

随机推荐