发表于: 2020-05-13 23:09:28

1 1453


今天完成的事:

1.用 json-taglib 生成假数据

之前对这句话的理解有一点偏差,所以卡着没做。

json-taglib 是一个 jsp 标签库,作用就是把 jsp 文件变成 json 数据返回,格式可以自定义,数据可以自己任意编撰,只要符合 json 的格式都行。

为什么需要生成假数据?

后端没有完成全部功能之前传假数据供前端工程师调试页面。

使用方法:

(a)添加一个 jsp 文件,内容清空(idea 会自动生成一些内容),在文件头部添加一个声明:

<%@ page language="java" pageEncoding="utf-8" isELIgnored="false" %>


(b)开始撰写需要的 json 假数据,以下是我的假数据 jsp 文件内全部内容(第一行是为了治中文乱码)。

WEB-INF/views/pseudo_data/disciple.jsp

<%@ page language="java" pageEncoding="utf-8" isELIgnored="false" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<json:object>
<json:object name="dsiciple">
<json:property name="student_name" value="foo"/>
<json:property name="major_subject" value="前端"/>
<json:property name="graduated_school" value="五道口"/>
<json:property name="brother" value="暗灭"/>
<json:property name="come_from" value="baidu"/>
<json:property name="daily_report" value="www.baidu.com"/>
<json:property name="slogan" value="加油!"/>
<json:property name="id" value="${id}"/>
<json:property name="qq_num" value="7658765"/>
<json:property name="student_id" value="876959"/>
</json:object>
<json:property name="code" value="200"/>
</json:object>

(c)编写一个 controller 来返回这个 jsp 文件。

controller/PseudoDataController/

@Controller
@RequestMapping("/pseudodata")
public class PseudoDataController {

@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public ModelAndView queryById(@PathVariable("id") Integer id){
ModelAndView modelAndView = new ModelAndView("pseudo_data/disciple");
modelAndView.addObject("id", id);
return modelAndView;
}
}

最终效果就是这么神奇,jsp文件变成 json 数据了:


2.添加了一个分页数据接口

接口文档:

我的实现比较垃圾,每一次调用都会取出所有数据,然后返回指定一页的数据,想要优化的话只能从映射文件下手,拼接 SQL,不用每次都取出所有数据。

顺便一提我的 rest 接口设计都是在这个网页获取的:RESTful API通用设计规则


效果如下,一屏显示不下,中间的数据折叠了。


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

Jetty:servlet 容器,和 tomcat 作用是一样的。

测试:

没有问题,很稳。



明天计划的事情:

1.继续和服务器作斗争,部署好三个 servlet 容器并且各种测试。



遇到的问题:

1. 假数据乱码

解决方法:

jsp 页面顶部添加:

<%@ page language="java" pageEncoding="utf-8" isELIgnored="false" %>


2.@RequestMapping 注解同一个 value 不能有重复的 RequestMethod

写分页的时候偶然发现的,比如以下两个方法:

@RequestMapping(value = "", method = RequestMethod.GET)
public @ResponseBody Map<String, Object> getPage()
@RequestMapping(value = "", method = RequestMethod.GET)
public @ResponseBody Map<String, Object> getPage(int page, int per_page)

虽然签名不一样,但是编译还是会报错,RequestMapping 重复了。


3.Jetty 启动的根目录不对

这个我就贴一下配置吧,我也是各种排列组合试出来的。

url 后面要手动加上欢迎页,我试了 pom.xml,web.xml 还有去 jetty 软件目录设置都没成功,反正就很迷。



收获:

1.脖子疼。




返回列表 返回列表
评论

    分享到