一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
0、前言
以下内容皆未在项目中应用,前后端分离的情况下,一个String走天下。
1、响应处理
1.1 使用默认内置视图解析器(ViewResolver)
<!--默认视图解析器 - 配上前缀和后缀 简化逻辑视图名称-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" name="viewResolver" >
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
为防止浏览器对 jsp文件的直接访问,通常会把jsp文件放置在WEB-INF目录下。此时,添加如上配置,就可以访问WEB-INF目录下的所有jsp文件了。
1.2 使用视图控制器 (view-controller)
如果我们有些请求只是想跳转页面,不需要来后台处理什么逻辑,我们无法在Action中写 一个空方法来跳转,直接在中配置一个如下的视图跳转控制器即可(不经过Action,直接跳 转页面)
<mvc:view‐controller path="/" view‐name="index" />
1.3 使用Model,Map,ModelMap
和ModelAndView
等传输数据到页面
服务器接受用户的请求并响应,在SpringMVC中除了可以使用原生servlet的对象传递数据之外,还可以在方法的参数上传入Model,ModelMap,Map类型,此时都能够将数据传送回页面
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
@Controller
public class OutputController {
@RequestMapping("model")
public String output1(Model model){
model.addAttribute("msg","hello,model");
return "output";
}
@RequestMapping("modelMap")
public String output2(ModelMap model){
model.addAttribute("msg","hello,modelMap");
return "output";
}
@RequestMapping("map")
public String output1(Map map){
map.put("msg","hello,map");
return "output";
}
}
可以看到,这三种方式大相径庭,那么它们之间有什么关系呢,一图观之。绕来绕去,无非还是Map。
除此之外,还可以使用ModelAndView对象传输数据到页面。
当使用modelAndView对象的时候,返回值的类型也是此对象,可以将要跳转的页面设置成view的名称,来完成跳转的功能,同时数据也是放到request作用中
@Controller
public class OutputController {
@RequestMapping("mv")
public ModelAndView mv(){
ModelAndView mv = new ModelAndView();
mv.setViewName("output");
mv.addObject("msg","hello.modelAndView");
return mv;//返回mv对象,其实就是返回 output.jsp
}
}
其余还可以通过session
向页面传输数据,通过@ModelAttribute
获取请求中的数据。只因目前项目皆不使用,这里仅做了解。