Spring框架由七个模块组成:
如果作为一个整体,这些模块为我们提供了开发企业应用所需的一切。但我们不必将应用完全基于Spring框架。我们可以自由地挑选适合自己的应用的模块而忽略其余的模块。
Spring MVC框架:
在之前的两个小项目中,我们只使用了如下几个部分:
1. Controller
- 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。
- @Controller:定义Controller 控制器
我们的@Controller 是标记在类FeedbackController上面的,所以类FeedbackController就是一个SpringMVC Controller 对象了。
- @RequestMapping:映射 Request 请求与处理器
我们此处有两个RequestMapping:
sendFeedback方法上:
@RequestMapping(“/sendFeedback”) 标记在Controller 方法上,表示当请求/sendFeedback.do 的时候访问的是FeedbackController的sendFeedback方法,该方法返回了一个包括Model 和View 的ModelAndView 对象。
FeedbackController类上:
当@RequestMapping()标记在Controller 类上的时候,里面使用@RequestMapping 标记的方法的请求地址都是相对于类上的@RequestMapping 而言的;当Controller 类上没有标记@RequestMapping 注解时,方法上的@RequestMapping 都是绝对路径。这种绝对路径和相对路径所组合成的最终路径都是相对于根路径“/ ”而言的。
我们在Controller上加了@RequestMapping("/feedback")注解,所以当需要访问到里面使用@RequestMapping("sendFeedback") 标记的方法sendFeedback() 的时候就需要使用sendFeedback方法上@RequestMapping 相对于控制器FeedbackController上@RequestMapping 的地址,即/feedback/sendFeedback.do 。
- @ResponseBody:将java对象转为json格式的数据,然后直接写入HTTP response 的body中;一般在异步获取数据时使用
@ResponseBody注解的作用是将controller的方法返回的对象 通过适当的转换器 转换为指定的格式之后,写入到response对象的body区(响应体中),通常用来返回JSON数据或者是XML。我们要通过@ResponseBody 注解 将返回的json字符串放入响应体中,然后在前台js才能拿到json字符串进行解析,如果不加,响应体中就没有放入json字符串,前台是拿不到数据的。
- @Autowired:
@Autowired可以标注在属性上、方法上和构造器上,来完成自动装配。默认是根据属性类型,spring自动将匹配到的属性值进行注入,然后就可以使用这个属性autoWiredBean对象的方法。
*参考资料:@controller深入详解_id_lian的博客-CSDN博客@ResponseBody用法详解_笑尘~Y的博客-CSDN博客@ResponseBody注解的作用_Evan Wang的博客-CSDN博客@Autowired注解详解——超详细易懂_子时不睡的博客-CSDN博客
2. Service
Service层叫服务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务。业务模块的逻辑功能设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。
好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。
- @Service:定义Service类
@Service注解用于类上,标记当前是一个service类,加上该注解会将当前类自动注入到Spring容器中,不需要再在applicationContext.xml文件定义bean了。在调用该service时只需要将该类注入接口中即可:如,在feedbackController中,我们注入了feedbackservice,以便后续使用。
*参考资料:java中的service层,dao层,controller层的理解_依嘫_吃代码的博客-CSDN博客
3. Dao
Dao层是数据访问层,接口实现层(底层),与mybatis有紧密的联系。一般实现对数据内容的增删改查。一个DAO一定是和数据库的某一张表对应的,其中封装了增删改查基本操作。
4. View
使用jsp进行编写,可以理解为一种前端语言。一般我们在此向后端发送请求,并获取返回的数据进行解析和展示。
*参考资料:JSP(java服务器页面)_百度百科
总而言之,Dao是底层,可以借助数据表实现增删改查的功能。然后service层可以将一个或多个dao层封装成为一个服务,controller层转发,接受页面传的参数,由service处理检查数据的合理性,controller接到返回值传给页面。
*参考资料:java中的service层,dao层,controller层的理解_依嘫_吃代码的博客-CSDN博客