springboot返回modelandview页面的实例

网友投稿 1218 2023-03-22

springboot返回modelandview页面的实例

springboot返回modelandview页面的实例

1、添加依赖

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

org.springframework.boot

spring-boot-starter-web

javax.servlet

jstl

1.2

org.apache.tomcat.embed

tomcat-embed-jasper

provided

2、application.properties

org.springframework.boot

spring-boot-starter-parent

1.5.10.RELEASE

我这里是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的文件夹,将静态页放到这里面就可以了

静态页代码

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直接获取到静态页

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

静态页代码

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出去就可以了

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springBoot 插件工具热部署 Devtools的步骤详解
下一篇:idea2020.3测试评价及感受
相关文章

 发表评论

暂时没有评论,来抢沙发吧~