(SpringMVC)数据处理及跳转
文章目录
- 1. 结果跳转方式
- 1.1 ModelAndView
- 1.2 ServletAPI
- 1.3 SpringMVC
- 2. 数据处理
- 2.1 处理提交数据
- 2.2 数据显示到前端
1. 结果跳转方式
1.1 ModelAndView
设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 .
页面 : {视图解析器前缀} + viewName +{视图解析器后缀}
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 后缀 --><property name="suffix" value=".jsp" />
</bean>
对应的controller类
public class ControllerTest1 implements Controller {public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {//返回一个模型视图对象ModelAndView mv = new ModelAndView();mv.addObject("msg","ControllerTest1");mv.setViewName("test");return mv;}
}
1.2 ServletAPI
通过设置ServletAPI , 不需要视图解析器 .
1、通过HttpServletResponse进行输出
2、通过HttpServletResponse实现重定向
3、通过HttpServletResponse实现转发
@Controller
public class ResultGo {@RequestMapping("/result/t1")public void test1(HttpServletRequest req, HttpServletResponse rsp) throws IOException {rsp.getWriter().println("Hello,Spring BY servlet API");}@RequestMapping("/result/t2")public void test2(HttpServletRequest req, HttpServletResponse rsp) throws IOException {rsp.sendRedirect("/index.jsp");}@RequestMapping("/result/t3")public void test3(HttpServletRequest req, HttpServletResponse rsp) throws Exception {//转发req.setAttribute("msg","/result/t3");req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,rsp);}}
1.3 SpringMVC
通过SpringMVC来实现转发和重定向 - 无需视图解析器;
测试前,需要将视图解析器注释掉
@Controller
public class ResultSpringMVC {@RequestMapping("/rsm/t1")public String test1(){//转发return "/index.jsp";}@RequestMapping("/rsm/t2")public String test2(){//转发二return "forward:/index.jsp";}@RequestMapping("/rsm/t3")public String test3(){//重定向return "redirect:/index.jsp";}
}
通过SpringMVC来实现转发和重定向 - 有视图解析器;
重定向 , 不需要视图解析器 , 本质就是重新请求一个新地方嘛 , 所以注意路径问题.
可以重定向到另外一个请求实现 .
@Controller
public class ResultSpringMVC2 {@RequestMapping("/rsm2/t1")public String test1(){//转发return "test";}@RequestMapping("/rsm2/t2")public String test2(){//重定向return "redirect:/index.jsp";//return "redirect:hello.do"; //hello.do为另一个请求/}}
2. 数据处理
2.1 处理提交数据
1、提交的域名称和处理方法的参数名一致
提交数据 : http://localhost:8080/springmvc_04_controller_war_exploded/t3?name=zh
处理方法:
@Controller
public class ControllerTest3 {@RequestMapping("/t3")public String test1(String name, Model model){model.addAttribute("msg",name);return "test";}
}
2、提交的域名称和处理方法的参数名不一致
提交数据 : http://localhost:8080/springmvc_04_controller_war_exploded/t3?username=zh
处理方法:
@Controller
public class ControllerTest3 {@RequestMapping("/t3")public String test1(@RequestParam("username") String name, Model model){model.addAttribute("msg",name);return "test";}
}
3、提交的是一个对象
提交数据 : http://localhost:8080/springmvc_04_controller_war_exploded/t3?id=1&name=zh&age=3
处理方法:
创建一个实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {public int id;public String name;public int age;
}
@Controller
public class ControllerTest3 {@RequestMapping("/t3")public String test1(User user, Model model){model.addAttribute("msg",user);return "test";}
}
2.2 数据显示到前端
第一种 : 通过ModelAndView
public class ControllerTest1 implements Controller {public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {//返回一个模型视图对象ModelAndView mv = new ModelAndView();mv.addObject("msg","ControllerTest1");mv.setViewName("test");return mv;}
}
第二种 : 通过ModelMap
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name, ModelMap model){//封装要显示到视图中的数据//相当于req.setAttribute("name",name);model.addAttribute("name",name);System.out.println(name);return "hello";
}
第三种 : 通过Model
@RequestMapping("/ct2/hello")
public String hello(@RequestParam("username") String name, Model model){//封装要显示到视图中的数据//相当于req.setAttribute("name",name);model.addAttribute("msg",name);System.out.println(name);return "test";
}
对比
Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性;
ModelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。
(SpringMVC)数据处理及跳转相关推荐
- SpringMVC从Controller跳转到另一个Controller
[PK亲测] 能正常跳转的写法如下: return "forward:aaaa/bbbb.do"; return "redirect:aaaa/bbbb.do" ...
- SpringMVC04:数据处理及跳转
页面跳转的方式 一.ModelAndView<.h3> 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 . 页面 : {视图解析器前缀} + vi ...
- springMVC同时支持跳转jsp和html
想要实现如以下效果 @Controller //RestController代表controller,但是是和ResponseBody结合 @RequestMapping("adminC&q ...
- springMVC session过期跳转到登录界面
1.非ajax的传统型跳转和ajax请求数据跳转 2.使用springMVC拦截器拦截请求,判断session是否过期 3.使用ajaxSetup 全局判断session请求是否过期. 这种方式不是最 ...
- SpringMvc的服务器端跳转和客户端跳转
首先,找到 package org.springframework.web.servlet.view; public class InternalResourceViewResolver extend ...
- SpringMVC中Controller跳转到另一个Controller方法
1.直接Redirect后加 Controller/Action Response.Redirect("/User/Edit"); // return Redirect(" ...
- 基于springMVC的页面跳转、转发、重定向等
2019独角兽企业重金招聘Python工程师标准>>> 基于from的跳转 0. 配置:自动扫描装载的controller包和视图解析器 <?xml version=" ...
- springmvc中action跳转
return "redirect:/activity/listactivity.htm";
- 【SpringMVC 笔记】结果跳转、数据处理、乱码问题
结果跳转和数据处理 结果跳转方式 ModelAndView Servlet API SpringMVC - 无视图解析器 SpringMVC - 有视图解析器 处理提交数据 1.提交的域名称和处理方法 ...
最新文章
- 小说站 章节内容 ajax,第17章 作业分析与异步编程原理——2019年5月14日22:00
- sqlserver字段选择参照
- 产业链布局优势明显,三星开启全新移动智能体验新时代
- Duplicate entry ‘211‘ for key ‘PRIMARY‘异常解决
- redis的bigkeys命令之原理
- 现在学前端还来得及吗?总听人说饱和了
- Python FastApi:post文件与数据/本地端测试
- 计算机原理转移指令题,转移指令计算机原理.pdf
- (C语言)素数是指大于1,且只能被1和它自身整除的正整数。现给定一个范围,请输出在此范围中素数的个数。
- 华为机试HJ74:参数解析
- 南非看世界杯通信问题全攻略(世界杯与通信1)
- Linux的i2c通讯协议
- php搜索区分大小写,在php中搜索不区分大小写的xpath
- 锋利的jQuery系列一
- 飞思卡尔MC9S12G系列单片机flash擦写
- 新版在线全网音乐搜索下载源码
- codesys工程ST语言学习笔记(一)建立工程与编译
- dev、test和prod是什么意思?
- 《SEM长尾搜索营销策略解密》一一1.1 做有个性的账户
- mysql中like与rlike_Hive中rlike,like,notlike区别及使用