0
点赞
收藏
分享

微信扫一扫

SpringMVC框架总体介绍(一)


 SpringMVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能MVC 模块,其功能和Strtus2,Struts1是类似的,只不过是实现的原理不同而已。其中Struts2是通过过滤器来实现路劲和action的映射等控制流转功能,而Struts1和SpringMVC则是通过最传统的servlet来实现对其代码封装的。但是都是非常相似的MVC流程框架。简单看一下SpringMVC框架中的知识点,这里是从数据的流转前后顺序进行分的:

SpringMVC框架总体介绍(一)_springmvc



            一,SpringMVC是一个MVC的流程框架,同样适用在我们的表现层到action模块中,是MVC架构模式中真正的Controller。SpringMVC在流程处理方面更加灵活,可以很容易的进行扩展,可以和Spring框架进行无缝集成,毕竟是一家公司生产的,就是为了解决web开发问题,增加竞争性。但是SpringMVC有侵入性,action需要继承框架指定的类,或者实现指定的接口。

 

          二,看一个它实现的原理图吧:




SpringMVC框架总体介绍(一)_xml_02




         和Struts2还是很相似的,有一个核心过滤器Dispatcher,和核心配置文件springMVC-servlet.xml,通过过滤做一些固定的任务,到达指定的action进行相关业务的操作。看网上一篇文章吧,写的挺详细的:​​Spring MVC原理​​

 

三,初步使用:

           1,由于SpringMVC是继Spring后续开发的,它利用了Spring的jar包,这里看一下需要导入的jar包:

commons-logging.jar(日志输出)

spring-webmvc.jar(SpringMVC核心包)

spring.jar        (Spring核心包)

 

           2,编写springMVC-servlet.xml文件,存放到/WEB-INF/目录下,基本编写如下:


1. <?xml version="1.0" encoding="UTF-8" ?>  
2. >
3.
4. <beans>
5. <!-- VIEW DEFINITIONS ,视图解析器,框架提供了好多解析器,这里举例其中的一种-->
6. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
7. <property name="prefix" value="/WEB-INF/jsp/spring/"/>
8. <property name="suffix" value=".jsp"/>
9. </bean>
10.
11. <!-- DEFINITIONS OF PUBLIC CONTROLLERS ,映射解析器-->
12. <bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
13. </beans>
14. <!-- 控制器类,name表示访问的URI路径,class表示对应的action类 -->
15. <bean name="/hello.html" class="com.ljh.springmvc.controller.HelloWorldController"></bean>



  3,在web.xml中增加对springMVC框架的支持,其实就是增加SpringMVC框架核心过滤器的servlet的配置:




1. <!-- SpringMVC的核心控制器(前端控制器) -->  
2. <servlet>
3. <servlet-name>springMVC</servlet-name>
4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
5. <init-param>
6. <!-- 指定配置文件的全名,如果不指定,则为这里的servlet-name的属性SpringMVC+"-servlet.xml" -->
7. <param-name>contextConfigLocation</param-name>
8. <param-value>/WEB-INF/springMVC-servlet.xml</param-value>
9. </init-param>
10. <!-- 启动服务器时创建此serlvet核心对象 -->
11. <load-on-startup>1</load-on-startup>
12. </servlet>
13. <servlet-mapping>
14. <servlet-name>springMVC</servlet-name>
15. <url-pattern>*.html</url-pattern>
16. </servlet-mapping>



 4,此种对应的action是有侵入性的,需要实现Contronller接口,当然也可以继承实现此接口的父类,后边介绍到:





1. public class HelloWorldController implements Controller {  
2.
3. /**
4. * 类似于Servlet的doGet(),doPost()方法
5. */
6. public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {
7. //接收数据,这里有request,response等,对于数据处理方便了很多
8.
9. //调用服务层。
10.
11. //判断返回结果
12.
13. //ModelAndView用于表示视图:给予视图层文件的名称。(根据框架的视图解析器,增加前缀,和后缀,查找配置资源。)
14. //ModelAndView也可以表示模型对象,将数据传递给视图层。(默认情况下是采用转发方式进行跳转。)
15. return new ModelAndView("success","username","zhangsan"); // /WEB-INF/jsp/spring/ + success + .jsp
16. }
17.
18. }



        这样基本框架实现就算完成了,很多框架的搭建都是这些步骤,只不过需要我们注意其中的细节,配置文件的编写等等。


重要的接口和类的简单说明:

DispatcherServlet:前端控制器,用于接收请求。

HandlerMapping接口:用于处理请求的映射。

DefaultAnnotationHandlerMapping:HandlerMapping接口的实现,用于把一个URL映射到具体的Controller类上。

HandlerAdapter接口:用于处理请求的映射。

AnnotationMethodHandlerAdapter:HandlerAdapter接口的试下,用于把一个URL映射到对应Controller类的某个方法上。

ViewResolver接口:用于解析View。

InternalResourceViewResolver:ViewResolver接口的实现,用于把ModelAndView的逻辑视图名解析为具体的View。



        SpringMVC的总体认识就是这些,后边会总结其中的一些知识点,这里不再赘述!通过和Struts2对比着学习,来寻找一些异同,通过实践来使自己理解的更加深刻。

举报

相关推荐

0 条评论