返回视图、Model、ModelMap、ModelAndView
view:视图
⼀般的视图类型:HTML、jsp、freemarker、velocity、thymeleaf
课程中主要⽤freemarker,使⽤freemarker
直接转发视图
第⼀步:添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
第⼆步:资源⽂件配置
spring.freemarker.cache=false
#编码
spring.freemarker.charset=UTF-8
#媒体类型
t-type=text/html
#模板⽂件类型,.ftl是freemarker⽂件的扩展名
spring.freemarker.suffix=.ftl
#模板⽂件路径,根⽬录下的templates⽂件⾥
plate-loader-path=classpath:/templates
quest-context-attribute=request
第三步:创建模板⽂件
在resources(资源⽂件)⽂件夹下创建⼀个templates⽂件,在该⽂件夹下创建⼀个⽂件夹my,在my⽂件夹下创建myIndex.ftl⽂件第四步:编辑模板⽂件
在模板⽂件myIndex.ftl中写“你好,freemarker”
第五步:controller返回视图
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/test")
public class SpringBootTest {
@RequestMapping("/test1")
public String test1(){
//返回的是视图⽂件名,扩展名.ftl不⽤写,存在多级⽬录要将⽬录写全
return "/my/myIndex";
el表达式获取map的值
}
}
浏览器请求 返回视图⽂件内容
处理模型数据:ModelMap及Model
**Model:**在转发⽅法上添加⼀个Model类型的参数
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/test")
public class SpringBootTest {
@RequestMapping("/test1")
public String test1(Model model){
model.addAttribute("name","我是请求链接中返回的数据" );
return "/my/myIndex";
}
}
⽤model的addAttribute⽅法可以将服务器的值传⼊页⾯,return返回的必须是视图⽂件才⾏视图⽂件myIndex.ftl中⽤el表达式获取该值,${获取参数返回的key的名称}
浏览器请求 返回获取到的value
ModelMap:在转发⽅法上添加⼀个ModelMap类型的参数,⽤modelMap的put⽅法也可以
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/test")
public class SpringBootTest {
@RequestMapping("/test1")
public String test1(ModelMap modelMap){
modelMap.put("name","我是请求链接中返回的数据ModelMap");
return "/my/myIndex";
}
}
ModelAndView:是将视图与数据模型合并在⼀起
使⽤ModelAndView类来存储处理完的结果数据以及显⽰该数据的视图
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/test")
public class SpringBootTest {
@RequestMapping("/test1")
//⽅法返回的是⼀个对象,不是String
public ModelAndView test1(){
ModelAndView modelAndView=new ModelAndView();
//返回的模板⽂件路径
modelAndView.setViewName("/my/myIndex");
//添加的数据,模板⽂件中⽤el表达式⽤key获取value
modelAndView.addObject("name", "我是请求链接中返回的数据ModelAndView");
return modelAndView;
}
}
模板⽂件还是⽤el表达式写⽤key获取value,该value显⽰在请求页⾯${name!}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。