发表于: 2019-11-13 00:18:45
2 966
啥也不说就是干!!!
今天完成的事情
1、Controller 方法返回值
1)ModelAndView
Controller 方法中定义 ModelAndView 对象,对象中可添加 model 数据,指定要跳转的 View
2)void
在 Controller 方法形参上可定义 request 和 response 使用 request 或 response 指定响应结果
void service(HttpServletRequest request,HttpServletResponse reponse)
使用 request 转发页面:
request.getRequestDispatcher("页面路径").forward(request,response);
也可以通过 response 页面重定向
response.sendRedirect("url");
也可以通过 repsonse 指定响应结果,例如 json 数据:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
3)String
逻辑视图名
return "views/student-list";
redirect 重定向
return "redirect:views/student-list";
redirect:相当于“response.sendRedirect()” 浏览器URL发生改变 Request域不能共享
forward 转发
return "forward:views/student-list";
forward:相当于 “request.getRequestDispatcher().forward(request,response)” 浏览器URL不发送改变 Request域可以共享
4)使用 @ResponseBody 注解
@ResponseBody的作用
ResponseBody注解可以通过内置的9种HttpMessageConverter,匹配不同的Controller返回值类型,然后进行不同的消息转换处理。
将转换之后的数据放到HttpServletResponse对象的响应体返回到页面,
不同的HttpMessageConverter处理的数据,指定的ContentType值也不同。
@RequestBody
和@ResponseBody注解正好相反,它是处理请求参数的http消息转换的
常用的 HttpMessageConverter
MappingJacksonHttpMessageConverter 处理 POJO 类型返回值
默认使用 MappingJackson 的 Json 处理能力,将后台返回的 POJO 转化为 Json 格式的字符串返回给前端
2、SpringMVC 之 RESTful
概念:REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
特性:
a. 资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个 URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。要获取这个资源,访问它的 URI 就可以,因此 URI 即为每一个资源的独一无二的识别符。
b. 表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层 (Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。
c. 状态转化(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器, 必须通过某种手段,让服务器端发生“状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是 “ 表现层状态转化” 。具体说, 就是 HTTP 协议里面,四个表示操作方式的动词:GET 、POST 、PUT 、DELETE 。
它们分别对应四种基本操作:
GET 用来获取资源
POST 用来新建资源
PUT 用来更新资源
DELETE 用来删除资源
如何设计 RESTful 应用程序的 API
路径设计:数据库设计完毕之后,基本上就可以确定有哪些资源要进行操作,相对于的路径也可以设计出来
动词设计:也就是针对资源的具体操作类型,由 HTTP 动词表示,常用的HTTP动词如下:POST、DELETE、PUT、GET
RESTful 示例:
/student/1 HTTP GET:获取 id=1 的服务器资源(数据库中相应的学生信息)
/student/1 HTTP DELETE:删除 id=1 的服务器资源
/student/1 HTTP PUT:更新 id=1 的服务器资源
SpringMVC 对 RESTful 的支持
@PathVariable 注解可以解析出来 URL 中的变量
http://localhost:8080/JnshuTask2/student/1/zhangsan
@RequestMapping(value = "/{id}/{name}",method = RequestMethod.GET)
@ResponseBody
public Student getStudentInfo(@PathVariable Integer id,@PathVariable String name){
Student student = new Student();
student.setName(name);
student.setId(id);
return student;
}
在浏览器中访问 该请求可以看到 json 数据输出,并且已经把 url 中的参数解析并接收了
通过 method 属性区分各种不同类型的请求,可以将同一个URL映射到不同的HandlerMethod方法上
method = RequestMethod.GET //接收 GET 请求
method = RequestMethod.POST //接收 POST 请求
method = RequestMethod.PUT //接收 PUT 请求
method = RequestMethod.DELETE //接收 DELETE 请求
静态资源访问<mvc:resources>
如果在DispatcherServlet中设置url-pattern为 /则必须对静态资源进行访问处理。
<!-- 当DispatcherServlet配置为/来拦截请求的时候,需要配置静态资源的访问映射 -->
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>
在springmvc.xml文件中,使用 mvc:resources 标签,Springmvc会把mapping映射到 ResourceHttpRequestHandler,这样静态资源在经过DispatcherServlet转发时就可以找到对应的Handler了。
3、根据接口文档规范开发接口
概述:文档不是给自己看的,只有自己才看得懂的文档就不要放上去浪费其他同学的时间了。
所有文档至少包含以下信息:
1.接口功能
2.接口路径
3.接口入
4.接口出
5.各字段说明、约定值、是否必填、默认参
6.复杂数据结构给出出范例
1)新增学生信息:POST /JnshuTask2/student
请求参数:
字段 | 说明 | 类型 | 是否必填 |
name | 学生姓名 | String | 是 |
qq | QQ号 | String | 否 |
jnshuType | 修真类型 | String | 是 |
joinTime | 入学时间 | String | 是 |
school | 毕业院校 | String | 否 |
onlineNum | 线上学号 | String | 是 |
dailyUrl | 日报链接 | String | 是 |
slogan | 口号 | Sring | 是 |
counsellor | 辅导师兄 | String | 是 |
knownPath | 了解途径 | String | 否 |
返回参数:
字段 | 说明 | 类型 | 是否必填 |
code | 响应码 | number | 是 |
mesage | 返回信息 | String | 是 |
data | 返回体 | Object | 否 |
2)查询学生信息:GET /JnshuTask2/student/{id}
请求参数
字段 | 说明 | 类型 | 是否必填 |
id | 学生id | Integer | 是 |
返回参数:
字段 | 说明 | 类型 | 是否必填 |
code | 响应码 | number | 是 |
mesage | 返回信息 | String | 是 |
data | 返回体 | Object | 是 |
data:
字段 | 说明 | 类型 | 是否必填 |
name | 学生姓名 | String | 是 |
qq | QQ号 | String | 否 |
jnshuType | 修真类型 | String | 是 |
joinTime | 入学时间 | String | 是 |
school | 毕业院校 | String | 否 |
onlineNum | 线上学号 | String | 是 |
dailyUrl | 日报链接 | String | 是 |
slogan | 口号 | Sring | 是 |
counsellor | 辅导师兄 | String | 是 |
knownPath | 了解途径 | String | 否 |
3)修改学生信息:PUT /JnshuTask2/student/{id}/{slogan}
请求参数
字段 | 说明 | 类型 | 是否必填 |
id | 学生id | Integer | 是 |
slogan | 口号 | String | 是 |
返回参数
字段 | 说明 | 类型 | 是否必填 |
code | 响应码 | number | 是 |
mesage | 返回信息 | String | 是 |
data | 返回体 | Object | 否 |
4)删除学生信息:DELETE /JnshuTask2/student/{id}
请求参数
字段 | 说明 | 类型 | 是否必填 |
id | 学生id | Integer | 是 |
返回参数
字段 | 说明 | 类型 | 是否必填 |
code | 响应码 | number | 是 |
mesage | 返回信息 | String | 是 |
data | 返回体 | Object | 否 |
明天计划的事情
1、SSM 整合
2、增删改查接口逻辑实现
遇到的问题
无
收获
学习 SprignMVC 返回 json 数据,及 RESTful 接口定义
评论