java后端开发项⽬流程_Java项⽬——后端笔记
正⽂
最近接触了Java项⽬,我负责的是(教师授课),因为刚刚接触,所以有很多东西需要去学习和了解,所以今后会经常写写收获或者记录⼀下项⽬历程!
接⼿第⼀个后端任务就是写⼀个接⼝(根据课程id和学年学期查询教师信息),以供别的界⾯使⽤,对于代码还不熟,也有些看不懂的我来说让我改这个接⼝其实还是有难度的!刚开始有些不知所措,后来⼥神告诉我“就看⼀条线,抓住它不放”——通过理解⼀条线来⼤概了解整个结构!下⾯就来简单说说改这个接⼝的过程中得到的收获,以及说说解析个别类!
流程图
项⽬采⽤前后端分离的⽅式进⾏开发,前端⽤的angular,后端是Dubbo + ZK + Spring,前端与后端连接是通过angular的后台ts⽤url来指定调⽤的后端接⼝,下⾯的图是我改接⼝时整理出来的⼀条线的⼤概流程!下边我也会简单解析⼀两个类!
【注意】:不⼀定ServiceImpl要直接⾛Dao层,⽐如有些复杂的接⼝需要⽤到基础服务,那么就可以在ServiceImpl中直接调⽤基础服务的Facade层。因为后端⽤的mybatis,所以当需要⾃⼰写SQL时就在Ma
手机html编辑器下载Controller
1.代码
/** *根据课程id和学年学期查询当前学年学期教师信息 *@paramcourseId课程id *@paramschoolYear学年学期 *@paramstrLike模糊条件 *@return教师信息 */
//RequestMapping为url映射路径
@RequestMapping(value={"/queryTeacherInfo/{courseId}/{schoolYear}"},method=RequestMethod.GET)
//@ResponseBody 将该⽅法的返回结果直接写⼊HTTP响应正⽂中⼀般在异步获取数据时使⽤
@ResponseBody
public ItooResult queryTeacherInfo(@PathVariable String courseId,@PathVariable String
schoolYear,@RequestParam(defaultValue = "",required = false) String strLike){
List listTeacherCourse;
try{
php define定义常量//判空
if(!StringUtils.isEmpty(courseId) && !StringUtils.isEmpty(schoolYear)){
//注⼊Facade层
listTeacherCourse=teacherCourseFacade.queryTeacherInfo(courseId,schoolYear,strLike);
}else{
return ItooResult.build("1111","请先选中⼀条记录");
}
}catch(Exception e){
<("TeacherCourseController.queryTeacherInfo()⽅法出错",e);
return ItooResult.build("1111","查询失败",e);
}
return ItooResult.build("0000","查询成功,但是该条件下查询的是null值",listTeacherCourse);
}
2.⼩补充
(1).@RequestMapping
为url映射路径,也就是通过它来指定控制器可以处理哪些URL请求,类似于struts的action请求。可⽤于类或⽅法上,⽤于类上,表⽰类中的所有响应请求的⽅法都是以该地址作为⽗路径。出来工作java基础太差
(2).@Responsebody和@RequestBody
◆【@Responsebody】
将⽅法的返回结果直接写⼊HTTP响应正⽂中,⼀般在异步获取数据时使⽤。
在使⽤@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,⽽是直接写⼊HTTP response body中。⽐如异步获取json数据,加上@Responsebody后,会直接返回json数据。
◆【@RequestBody】
winform窗体游戏猜拳将HTTP请求正⽂插⼊⽅法中,使⽤适合的HttpMessageConverter将请求体写⼊某个对象。
(3).@PathVariable和@RequestParam
两者的作⽤都是将request⾥的参数的值绑定到contorl⾥的⽅法参数⾥的,区别在于,URL写法不同。
◆【@PathVariable】
绑定URI模板变量值,⽤于将请求URL中的模板变量映射到功能处理⽅法的参数上。即取出uri模板中的变量作为参数
//例⼦
@PathVariable String courseId
◆【@RequestParam】
【value】:参数名字,即⼊参的请求参数名字,如username表⽰请求的参数区中的名字为username的参数的值将传⼊;
【required】:是否必须,默认是true,表⽰请求中⼀定要有相应的参数,否则将报404错误码;
【defaultValue】:默认值,表⽰如果请求中没有同名参数时的默认值
//例⼦
@RequestParam(defaultValue = "",required = false) String strLike
(4).StringUtils . isEmpty ()
StringUtils . isEmpty () ⽅法是⽤来判断输⼊的String参数是否为空的。StringUtils类是org.apachemons.lang下的类,它的的操作对象是java.lang.String类,是JDK对String类的补充,做到了对null值得控制,即输⼊的String参数为null时不会抛出nullPointException 异常。
ServiceImpl
1.代码
/** * 根据课程id和学年学期查询教师信息 *@param courseId 课程id *@param schoolYear 学年学期code *@param strLike 模糊条件*@return */
@Override
public List queryTeacherInfo(String courseId, String schoolYear, String strLike){
List staffForTeachModels = new ArrayList<>();
//根据课程id和学年学期查询教师Id和教师姓名(ps:因为要想查到教师具体信息得去专门存储教师信息的表中查,⽽且课程id此时和教师id 在⼀张表中,所以就先⾛⼀条此线)
List teacherCourseModels = teacherCourseDao.queryTeacherIdAndName(courseId, schoolYear,strLike);
if(!CollectionUtils.isEmpty(teacherCourseModels)){
//使⽤Java8新特性stream流得到id集合
List teacherIds = teacherCourseModels.stream().map(TeacherCourseModel::getTeacherId).List());
//调⽤基础服务,根据教师ids和模糊条件查询教师详细信息
staffForTeachModels = teachStaffFacade.queryStaffByStaffIds(teacherIds);
}
return staffForTeachModels;
}
java下载过程2.⼩补充
正则表达式匹配电话号码(1).Stream流
Stream流是java8的新特性,也查过⼀些资料但是还是不能很好的理解,可能是我⽤的还太少,需要更多的到实践中去理解吧!下⾯我就简单解释⼀下这次我⽤到此stream流的代码。
.stream()——创建流
.map(TeacherCourseModel::getTeacherId)——⽤map转换
.List())——把流收集为List
idea提交代码
我们⽤的是SVN来对代码版本进⾏控制,所以在配置环境时就应该把idea和SVN进⾏关联,今天我就不说如何和SVN关联了,下⾯我就说⼀下提交代码时咋提交吧,刚开始的时候不到。
1.点击idea左下⾓的“Version Control”
2.在出现的窗⼝中右击你要提交的部分
3.选择Commit
4.写提交信息,并对⽐⼀下改前的版本和改后的版本,以确保提交版本的正确性
5.点击右下⾓的“commit”按钮
⼩结
本篇博客的分享就到此结束了,也没有分享太多,因为有些知识我还消化的不太好,所以就不在此献丑了,不过⼩菜不会放弃的,我会继续努⼒,更新更多我学到的知识!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论