我开始了一个Spring Boot MVC项目,意识到资源
中有两个文件夹。一个叫做模板
,另一个叫做静态
。我真的很喜欢这个文件夹设置。
问题是我的视图使用了JSP模板。我无法将. jsp
模板放在模板
文件夹中并使其工作。我需要做的是在与src
和资源
相同的级别上创建一个webapp
文件夹。将我的JSP模板放在那里,然后可以找到我的视图。
我需要重新配置什么才能在资源中的
模板文件夹中实际使用我的JSP模板?
总而言之,到目前为止,所有建议的答案都不适合我。使用空白的Spring boot starter项目。
不知何故,Spring或Servlet内部看起来有些东西是硬连线的,因此JSP必须位于webapp(或子文件夹)中。与默认的thymeleaf模板不同,默认的thymeleaf模板在资源/模板中查找。
我尝试了各种各样的改变,真的有很多不同的配置,但无法修改这种行为。它只是产生了复杂性,无法再为JSP服务。所以,底线是,如果您使用JSP,只需将它们放在Web应用程序中即可。它还可以使用以下控制器添加零配置:
@GetMapping(“/foo”)公共字符串serveFoo(){return“webapp/foo.jsp内的相对路径”;}
另一方面,默认情况下,
/webapp
文件夹也将隐藏在Spring ToolSuite中,因此您必须手动将其配置为“源文件夹”。
由于为Thymeleaf和FreeMarker自动配置的ResourceUrlEncodingFilter,到资源的链接在运行时在模板中重写。在使用JSP时,应该手动声明此过滤器。来源
除了REST Web服务,您还可以使用Spring MVC提供动态超文本标记语言内容。Spring MVC支持多种模板技术,包括Thymeleaf、FreeMarker和JSP。
[...]
如果可能,应避免使用JSP,在将它们与嵌入式servlet容器一起使用时存在几个已知限制。
[..]
当您在默认配置下使用其中一个模板引擎时,您的模板将自动从src/main/resources/templates中获取。
来源
来源
告诉spring boot从哪里加载JSP文件。在应用程序中。属性集
spring.mvc.view.prefix: /WEB-INF/views/
spring.mvc.view.suffix: .jsp
来源
如果您确实想在spring boot中使用JSP,这里有两个示例:
https://github.com/spring-projects/spring-boot/tree/v1.5.9.RELEASE/spring-boot-samples/spring-boot-sample-web-jsp
https://github.com/joakime/spring-boot-jsp-demo
根据Maven文档,在战争中,src/main/resources将最终出现在WEB-INF/classes中。
这就完成了应用程序中Spring Boot的技巧。属性:
spring.mvc.view.prefix = /WEB-INF/classes/templates
spring.mvc.view.suffix = .jsp
如果你喜欢Java配置,这是一条路:
@EnableWebMvc
@Configuration
public class ApplicationConfiguration extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver jspViewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setPrefix("/WEB-INF/classes/templates/");
bean.setSuffix(".jsp");
return bean;
}
}
更新完整示例
这个例子基于Spring的初始值设定项(具有“Web”依赖关系的Gradle项目)。我刚刚在构建中添加了应用插件:“war”。gradle,添加/更改了下面的文件,用gradle war构建了项目,并将其部署到我的应用服务器(Tomcat 8)。
这是此示例项目的目录树:
\---src
+---main
+---java
| \---com
| \---example
| \---demo
| ApplicationConfiguration.java
| DemoApplication.java
| DemoController.java
|
\---resources
+---static
\---templates
index.jsp
应用程序配置。java:见上文
DemoApplication.java:
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(DemoApplication.class, args);
}
}
DemoController.java:
@Controller
public class DemoController {
@RequestMapping("/")
public String index() {
return "index";
}
}
指数jsp:
<html>
<body>
<h1>Hello World</h1>
</body>
</html>
我是新春尝试简单的webapp。 使用springboot 2.1.0application.properties如下文件。我在src/main/webapp/WEB-INF/jsp中有jsp文件 我的控制器是。 当我将jsp文件放在/main/resources/META-INF/resources/WEB-INF/jsp中时,它可以正常工作,否则会出现以下错误 pom还具有tomcat嵌入ja
文件:/springboot1_firstwebapp/pom.xml
问题内容: 我正在尝试使用Django,并弄清楚如何设置urls.py以及URL如何工作。我已经在项目的根目录中配置了urls.py,以定向到我的博客和管理员。但是,现在我想在首页添加一个页面,所以在。 因此,我在项目根目录的urls.py中添加了以下代码: 问题是它在blog / templates / …中搜索模板, 而不是在我的根目录中搜索template文件夹。其中包含base.html。
我无法让DevOps使用文件夹进行部署,它向我显示以下错误: [错误]错误:未找到具有指定模式的包:d:\a\1\a*。deploy.cmd 检查任务中提到的包是作为构建中的工件发布的,还是作为先前阶段发布并在当前作业中下载的。 Azure App Service Deploy任务文档说明了有关Package参数的以下内容: 包的文件路径,或者包含由MSBuild生成的应用服务内容的文件夹的路径,
问题内容: 我对linux和svn相当陌生。我正在尝试使用此命令(在public_html中)将项目的主干文件夹检出到我的public_html目录中: waterproject目录包含解开基本安装的drupal的文件。 除了所有文件都位于而不是仅位于中,它可以很好地进行检出。 我不知道将主干的所有内容上移到public_html和rm trunk的命令,但是我认为我可以相对容易地解决这一问题。我
你好,我是一个很新的一大口。问题是当我用命令“gulp”运行默认任务时,scss文件没有编译,而是复制到css文件夹这是我的gulpfile.js