发表于: 2019-10-29 23:14:40

1 1046


今天完成的事:
1、完成留言、回复的楼层效果。
下图为json数据返回效果,呈楼层状,但是还有留言者昵称以及回复者昵称功能没有添加,有待完善。
在controller类中,使用@PathVariable绑定参数,url参数与value中的参数名必须相同,方法入参中的id名称可以自定义。
设置好查询信息,调用service层方法查询父留言,即直接给作品留言的信息,遍历后调用util类中的递归查询方法,根据父留言id查询对应的子回复集合。
需要注意调用util类方法时,入参需要将service也传入,之前以为这里传入的是service的bean,因为需要在util类中调用service的方法,询问师兄后得知这里传入的就是service的类变量,大概看了下,说是涉及到普通类使用service的bean的问题,还有方法调用,这方面比较薄弱,需要好好看下有关方法的相关知识,任务一学的再复习一下。因为明天有小课堂,需要准备一下,这个问题就先放一下。
util类的递归查询方法,入参有service,根据父留言id查询所有子回复,而后遍历子回复,再递归调用自身方法,将子回复id作为父留言id进行查询,如果有下一级回复就继续遍历,直到所有回复查询出来。
本来这两个方法在测试类时都是写在一起的,测试好后,都要放在controller类中感觉代码就不够简洁了,试着放在service的实现类中,也可行,但是就感觉不怎么好,看了下师兄日报,发现除了pojo、dao、service、controller层还有util层,所有也试着将递归所有回复的方法放在了一个util类中,而且后期还会有昵称随机生成的方法,还可能会有其他方法,到时候可以都放到util层中直接调用。
测试结果,父留言id为0时,该留言就是直接评论的作品,父留言id大于0时,就是子回复,这留言5是直接评论作品,留言6、7是回复的5,留言16、17回复的6等等。
随后在sql语句中,将父留言的查询进行创建时间的倒叙排序,子回复是按默认的正序排序。测试结果是按照设置输出,跟上图效果差不多,就不放图了。
2、准备小课堂资料,复习脚本相关知识。
常见问题:
(1)#!/bin/bash 和 #!/bin/sh 的区别?
(2)Windows使用NodePad++编辑脚本文件,上传服务器运行为什么会报错?
(3)脚本为什么使用“./”命令运行会报错,用“sh ./”命令就可以运行?
问题解答:
(1)“#!”是个指示路径的表示符,/bin/bash和/bin/sh是指定了脚本解析器的程序路径
bash、sh都是命令解释程序,可以执行从标准输入或文件中读取的命令。
但是sh的脚本可以不加修饰在bash上运行,而bash的脚本在sh上运行则容易报错,简单说,bash包含sh。
(2)编写脚本时,如果直接在linux上编写会很麻烦,在Windows上使用NodePad++编写后,上传到linux上会很方便,但是由于种种历史原因,Windows、Unix/linux、Mac三者之间,对于文件中所用回车换行符表示的方法都不一样,所以在使用时需要进行格式转换。
Windows上按一下回车,实际输入的是“回车CR”和“换行LF”,而linux则只输入“换行LF”,所以编辑的文件每行都会多一个CR,在linux上就无法运行。
这时需要使用vim命令进入编辑文件页面,使用“:set ff ”查看可以发现脚本文件格式为dos格式,使用“:set ff=unix”命令将格式改为unix格式,则可以在linux上运行脚本文件。
(3)脚本使用“./”命令运行会报错,是因为脚本文件没有相应的权限,如果想使用“./”命令,需要使用“chmod 777 xxx.sh”命令添加权限,777代表读、写、执行权限对所有人都开放。而直接用“sh ./”命令执行脚本,是直接运行解释器,这样就不需要再脚本文件的第一行指定解释器信息了,写了也没用。
#!/bin/bash
echo '启动部署脚本...'
echo 进入/git_xzy
cd /git_xzy
echo pull项目代码
git pull origin master
echo 进入/git_xzy/xzy_student项目
cd /git_xzy/xzy_student
echo maven命令打包
mvn clean package -Dmaven.test.skip=true
echo 进入war包所在文件夹
cd /git_xzy/xzy_student/target
echo 删除原有ROOT文件夹
rm -rf /usr/local/java/apache-tomcat-9.0.24/webapps/ROOT
echo 移动war包到webapps
mv ROOT.war /usr/local/java/apache-tomcat-9.0.24/webapps/
echo '检查8080端口是否被占用...'
pid_student=`lsof -i :8080|grep -v "PID"|awk '{print $2}'`
if [ "$pid_student" != "" ];
then
    echo '8080端口被占用'
    echo $pid_student
    kill -9 "$pid_student"
    echo $pid_student '进程已被杀死'
else
    echo "端口未被占用"
fi
echo 关闭Tomcat
sh /usr/local/java/apache-tomcat-9.0.24/bin/shutdown.sh
echo '启动Tomcat...'
sh /usr/local/java/apache-tomcat-9.0.24/bin/startup.sh


明天计划的事:
1、完成小课堂资料,进行小课堂讲解。
2、学习图片上传相关知识。
3、复习有关方法的相关知识。
遇到的问题:
1、在进行留言回复楼层效果时,查看的实例都会有我这不需要的字段,而且每个实例的字段名称设置都不同,所以看的头昏脑涨也没看懂,今天就这样体现效果了,其实并不复杂,以后在查看实例时,需要将不需要的字段、语句剔除后再好好看。
2、普通类使用service的bean的问题,还有方法调用,这方面比较薄弱,需要好好看下有关方法的相关知识,任务一学的再复习一下。
收获:
1、完成留言回复楼层效果,对递归查询回复理解更深。但是复杂的功能还需要继续学习。
2、复习脚本相关知识,加深理解。

返回列表 返回列表
评论

    分享到