实习收获

1.那些rest包中的东西?是不是因为系统中使用了cxf web service,cxf web service可以对外提供接口,是不是这些接口可以我们使用,android和ios也可以使用?
        所以在我们的com.pinghua.api的包中我们要封装成这种http请求来调用我们所需要的服务。
                        String orderStr = JsonUtils.toJSON(orderInfoDTO);
LOGGER.info(orderStr);
MultiValueMap<String, String> requestArgs = new LinkedMultiValueMap<String, String>();
requestArgs.set("orderStr", orderStr);
requestArgs.set("productName", productName);
requestArgs.set(Constants.ACCESS_TOKEN, accessToken);
requestArgs.set(Constants.USER_IP, userIp);
requestArgs.set(Constants.SIGN_INFORMATION, SecurityUtil.signParamter(requestArgs.toSingleValueMap()));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestArgs, headers);
ResponseEntity<String> responseEntity = restTemplate.exchange(getBaseUrl() + PAY_SUBMIT_ORDER_INFO_SERVICE_URL, HttpMethod.POST, requestEntity, String.class);
而我们调用的一些第三方服务的接口,其实也是和我们自己写的这种接口类似?
2.控制器我们使用的是spring mvc,下面这个方法是填写完新闻内容的表单之后请求发送到下面的方法
@RequestMapping(value = "/create", method = RequestMethod.POST)
public ModelAndView create(HttpServletRequest request, @Valid NewsinfoDTO newsinfo, BindingResult result) {

}
        这个上面使用的是@Valid NewsinfoDTO newsinfo来接收表单,我也看到前端页面的html元素上的name属性是和表单中的属性是一致的才可以接受到,例如下面的name=“fulltitle”。


<label class="form-label col-2"><span class="c-red">*</span>文章标题:</label>
<div class="formControls col-10">
<input type="text" class="input-text" name="fulltitle">
</div>
     有一点不太理解,因为我看到spring mvc书上有一节介绍的是数据绑定和表单标签库这个章节
     <form:form modelAttribute="accountmodel" method="post">     
        用户名:<form:input path="username"/><br/>
        密 码:<form:password path="password"/><br/>
        <input type="submit" value="Submit" />
    </form:form>  


     里面这个modelAttribute=“”属性,表示的是绑定到哪个模型上,我们没有这样写,为什么也能按照对应的属性传过去,是有什么地方配置了而我不懂?


3.我看到系统中有一些文件是什么Jfinal的,这个我查了一下是什么代码生成器,我改过的这些地方都没有用到过,这个有没有关系?
4.public PageResult<NewsinfoDTO> findAll(NewsinfoDTO newsinfoSearch, int pageNumber, int pageSize) {

PageResult<Newsinfo> pageResult;
Criteria<Newsinfo> criteria=new Criteria<Newsinfo>();
Sort sort=new Sort(Direction.DESC, "addtime");
Pageable page = new PageRequest(pageNumber, pageSize,sort);
if (newsinfoSearch.getNewskindId() != null){
criteria.add(Restrictions.eq("newskindId", newsinfoSearch.getNewskindId(), true));
}
if (newsinfoSearch.getAddTimeStart() != null){
criteria.add(Restrictions.gte("addtime", newsinfoSearch.getAddTimeStart(), true));
}
if (newsinfoSearch.getAddTimeEnd() != null){
criteria.add(Restrictions.lte("addtime", newsinfoSearch.getAddTimeEnd(), true));
}
criteria.add(Restrictions.eq("isDel", false, true));
if (newsinfoSearch.getAddtime() != null) {
criteria.add(Restrictions.lte("addtime", newsinfoSearch.getAddtime(), true));
}
if (StringUtils.isNotBlank(newsinfoSearch.getFulltitle())){
SimpleExpression[] expressAry = new SimpleExpression[2];
expressAry[0] = Restrictions.like("fulltitle", newsinfoSearch.getFulltitle(), true);
expressAry[1] = Restrictions.like("content", newsinfoSearch.getFulltitle(), true);

criteria.add(Restrictions.or(expressAry));
}

Page<Newsinfo> result = newsinfoDao.findAll(criteria, page);

pageResult = new PageResult<Newsinfo>(pageNumber, pageSize, result.getTotalElements(),result.getContent());

PageResult<NewsinfoDTO> pageResultDTO = JsonUtils.parseJSON(JsonUtils.toJSON(pageResult),
new TypeReference<PageResult<NewsinfoDTO>>() {
});
List<NewsinfoDTO> list = pageResultDTO.getContent();
for (int i = 1; i < list.size(); i++) {
list.get(i).setNewskind(JsonUtils.parseJSON(JsonUtils.toJSON(newskindDao.findById(list.get(i).getNewskindId())),NewskindDTO.class));
list.get(i).setContent(null);
if(list.get(i).getSpeciaSchool()!=null){
list.get(i).setSpeciaSchoolName(JsonUtils.parseJSON(JsonUtils.toJSON(specialSchoolDao.findById(list.get(i).getSpeciaSchool().intValue())),SpeciaSchoolDTO.class));}
}
return pageResultDTO;


       }
  这段代码是查找出所有新闻的页面,包括根据新闻中的院校id从另一个院校表中查找出院校名称,在这些代码中体会到了如下的知识
   (1)DTO(如NewsinfoDTO)的作用:之前对DTO只有一点体会,就是当一个注册页面中有一个密码和确认密码的文本框来防止用户两次密码不一致,我们当然可以通过js的代码直接在前台验证,当然也可以通过DTO接收校验两次密码是否一致
     这是我对DTO的初步的认识。
   (2)这段代码中使用DTO的好处更加地体现,NewsinfoDTO除了有Newsinfo的所有同名的属性(属性同名是因为总是用JsonUtils.toJSON()和JsonUtils.parseJSON()把NewsinfoDTO和Newsinfo互相转换,所以属性要同名?)外,
       还多了一个SpeciaSchoolName这个属性,通过JsonUtils.toJSON()和JsonUtils.parseJSON()转换后,就可以根据getSpeciaSchool()得到id后,从另一个表中查找出对应的院校名称后设置给NewsinfoDTO的SpeciaSchoolName,实现了两个表的联合查询。
       List<NewsinfoDTO> list = pageResultDTO.getContent();
       list.get(i).setSpeciaSchoolName(JsonUtils.parseJSON(JsonUtils.toJSON(specialSchoolDao.findById(list.get(i).getSpeciaSchool().intValue())),SpeciaSchoolDTO.class));
    (3)之前一直想用spring data JPA实现,看了很多博客,看到了一个介绍的比较好的http://z276356445t.iteye.com/blog/1596277,但最终也没有实现,而是和其他结合勉强实现联合查询的功能
                   criteria.add(Restrictions.eq("newskindId", newsinfoSearch.getNewskindId(), true));
Page<Newsinfo> result = newsinfoDao.findAll(criteria, page);

   EntityManager em = emfactory.createEntityManager();  
   List<Newsinfo> abcs = em.createQuery("select new com.pinghua.pojo.Newsinfo(a.id, a.newskindId, a.newskind2,a.shorttitle, a.fulltitle, a.keyword,a.content, a.onlinecount, a.likecount,a.istop, a.toppic,                  


                       a.addman,a.addtime,a.updatetime,a.ispic, a.isfj, a.source,a.sourceurl, a.isDel,a.showInHome,a.showInSpecialColumn,a.teaName, a.teaimg," +
             "a.teaPost,b.schoolName) from  Newsinfo a, SpeciaSchool b where a.speciaSchool=b.id and a.newskindId=3  order by a.addtime desc").getResultList();   
   
                    System.out.println("abc1:__________-------------------------------------------------------------"+abcs.size()); 
           List<Newsinfo> abc=new ArrayList<Newsinfo>();
           System.out.println("abc1:____________"+abc.size());
                    for(int i=pageSize*pageNumber;i<pageSize*(pageNumber+1)&&i<result.getTotalElements();i++){
                     abc.add(abcs.get(i));
                       }
                    System.out.println("abc2:____________"+abc.size());

          pageResult = new PageResult<Newsinfo>(pageNumber, pageSize,result.getTotalElements() ,abc);
        在这尝试期间多少对我们自定义的分页有一些了解。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值