1 HTTP Status Code
HTTP请求响应的内容有很多,包括Body、Cookies、Headers和Status。 我们最常用的是Body、其次Headers、Cookies。而HTTP Status Code关注得最少。
1.1 HTTP Status Code
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
1.2 HttpStatus状态码详解
HttpStatus = { //Informational 1xx 信息 '100' : 'Continue', //继续 '101' : 'Switching Protocols', //交换协议 //Successful 2xx 成功 '200' : 'OK', //OK '201' : 'Created', //创建 '202' : 'Accepted', //已接受 '203' : 'Non-Authoritative Information', //非权威信息 '204' : 'No Content', //没有内容 '205' : 'Reset Content', //重置内容 '206' : 'Partial Content', //部分内容 //Redirection 3xx 重定向 '300' : 'Multiple Choices', //多种选择 '301' : 'Moved Permanently', //永久移动 '302' : 'Found', //找到 '303' : 'See Other', //参见其他 '304' : 'Not Modified', //未修改 '305' : 'Use Proxy', //使用代理 '306' : 'Unused', //未使用 '307' : 'Temporary Redirect', //暂时重定向 //Client Error 4xx 客户端错误 '400' : 'Bad Request', //错误的请求 '401' : 'Unauthorized', //未经授权 '402' : 'Payment Required', //付费请求 '403' : 'Forbidden', //禁止 '404' : 'Not Found', //没有找到 '405' : 'Method Not Allowed', //方法不允许 '406' : 'Not Acceptable', //不可接受 '407' : 'Proxy Authentication Required', //需要代理身份验证 '408' : 'Request Timeout', //请求超时 '409' : 'Conflict', //指令冲突 '410' : 'Gone', //文档永久地离开了指定的位置 '411' : 'Length Required', //需要Content-Length头请求 '412' : 'Precondition Failed', //前提条件失败 '413' : 'Request Entity Too Large', //请求实体太大 '414' : 'Request-URI Too Long', //请求URI太长 '415' : 'Unsupported Media Type', //不支持的媒体类型 '416' : 'Requested Range Not Satisfiable', //请求的范围不可满足 '417' : 'Expectation Failed', //期望失败 //Server Error 5xx 服务器错误 '500' : 'Internal Server Error', //内部服务器错误 '501' : 'Not Implemented', //未实现 '502' : 'Bad Gateway', //错误的网关 '503' : 'Service Unavailable', //服务不可用 '504' : 'Gateway Timeout', //网关超时 '505' : 'HTTP Version Not Supported' //HTTP版本不支持 };
使用样例:
if (HttpStatus.BAD_REQUEST == status) { return new ModelAndView("error/error_400"); } else if (HttpStatus.NOT_FOUND == status) { return new ModelAndView("error/error_404"); }
2 ModelAndView
2.1 ModelAndView 作用
1.返回到指定的页面
ModelAndView构造方法可以指定返回的页面名称
return new ModelAndView("redirect:/m07.jsp");
通过setViewName()方法跳转到指定的页面
mav.setViewName("hello");
2.返回参数到指定页面的request作用域中
使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字,参数会返回到新页面的request作用域中
2.2 ModelAndView 的3种用法
1.ModelAndView的第一种用法,先创建ModelAndView对象,再通过它的方法去设置数据与转发的视图名
setViewName(String viewName)//设置此 ModelAndView 的视图名称, 由 DispatcherServlet 通过 ViewResolver 解析
addObject(String attributeName, Object attributeValue)//通过key/value的方式绑定数据
例子:
/** * 利用ModelAndView来转发数据,给前端视图 * @return */ @RequestMapping("/m06") public ModelAndView m06() { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("m06"); modelAndView.addObject("message", "Hello World, Hello Kitty"); return modelAndView; }
2.ModelAndView的第二种方法,可以直接通过带有参数的构造方法 ModelAndView(String viewName, String attributeName, Object attributeValue) 来返回数据与转发的视图名
/** * 利用ModelAndView来转发数据,给前端视图 * @return */ @RequestMapping("/m07") public ModelAndView m07() { return new ModelAndView("m07", "message", "Hello World"); }
3.ModelAndView的第三种用法,设置重定向
/** * ModelAndView默认转发 * ModelAndView还是可以设置重定向 * 1. 重定向另一个控制器 * 2. 重定向具体的jsp页面 * @param name * @return */ @RequestMapping("/{name}/m07") public ModelAndView m07(@PathVariable String name) { if (!"admin".equals(name)) { return new ModelAndView("redirect:/m07.jsp"); } return new ModelAndView("m07"); }
标签:Status,Code,HTTP,请求,return,m07,new,ModelAndView From: https://www.cnblogs.com/imreW/p/17445797.html