为了账号安全,请及时绑定邮箱和手机立即绑定

请问spring boot可以跟html一起使用吗?

/ 猿问

请问spring boot可以跟html一起使用吗?

三国纷争 2019-08-19 17:09:49

spring boot可以跟html一起使用吗


查看完整描述

3 回答

?
交互式爱情

创建PageController,编码如下:
package org.springboot.sample.controller;

import java.util.Date;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class PageController {

// 从 application.properties 中读取配置,如取不到默认值为Hello Shanhy
@Value("${application.hell:Hello Shanhy}")
private String hello = "Hello Shanhy";

/**
* 默认页<br/>
* @RequestMapping("/") 和 @RequestMapping 是有区别的
* 如果不写参数,则为全局默认页,加入输入404页面,也会自动访问到这个页面。
* 如果加了参数“/”,则只认为是根页面。
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping(value = {"/","/index"})
public String index(Map<String, Object> model){
// 直接返回字符串,框架默认会去 spring.view.prefix 目录下的 (index拼接spring.view.suffix)页面
// 本例为 /WEB-INF/jsp/index.jsp
model.put("time", new Date());
model.put("message", this.hello);
return "index";
}

/**
* 响应到JSP页面page1
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping("/page1")
public ModelAndView page1(){
// 页面位置 /WEB-INF/jsp/page/page.jsp
ModelAndView mav = new ModelAndView("page/page1");
mav.addObject("content", hello);
return mav;
}

/**
* 响应到JSP页面page1(可以直接使用Model封装内容,直接返回页面字符串)
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping("/page2")
public String page2(Model model){
// 页面位置 /WEB-INF/jsp/page/page.jsp
model.addAttribute("content", hello + "(第二种)");
return "page/page1";
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

pom.xml添加依赖:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>123456789

上面说了spring-boot 不推荐JSP,想使用JSP需要配置application.properties。
添加src/main/resources/application.properties内容:
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
# 自定义属性,可以在Controller中读取
application.hello=Hello Shanhy123456

在 src/main 下面创建 webapp/WEB-INF/jsp 目录用来存放我们的jsp页面。
index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Spring Boot Sample</title>
</head>

<body>
Time: ${time}
<br>
Message: ${message}
</body>
</html>12345678910111213

page1.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Spring Boot Sample</title>
</head>

<body>
<h1>${content }</h1>
</body>
</html>1234567891011

要想让spring-boot支持JSP,需要将项目打成war包。
我们做最后一点修改,修改pom.xml文件,将 jar 中的 jar 修改为 war
然后启动spring-boot服务。



查看完整回答
反对 回复 2019-08-24
?
芜湖不芜

thymeleaf 与 jsp 同时使用 for spring mvc

spring-mvc.xml

[html] view plain copy
<!-- **************************************************************** -->
<!-- THYMELEAF-SPECIFIC ARTIFACTS -->
<!-- TemplateResolver <- TemplateEngine <- ViewResolver -->
<!-- **************************************************************** -->

<bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
<!-- Template cache is true by default. Set to false if you want -->
<!-- templates to be automatically updated when modified. -->
<property name="cacheable" value="#{ systemProperties['thymeleaf.cacheable'] == 'false' ? false : true }" />
<property name="characterEncoding" value="utf-8"/>
</bean>

<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="templateEngine">
<bean class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
</property>
<property name="viewNames" value="thymeleaf/*"/>
<property name="order" value="0"/>
</bean>

<!-- jsp resolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
<property name="viewNames" value="jsps/*"/>
<property name="order" value="1"/>
<property name="cache" value="#{ systemProperties['jsp.cacheable'] == 'false' ? false : true }"/>
</bean>
加两个属性,

<property name="viewNames" value="thymeleaf/*"/>
<property name="viewNames" value="jsps/*"/>
ViewResolver 会根据 viewName 选择不同处理器。

另外开发时禁用红缓存,每次重新解析模板,改动立即生效。

<property name="cacheable" value="#{ systemProperties['thymeleaf.cacheable'] == 'false' ? false : true }" />



查看完整回答
反对 回复 2019-08-24
?
梵蒂冈之花

官教程运行要打包war包tomcat跑:
spring-boot默认已经再支持jsp视图展示要支持jsp需要做工作:
1、application.yml配置(properties配置文件):
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
2、Application服务启类:
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(CommonApplication.class, PlatformApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication springApplication = new SpringApplication(CommonApplication.class, PlatformApplication.class);
springApplication.run(args);
}
3、引入jsp解析及jstl依赖pom.xml:

org.apache.tomcat.embed
tomcat-embed-jasper
provided

javax.servlet
jstl

4、配置maven项目打包式war包要使用main启应用定要放tomcat容器跑即像没使用spring-bootide配置tomcat跑应用

查看完整回答
反对 回复 2019-08-24

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信