springboot返回modelandview页面的实例

1、添加依赖

这个应该是web项目相关的jar

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <!-- jstl JSP标准标签库 -->
 <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
 </dependency>
 <!-- 返回jsp页面还需要这个依赖 -->
 <dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
   <scope>provided</scope>
 </dependency>

2、application.properties

 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.10.RELEASE</version>
 <relativePath/> <!-- lookup parent from repository -->
 </parent>

我这里是parent是1.5.10,所以jsp的配置应该如下

#jsp path
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
老版本的应该是这个
spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp

3、控制器

因为是返回页面,所以不能用@RestController返回json格式

package com.example.demo.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@Controller
/*@ComponentScan*/
@RequestMapping("/test")
public class TestController {

 private final Logger log = LoggerFactory.getLogger(this.getClass());

 @RequestMapping(value = "queryMaterialType", method = RequestMethod.POST)
 public Object test(){
 log.info("--------------->>打印日志");
 return "hellow world";
 }

 //@RestController,返回json数据
 //@Controller,返回login.jsp页面
 @RequestMapping(value = "/login", method = RequestMethod.GET)
 public String login(HttpServletRequest request,HttpServletResponse response){

 return "login";
 }

 //无论是@RestController还是@Controller都不影响返回页面
 @RequestMapping(value = "/loginPage", method = RequestMethod.GET)
 public ModelAndView loginPage(HttpServletRequest request,HttpServletResponse response){
 ModelAndView mav = new ModelAndView();
 mav.setViewName("login");

 return mav;
 }
}

补充知识:springBoot前后分离项目,通过ModelAndView返回给app或前台静态页面

1.先做静态页模板aaa.html,放到springboot项目的根目录下,如下如中,新建一个templates的文件夹,将静态页放到这里面就可以了

静态页代码为

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
  <meta name="viewport" content="width=device-width, initial-scale=0.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  <meta content="yes" name="apple-mobile-web-app-capable">
  <meta content="black" name="apple-mobile-web-app-status-bar-style">
  <meta content="telephone=no" name="format-detection">
  <title>标题</title>
  <style type="text/css">
    body {
      margin-left: 0px;
      margin-top: 0px;
      margin-right: 0px;
      margin-bottom: 0px;
      background: #f3f3f3;
      font-family: "Microsoft YaHei ", "微软雅黑", "arial";
    }

    h1 {
      height: 1px;
      width: 100%;
      margin: 10px 0;
      background: #f1f1f1;
    }

    img {
      width: 100%;
      height: auto;
    }

    .bodys {
      width: 100%;
      height: auto;
      overflow: Hidden;
      padding-top: 10px;
      padding-bottom: 50px;
      background: #fff;
    }

    .head {
      width: 96%;
      min-height: 30px;
      padding: 18px 2% 2px 2%;
      line-height: 25px;
      text-align: left;
      font-size: 20px;
      font-weight: bold;
      color: #111;
    }

    .time {
      width: 96%;
      height: 20px;
      line-height: 20px;
      font-size: 11px;
      text-align: left;
      padding: 0 2%;
      color: #999;
    }

    .info {
      width: 96%;
      height: auto;
      padding: 10px 2%;
      line-height: 25px;
      text-align: left;
      font-size: 15px;
    }
  </style>
</head>

<body>
<div class="bodys">
  <div class="head" th:text="${itle}">未知</div>
  <div class="time" th:text="${addDate}">未知</div>
  <h1></h1>
  <div class="info" th:utext="${content}">未知</div>
</div>
</body>
</html>

2.然后主要是 controller层,业务逻辑根据自己的需求来

@RequestMapping("/html")
@Controller
public class AppCommonHtmlController {

  @RequestMapping(value = "/ceshi", method = RequestMethod.GET)
  public ModelAndView getCeishi(“根据自己业务传入需要的参数”) {
    ModelAndView modelAndView=new ModelAndView();
    //根据自己的业务,和静态页中的参数对应上就行,也可以放入实体类,和静态页面对应就行了
    modelAndView.addObject("title",“标题”);
    modelAndView.addObject("addDate",“添加时间”);
    modelAndView.addObject("content",“内容”);
    //存入静态页的名称,就可以把处理好的静态页返回给app或前台
    modelAndView.setViewName("aaa");
    return modelAndView;
  }
}

然后浏览器输入:http://localhost:8888/项目名/html/ceshi

该方法多适用于app端,需要根据不同的情况得到不一样内容的静态页展示到手机上,就可以通过这种方法,做一个静态页的模板,通过el表达式给模板不同的内容,然后app端可以通过访问的ip直接获取到静态页

下面的方法也可以,效果同上面一样

静态页代码

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
  <meta name="viewport" content="width=device-width, initial-scale=0.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  <meta content="yes" name="apple-mobile-web-app-capable">
  <meta content="black" name="apple-mobile-web-app-status-bar-style">
  <meta content="telephone=no" name="format-detection">
  <title>静态页</title>
  <style type="text/css">
    body {
      margin-left: 0px;
      margin-top: 0px;
      margin-right: 0px;
      margin-bottom: 0px;
      background: #f3f3f3;
      font-family: "Microsoft YaHei ", "微软雅黑", "arial";
    }

    h1 {
      height: 1px;
      width: 100%;
      margin: 10px 0;
      background: #f1f1f1;
    }

    img {
      width: 100%;
      height: auto;
    }

    .bodys {
      width: 100%;
      height: auto;
      overflow: Hidden;
      padding-top: 10px;
      padding-bottom: 50px;
      background: #fff;
    }

    .head {
      width: 96%;
      min-height: 30px;
      padding: 18px 2% 2px 2%;
      line-height: 25px;
      text-align: left;
      font-size: 20px;
      font-weight: bold;
      color: #111;
    }

    .time {
      width: 96%;
      height: 20px;
      line-height: 20px;
      font-size: 11px;
      text-align: left;
      padding: 0 2%;
      color: #999;
    }

    .info {
      width: 96%;
      height: auto;
      padding: 10px 2%;
      line-height: 25px;
      text-align: left;
      font-size: 15px;
    }
  </style>
</head>

<body>
<div class="bodys">
  <div class="head" th:text="${bbb.noticeTitle}">未知</div>
  <div class="time" th:text="${bbb.publishDate}">未知</div>
  <h1></h1>
  <div class="info" th:utext="${bbb.noticeContent}">未知</div>
</div>
</body>
</html>

controller代码

  @RequestMapping(value = "/ceshi", method = RequestMethod.GET)
  public String getCeishi(“业务逻辑需要的入参”, Model model) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    JSONObject jsonObject = JSONObject.fromObject(“需要传到静态页的动态数据”);
    jsonObject.remove("publishDate");//时间,具体作用不清楚,个人猜测是原本数据格式不支持,需要转换一下,所以要先删除后重新赋值
    jsonObject.put("publishDate", sdf.format(notice.getPublishDate()));//时间重新赋值
    model.addAttribute("bbb", jsonObject);//将转换好的数据存入model中
    return "aaa"; //对应好静态页的名称return出去就可以了
  }

以上这篇springboot返回modelandview页面的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot的Controller控制层和页面

    一.项目实例 1.项目结构 2.项目代码 1).ActionController.Java: package com.example.controller; import java.util.Date; import java.util.Map; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.spring

  • SpringBoot设置首页(默认页)跳转功能的实现方案

    先给大家介绍下SpringBoot设置首页(默认页)跳转功能 最近springboot开发需要设置个默认页面,就相当于我访问http://www.back.order.baidu.com要直接跳转到登录页面. 方案1:controller里添加一个"/"的映射路径 @RequestMapping("/") public String index(Model model, HttpServletResponse response) { model.addAttribu

  • SpringMVC ModelAndView的用法使用详解

    (一)使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图.从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用.业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架.框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上. 具体作用: 1.返回指

  • springboot返回modelandview页面的实例

    1.添加依赖 这个应该是web项目相关的jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jstl JSP标准标签库 --> <dependency> <groupId>javax.servle

  • node.js 核心http模块,起一个服务器,返回一个页面的实例

    如下所示: let http=require("http"); //引入核心http模块 let fs=require("fs"); let mime={ '.js':'application/javascript', '.css':'text/css' } //创建一个函数,req代表客户端,res代表服务器可写流 let listener=(req,res)=>{ //res是可写流,有write和end if(req.url==="/"

  • mui back 返回刷新页面的实例

    2个页面 模拟 1.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link href="../../css/mui.min.css" rel="external nofollow" rel="external nofollow" rel="

  • java后台判断客户端是手机/PC并返回不同页面的实例

    这个代码其实不是由我本人发现的,而是在翻看公司项目时无意间发现,觉得很实用所以拿出来大家分享. 框架:Struts2+spring+ibatis, 主要实现是依靠Http请求头Header中的 "User-Agent" 来完成,好了, 废话不多说直接上代码. Action中: public String execute() { HttpServletRequest request = ServletActionContext.getRequest(); boolean isMoblie

  • SpringBoot创建JSP登录页面功能实例代码

    添加JSP配置 1.pom.xml添加jsp解析引擎 <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.s

  • springboot 在ftl页面上使用shiro标签的实例代码

    1.首先第一步导入依赖 <dependency> <groupId>com.github.theborakompanioni</groupId> <artifactId>thymeleaf-extras-shiro</artifactId> <version>1.2.1</version> </dependency> 2.在配置shiro权限的方法内加入 @Bean public ShiroDialect sh

  • javascript跳转与返回和刷新页面的实例代码

    javascript中window.open()与window.location.href的区别 window.open('index.html') 表示新增一个窗口打开 index.html 这个页面,并不刷新 location.href('index.html') 表示在当前窗口重定向到新页面,打开并刷新 index.html 这个页面 window.location 是 window 对象的属性,用来替换当前页,也就是重新定位当前页 而window.open 是 window 对象的方法,

  • 使用SpringBoot整合ssm项目的实例详解

    SpringBoot是什么? Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程. Spring Boot 现在已经成为 Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成.成为 SpringBoot 全家桶,成为一把万能钥匙. SpringBoot的特点 1.创建独立的 Spring 应用程序 2.嵌入的 Tomcat ,无需部署 WAR 文件 3.简化 Maven 配置 4.自动配置 Spr

  • 使用Ajax局部更新Razor页面的实例代码

    Razor功能非常强大,但是本身并不能做到无刷新,所以需要配合ajax使用 本文就做一个简单例子,实现Razor配合ajax做到局部刷新. 首先,我们创建一个MVC项目 让我们创建一个简单的Controller Book 然后对其添加一个视图,并且添加上一些简单的Html代码 @{ ViewBag.Title = "Index"; Layout = null; } <!DOCTYPE html> <html> <head> <meta http

  • Session过期后自动跳转到登录页面的实例代码

    最近做了一个项目其中有需求,要实现自动登录功能,通过查阅相关资料,打算用session监听来做,下面给大家列出了配置监听器的方法: 1.在项目的web.xml文件中添加如下代码: <!--添加Session监听器--> <listener> <listener-class> 监听器路径 </listener-class> </listener> 2.编写java类. public class SessionListener implements

随机推荐