文章目录
一、模型数据解析及控制器返回值
下面的框架可以用我 第五章的布局
1.视图解析器及应用
模型数据的绑定是由视图解析器来完成的,开发时先添加模型数据,再交给视图解析器来绑定。
<!-- 配置springmvc.xml 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"/> <!-- 注意 jsp后面要写/ -->
<!-- 后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
-1. ModelAndView添加模型数据
//java controller类
@RequestMapping(value = "/item/modelView",method = RequestMethod.GET)
public ModelAndView model(){ //返回值为ModelAndView
ModelAndView modelAndView = new ModelAndView();//创建模型modelAndView
modelAndView.addObject("msg","你要给msg变量名的值");//设置变量和值 可以在jsp页面通过el表达式${msg}拿到变量
modelAndView.setViewName("hello");//设置跳转的jsp页面名称, 因为已配置了视图解析器 所以可以简写jsp文件的名字
return modelAndView;//转发 你创建的模板jsp路径
}
-2. Map添加模型数据
//java controller类
@RequestMapping(value = "/str/for",method = RequestMethod.GET)
public String str1(Map map){
map.put("msg","map的测试");//值会自动传递给页面 ${msg}获取
return "hello"; //转发 hello.jsp中
}
-3 Model添加模型数据
//java controller类
@RequestMapping(value = "/item/strModel",method = RequestMethod.GET)
public String str(Model model){
model.addAttribute("msg","Model的测试");
return "hello";
}
2. 返回值为String类型的转发和重定向
//string类型的重定向和转发
@RequestMapping(value = "/str/for",method = RequestMethod.GET)
public String str1(Map map){
map.put("msg","mapTest");//值会自动传递给页面
return "forward:/WEB-INF/jsp/hello.jsp"; //forward 转发是服务器默认的形式可以不写
}
@RequestMapping(value = "/str/rdt",method = RequestMethod.GET)
public String str2(Map map){
map.put("msg","mapTest");//值会自动传递给页面
return "redirect:/index.jsp";
// return "redirect:/hello.jsp"; ***
//不可以直接转发到WEB_INF中的静态资源 因为此文件夹下的资源安全性都比较高 一般通过转发访问
//可以重定向到controller路径 在controller类中转发到WEB_INF的jsp路径
// return "redirect:/controller/t1"; controller /t1类: return hello;
}
二、Spring MVC表当标签库
https://www.funtl.com/zh/spring-mvc/Spring-MVC-表单标签库.html#声明表单标签库
三、Spring MVC数据校验
https://blog.youkuaiyun.com/miketom155/article/details/45058195/
四、restFul架构
// java controller 层
//restFul 只是地址的写法不一样, 传统的 ../a?a=1&b=2 restFul:../a/1/2
//相同路径访问不同数据: 区别在于 提交的方法 是get还是post
//restFul 通过 {} 来获取路径参数
@RequestMapping(value = "/item/{p1}/{p2}",method = RequestMethod.GET)
public String index1(@PathVariable int p1, @PathVariable int p2, Model model){
int result = p1 + p2;
model.addAttribute("msg","结果:"+result);
return "hello";
}
@RequestMapping(value = "/item/{p1}/{p2}",method = RequestMethod.POST)
public String index2(@PathVariable int p1, @PathVariable int p2, Model model){
String result = "相同路径访问不同数据"+p1+p2;
model.addAttribute("msg","结果:"+result);
return "hello";
}