发表于: 2020-06-02 22:21:11

2 1382


今天完成的事情:学习SpringMVC

敲好的代码运行不起来,感觉自己对MVC的掌握程度远远不够,听取了师兄的建议,再学习SpringMVC

重新创建了一个WEB项目,配置好POM web.xml 等配置文件,tomcat运行,成功启动 

(似曾相识的步骤)

然后 写好一个简单的控制层

@RequestMapping(value = "c/banner/{id}",method = RequestMethod.GET)
public ModelAndView id(@PathVariable("id") Long id){
ModelAndView mv = new ModelAndView("banner");
   mv.addObject("id",id);
   return mv;
}

其中 new ModelAndView("banner")    指可以跳转到指定的页面,也就是banner.jsp文件

之前写过了接口文档,我认为 此处的 String 与 Object 都是前端的数据类型,我之前一直比较迷惑这俩东西到底是啥


banner.jsp文件配置

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>

<json:object escapeXml="false">
<json:object name="banner" >
<json:property name="id" value="${banner.id}" />
<json:property name="url" value="${banner.url}" />
</json:object>
</json:object>

结果输出页面

这里我并没有写业务层...


@Resource
   private BannerService bannerService;
//
   @RequestMapping(value = "/c/banner/{id}",method = RequestMethod.GET)
public ModelAndView banner(@PathVariable(“id”) Long id){
Banner banner = bannerService.findById(id);
       ModelAndView mv = new ModelAndView();
       mv.setViewName("banner");
       mv.addObject("banner",banner);
       return mv;

这样是从代码中注入bannerservice,通过这个服务类使用传递参数id获取数据,这些只是业务逻辑,接下来就是视图渲染,需要在banner.jsp文件中编写JSTL标签然后读出数据,但是这个还需要从tomcat中导入jar包,这个操作在我刚开始学Spring MVC的时候就已经尝试了,不好用,然后我就尝试任务二时的业务逻辑

@Resource
private BannerService bannerService;
@RequestMapping(value = "/c/banner/{id}",method = RequestMethod.GET)
public String find(@PathVariable("id") Long id, Model model){
Banner banner = bannerService.findById(id);
   model.addAttribute("banner",banner);
   return "banner";
}
然后爆出了下面的错误....原来是我业务层没有增加注解@Service....
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bannerController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.service.BannerService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}

改正之后,成功解决问题

然后照着这样把其他的控制层写好..

进度太慢,之前学过的东西没有运用到,把之前的日报重新翻看了一遍,postman也忘了怎么用...啊,我真是个菜鸡呢


明天计划的事情:别的没有,就希望写好的代码可以正常跑,可以根据接口文档调用接口


返回列表 返回列表
评论

    分享到