发表于: 2018-01-19 23:33:38

1 617


今天完成的事情:(一定要写非常细致的内容)

上午,纯粹在师兄的操作下,实现了服务器上的war部署

中午,把本地tomcat无法实现问题进行了排查,发现极小概率是 tomcat反应慢造成的页面错误,最终原因是代码中有乱码,删掉即可,现在本地和服务器上都能访问。

下午,进行任务二的总结,通过自己的复习,找到了还不清楚的问题,比如(controller类中不懂代码结构和写入思想,已解决)。总结如下

任务二是springmvc和spring、mybatis 三者的整合,学习了于博涛师兄的关于任务二SSM框架的简单介绍,师兄的理解是在mybatis和spring整合的基础上,再将springmvc 糅合,学习的关键是整合过程中需要用的配置文件.xml。

任务一中,spring中利用bean的思想,mybatis中加入了mapper.xml,简化了连接jdbc数据库的操作,任务一最后要整合两者,需要用到spring-mybatis 配置文件,该文件中需要进行数据源的配置和sqlsessionfactorybean,后者寓意是sql会话工厂,提供bean,通过property name= ref= 指向配置的数据源,连接上实体类和mapper.xml配置,这一段可以命名为mybatis配置,在其下还要配置一个dao层的接口扫描,那就需要写入sql语句,这个是用mapper.xml写的,关于如何写这个xml,只要对应好了dao里的方法名称和类型即可。
如果加入springmvc,我首先学到的是实体类简化。利用一个工具loombok,该工具通过注解减少无餐有参构造函数和toString等大量代码。
@Data
@AllArgsConstructor
@NoArgsConstructor
在这里使用该注解主要是为了简便写一个从数据库读取存放jsp页面的转换。
在dao层和service层,甘乐师兄已经跟我讲过两次,在当下项目功能简单,所以这两个层里的方法其实一模一样,只要是明白dao是对应数据库操作的,service是对应controller操作的,以后哪一边需要多加功能就知道在哪里加了。在dao层里同mybatis一样需要加入sql语句的xml文件,在service层里,跟jdbctemplate一样,需要写入serviceimpl,只是不需要加入sql语句和需要改变的参数,return即可,当需要新的数据时,才会写入。
在这之后,controller里的功能实现。首先需要实现什么功能,在联系代码后分析,需要一个主页面,该页面用来展现所有数据,称为主页index,index上展示所有学员的信息,然后有个功能,可以创建一个学员信息,需要跳转到一个页面newone上,实现填入提交的功能,该功能返回的数据要存储到index上。需要删除功能,index上点击删除返回到删除前页面;需要修改功能,点击之后,跳转到修改页面,修改页面来自于index所有学员中的id属性,修改提交后返回修改前的页面。需要一个查找功能,师兄说过通过id查找做了没意义,要实现通过姓名模糊查询,需要通过姓名模糊查询指向一个新的数据结果界面list。当需求了解之后,进行jsp页面和controller功能跳转的实现。
从简单入手
//跳转新增
@RequestMapping(value = "/newone", method = RequestMethod.POST)
public String newone() {return "add";}

/*@RequestMapping(path = "/delete", method = RequestMethod.POST, params = "userid")*/
/*@RequestMapping(path = "/show", headers = "context-type = text/*")*/
/*value 对应请求, method对应方法, params对应参数, headers对应报文头的映射条件*/

//新增学生信息
@RequestMapping(value = "/new", method = RequestMethod.POST)
public String news(StudentGet sg) {
student = ChangeUtil.studentChange(sg);/*通过转换器接收页面上的sg数据*/
   serviceImpl.insertStudent(student);
   return "redirect:/student/index";
}
第一段是 跳转新增页面实现,第二段是接收页面返回的数据,在index上添加新的数据,那么在add.jsp中,就需要一个返回的请求new。在这个页面需要加入除id字段的其他属性,定义一个类为studentget,和student类相比,该类里有除了id字段的参数,而方法ChangeUtil内写入了setxx(sg.get(xx)),这段代码是之前在jdbctemplate和mybatis测试类中都用到过的,只不过测试的数据从之前的自行设定改变成由add页面传过来。
明白新增数据后,修改的原理其实也是一样,只是id字段是传页面的依据,同时修改结果提交时是根据id字段修改的, student.setId(id)。
在删除和修改中,都会用到
/*标记一个Controller 的处理方法参数,表示该参数的值将使用URI 模板中对应的变量的值来赋值*/
public String delete(@PathVariable("id") Long id, @PathVariable("page") Integer page) 

这段代码实现的功能就是在修改删除之后返回修改删除前的页面,具体实现还需要学习。

关于查询,查询需要foreach语句即可list带条件查询和查询所有。

List<Student> list = serviceImpl.getStudentByName(name);
List<StudentPut> list1 = new ArrayList<>();
for (Student student1 : list) {
list1.add(ChangeUtil.timeChange(student1));
}
在小课堂上讲过分页查询,分页查询时需要总页数,数据总条数,每页数据条数,初始页码。
因为分页查询是对页面实现操作,功能实现需要在service层写入。
注意,查询的方法是get,删除的方法是DELETE,新增是post,修改可以用put也可以用post,两者区别
/*PUT:client对一个URI发送一个Entity,服务器在这个URI下如果已经又了一个Entity,那么此刻服务器应该替换成client重新提交的,也由此保证了PUT的幂等性。如果服务器之前没有Entity ,那么服务器就应该将client提交的放在这个URI上。总结一个字:PUT。对的,PUT的方法就是其字面表意,将client的资源放在请求URI上。对于服务器到底是创建还是更新,由服务器返回的HTTP Code来区别。注:通过上面可以知道,如果用PUT来达到更改资源,需要client提交资源全部信息,如果只有部分信息,不应该使用PUT(因为服务器使用client提交的对象整体替换服务器的资源)。

明天计划的事情:(一定要写非常细致的内容)

准备小课堂材料,任务二知识点复习总结,描述springmvc.xml和web.xml的作用

遇到的问题:(遇到什么困难,怎么解决的)

1、遇到controller类中怎么写的问题,结合需要实现的功能,制定方法,就能明白思路。

2、关于war包部署在服务器上,独自部署tomcat功能不能实现,师兄上手立即解决,需要对照记录进行再学习

收获:(通过今天的学习,学到了什么知识)

师兄教授学习方法,不断总结,多写笔记。之前认为日报难写,现在知道日报需要写的内容

任务开始时间:2018.01.01
预计提交时间:2018.01.21
是否有延期风险:无,已延期



返回列表 返回列表
评论

    分享到