发表于: 2021-04-18 18:05:38

4 1178


一,今天完成的事情

任务二1-4


1查看接口定义格式,分别给出CRUD的接口文档格式

Rest风格不带状态。uri也一般不出现动词,只用名词。但是完全按照Rest风格做的网站不多。我的controller中的方法上value不带动词就是Rest风格。

 

我直接给出前端地址,前后端能互相理解。一般不直接给一个类student,消除歧义。接口分为四部分:方法、uri、请求参数、返回参数。uri这里的/a /u未使用。

1API设计

HOST http://localhost :8080

此任务只有Student一个pojo,所以在Student上的controller类上入口是/student,最终是http://localhost :8080/student

 

2)查

API/getbyid/{id}

请求⽅式:GET

参数类型:接收{id}参数。idlong类型。

响应参数类型:JSONmodel.jsp中展示。

 

3)

API/delete

请求⽅式:DELETE

参数类型:接收url?id=参数。idlong类型。

响应参数类型:找不到:code:400; message:"id.null"

成功:code:200; message: "deletedSuccessfully"

 

 

4)加

API/add

请求⽅式:POST

参数类型:JSON (请添加请求头:ContentType:application/json)

携带字段:组成类Student的字段,不带id,但是一定带以下字段。其它字段可选。

{ "name":"your_name"

}

    可选:

    private String qqNumber;

    private String major;

    private String estimatedTimeEnrollment;

    private String school;

    private String studentId;

    private String logLink;

    private String mentor;

    private String wishes;

    private String recommendedFrom;

 

响应参数类型:JSON

响应信息:因为没带名字失败code:400; message:"name.null"

成功:code:200; message: "deletedSuccessfully"

 

 

 

5)改

API/update

请求⽅式:PUT

参数类型:JSON (请添加请求头:Content -Type:applicat ion/json)

携带字段:组成类Student的字段,一定要带id

{ "id":id

}

加上以下一个或者全部

    private Long createAt;

    private Long updateAt;

    private String name;

    private String qqNumber;

    private String major;

    private String estimatedTimeEnrollment;

    private String school;

    private String studentId;

    private String logLink;

    private String mentor;

    private String wishes;

    private String recommendedFrom;

响应参数类型:JSON

响应信息:找不到:code:400; message:"id.null"

成功:code:200; message: "deletedSuccessfully"

 

 

2,创建Maven WEB工程。目录结构如图


3,

根据接口文档,使用Spring Rest 编写对应的Controller,日志记录接收参数后,暂时不用写业务逻辑,直接返回JSP,直接用Json Tag-lib 生成假数据。

Controller,用以下语句返回到相应的jsp网页。

return "jsontaglib"
// request来保存数据
@RequestMapping("/jsontaglib")
public String testJsonTaglib(HttpServletRequest request, HttpServletResponse response) {
List<Student> students = new ArrayList<>();
   Student student = new Student();
   //Only get one id this time, not much judge
   long id = 0L;
   if( request.getParameter("id") != null )
id = Long.parseLong(request.getParameter("id"));
   student.setId(id);
   student.setName("testingJsonTaglib");
   student.setCreateAt(1289808L);
   student.setUpdateAt(23979237923L);
   student.setStudentId("stu"+id);
   Student student2 = new Student();
   id = 222L;
   student2.setId(id);
   student2.setName("testingJsonTaglib2");
   student2.setCreateAt(12898082L);
   student2.setUpdateAt(239792379232L);
   student2.setStudentId("stu"+id);
   students.add(student);
   students.add(student2);
   request.setAttribute("students", students);

   return "jsontaglib";
}

jsp位置是


为了展示,jsontaglib.jsp的内容是

<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<json:object>
<json:array name="students" var="student" items="${students}">
<json:object>
<json:property name="id" value="${student.id}"/>
<json:property name="name" value="${student.name}"/>
<json:property name="studentId" value="${student.studentId}"/>
<json:property name="createAt" value="${student.createAt}"/>
<json:property name="updateAt" value="${student.updateAt}"/>
</json:object>
</json:array>
</json:object>


为了展示,spring-mvc.xml的设置是

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

   <!-- 扫描web相关的bean -->
   <context:component-scan base-package="com.nicole.mybatis.controller"/>

   <!-- 开启SpringMVC注解模式 -->
   <mvc:annotation-driven/>

   <!-- 静态资源默认servlet配置 -->
   <mvc:default-servlet-handler/>

   <!-- 配置jsp 显示ViewResolver -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
       <property name="prefix" value="/WEB-INF/views/"/>
       <property name="suffix" value=".jsp"/>
   </bean>

</beans>

以上代码扫描Contriller

为了安全,把网页放到

/WEB-INF/views/

之中,

加上后缀

value=".jsp"

return的如果是String才看.jsp的网页


本地使用配置tomcat,运行网页


因为甩validation类的错误,jdk换回1.8

上图为成功运行tomcat


jsontaglib.jsp的list能够正确的展示

网页展示也可以通过mav等方式

@RequestMapping("/mav")
public ModelAndView mav(Long id) {
ModelAndView mav = new ModelAndView("model");
   id = 1L;
   Student student = studentService.getStudent(id);
   mav.addObject("student"student);
   return mav;
}


model.jsp

<%--
 Created by IntelliJ IDEA.
 User: Nicole
 Time: 14:30
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Model.jsp</title>
</head>
<body>
${student}
</body>
</html>


4,本地运行Jetty:run 插件,修改端口号为8080,浏览器访问任意查询接口,判断是否可以正确返回数据

用run插件的方式,首先找到

这里写图片描述

然后在左上角找到+号,选择Maven,写入配置,包括端口指定8080


注意command line使用的命令。


用run的方式成功运行Jetty

成功查询

如果访问的端口不对,就不能访问


二,今天问题:

Validation有关错误可以通过更换JDK解决


三,今天的收获:

给出任务二的接口。Json Tag-lib的应用。我平时用的最多的还是@ResponseBody。

REST风格,一般在代码中通过

@RequestMapping(value = "/xxx", method = RequestMethod.POST)

这样来决定,POST,PUT,GET,DELETE


任务二是,怎么通过外部,如网页对数据库进行增删改查,使用服务器和浏览器进行交流。本地的程序放到服务器上,配置必须的运行环境,包括数据库,web服务器等。


四,明天的计划:

任务2,条目5-8





返回列表 返回列表
评论

    分享到