spingmvc 响应
时间:2019-06-14
本文章向大家介绍spingmvc 响应,主要包括spingmvc 响应使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package cn.zj.springmvc.controller; import java.io.IOException; import java.util.Arrays; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import cn.zj.springmvc.pojo.User; @Controller @RequestMapping("/response") public class ResponseController { //1,方法直接返回void,如果要响应,使用原始servlet的请求和响应对象进行页面跳转数据共享 @RequestMapping("/method1") public void method1(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { //1.共享数据 //request.setAttribute("username", "小明"); //使用请求转发跳转 //request.getRequestDispatcher("/WEB-INF/foward.jsp").forward(request, response); //使用url重定向(跨域访问) response.sendRedirect("https://www.jd.com"); } /* * ModelAndView * Model :模型(数据对象) * View :视图(浏览器页面显示) * SpringMVC 专门用于封装模型数据和视图地址的对象 * 注意:使用 ModelAndView只能使用请求转发,不能使用URL重定向 */ @RequestMapping("/method2") public ModelAndView method2() { ModelAndView mv = new ModelAndView(); //1.共享数据 mv.addObject("username", "小芳"); //2.设置视图地址 //配置视图解析器之前 //mv.setViewName("/WEB-INF/view/forward.jsp"); //配置视图解析器之后:配置一个逻辑视图名称 mv.setViewName("forward"); return mv; } /* * 方法直接返回一个String类型 * 返回的具体值就是要请求转发跳转的视图地址 * 问题:如何共享请求转发的数据呢? * 答 :使用 Model 接口直接注入到方法参数即可,再将需要的参数设置给Model对象 * 注意:使用方法直接返回String默认只能使用请求转发,不能使用URL重定向 */ @RequestMapping("/method3") public String method3(Model m) { //1.设置共享数据 m.addAttribute("username", "小泽"); //配置视图解析器之前 //return "/WEB-INF/view/response.jsp"; //配置视图解析器之后:配置一个逻辑视图名称 return "response"; } /* * 上述几个方法我们发现都只能请求转发跳转,而且跳转的页面必须在对应的视图解析器配置目录下面有对应的页面 * * 实际开发中 * 1,页面跳转可能是请求转发,也可能是重定向 * 2,就算是请求转发,跳转的页面也不一定是 视图解析器对应的页面 * 所以:SpringMVC默认的跳转和视图解析器配置没有办法满足实际开发需求 * * 解决方案:SpringMVC 提供开发者可以自定请求转发和重定向操作 * 打破默认的请求转发的规则 * * 在 : org.springframework.web.servlet.view.UrlBasedViewResolver 视图解析器下面 * public static final String REDIRECT_URL_PREFIX = "redirect:"; * public static final String FORWARD_URL_PREFIX = "forward:"; * * 我们开发者在使用的使用 ,让我们的方法返回 字符串 * * 返回的值 加上上面两个前缀即可 * * redirect:重定向的地址 * forward:自定义请求转发的地址 * */ /* * 自定义请求转发跳转的视图地址 * forward:地址 */ @RequestMapping("/method4") public String forward(Model m) { //共享数据 m.addAttribute("username", "小芳"); return "forward:/WEB-INF/hello.jsp"; } /* * 自定义重定向跳转 * redirect:地址 */ @RequestMapping("/method5") public String redirect() { return "redirect:https://www.jd.com"; } /* * SpringMVC的方法直接返回对象 * 问题:是重定向还是请求转发跳转?页面跳转到哪儿去? * User对象是否是共享了?共享的key(属性名称)是什么? * 如果有key,如果自定义设置key的名称 * * 答:1,返回对象默认使用就是请求转发 * 2,跳转的页面规则 :视图解析器前缀 + 模块名+@RequestMapping的值 + 后缀 * 地址如下 :/WEB-INF/view/response/method6.jsp * 3,User共享了 * 4,共享的名称默认是就是User类型的首字母小写 user * 5, 使用@ModelAttribute("设置共享模型的属性名称") */ @RequestMapping("/method6") @ModelAttribute("userKey") //设置共享模型的属性名称 public User getUser() { User user = new User(); user.setUsername("小明"); user.setPassword("123"); user.setPhone("135xxxx"); user.setEmail("xiaoming@qq.com"); return user; } }
原文地址:https://www.cnblogs.com/cqming/p/11025373.html
- 触屏touchstart 与 click
- Linux DNS之dig利器
- Docker系列教程08-Dockerfile实战
- VirtualBox和Vmware安装增强功能
- 事件委托与阻止冒泡
- Linux网络工具之Ping命令
- Linux DNS之nslookup命令
- 【LEETCODE】模拟面试-108-Convert Sorted Array to Binary Search Tree
- javascript单线程环境实现真正的setTimeout
- 利用pipework与OVS构建跨主机容器网络
- Docker系列教程07-Dockerfile指令详解
- Docker系列教程06-实战:修改Nginx首页
- prompt() 方法,弹框带输入框
- Docker系列教程05-容器常用命令
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C语言三剑客之《C陷阱与缺陷》一书精华提炼
- Linux进程间通信(上)之管道、消息队列实践
- FPGA上电时序
- 更新Kubernetes APIServer证书
- R语言连续时间马尔科夫链模拟案例 Markov Chains
- 如何用R语言在机器学习中建立集成模型?
- 从零开始Kubernetes Operator
- TiKV源码解析系列文章(二十)Region Split源码解析
- scrapy爬虫框架和selenium的使用:对优惠券推荐网站数据LDA文本挖掘
- 单性状动物模型矩阵形式计算BLUP值
- 如何计算一般配合力和特殊配合力
- 【29期】Java集合框架 10 连问,你有被问过吗?
- 学徒数据挖掘之谁说生存分析一定要按照表达量中位值或者平均值分组呢?
- 软件质量的黄金准则
- 你应该了解的5种TypeScript设计模式