8.spring的MVC框架
以前一直是用spring的mvc开发,但是是别人搭建的,自己也不是很懂,就在那用,也就是程序员最悲哀的事情,会用,不懂原理,一离开人家写的框架,自己就像不会编程似的,现在看了spring这本书,一下就明白了原来前辈们写的spring框架的东西,还是因为自己没去学习的缘故。
我自己的这份总结写的很快,中间很多如acegi安全框架,RMI远程服务,还有企业级应用,这些我暂时都还用不上,所以就没去看。我认为spring最重要的就是装配bean,理解ioc,aop,以及它的MVC(当然你要喜欢这个MVC),总共5-6章知识就够了,现在就来写spring的mvc。
要说spring的mvc框架,给从请求说起,当请求离开浏览器时,会带有用户提交的信息,那么请求的第一站就是spring的前端控制器---DispatcherServlet.
1.DispatcherServlet,从名字可以看出,他自身应该不会处理请求,而是委托给系统中的其他模块进行真正的处理。没错,你没有看错,又是委托,spring中到处都是使用委托,它的aop,事务处理,现在的前端控制器都是如此。到达 DispatcherServlet后,它会根据一组规则,来确定这个请求有怎样的方式去找控制器对象(真正处理的那个bean)。这个规则就是HandlerMapping。
2.HandlerMapping,共有4种,可以帮助 DispatcherServlet找到处理请求的正确控制器。处理器映射可以帮助DispatcherServlet找到处理请求的正确控制器
处理器映射
如何将请求映射到控制器
BeanNameUrlHandlerMappping
根据控制器的名字将控制器映射到URL
SimpleUrlHandlerMapping
用上下文配置文件中定义的属性集合将控制器映射到URL
ControllerCalssNameHandlerMapping
通过将控制器的类名作为URL的基础将控制器映射到URL
CommonsPathMapHandlerMapping
使用控制器代码中的元数据将控制映射到URL。元数据使用Jakarta Commons Attributes(http://jakarta.aqache.org/commons/attributes)定义
它的默认值是BeanNameUrlHandlerMappping,也就是说通过bean的名字来找真正的处理器。
现在已经找到了控制器Controller.
3.Controller 在控制器上,请求卸载下它的负载,等待控制器处理这些信息,完成业务逻辑后,需要返回给用户并在浏览器中显示的信息。这些信息被称为模型,一般是在jsp上显示出来(用jstl),控制器一般只有很少的处理工作,它一般是用service层给它提供的服务,所以这里就用到了ioc,你怎么获得这个service层的服务呢?注入进来,获得。有了模型,给告诉它被发送到哪里显示啊,所以还有视图,控制器将模型和视图打包到一个对象里叫做ModelAndView。接着将ModelAndView发送回 DispatcherServlet。
4.ModelAndView 它本身并不带有JSP的路径,而是只有视图的逻辑名,你可以想象成关键字。比如/WEB-INF/jsp/home.jsp。视图的逻辑名就是home,而/WEB-INF/jsp/和.jsp这2个信息, DispatcherServlet会要求一个视图解析器根据这2个信息来协助查找实际的jsp。
5.请求工作基本完成了,将相应对象返回给浏览器。
配置 DispatcherServlet
<servlet>
<servlet-name>Dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/myproject-spring-servlet.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
其中 xxxx-spring-servlet.xml是你配置所有 Controller的地方。这里面要配置视图解析器
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix">
<value>/WEB-INF/view/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
<property name="contentType">
<value>text/html;charset=UTF-8</value>
</property>
</bean>
spring建议将配置文件分开配置,Controller在一个配置文件,dao和service也要分开,不过我自己觉得没必要,所以把dao和service配置在一起。
当然还要有
<servlet-mapping>
<servlet-name>Dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
配置上Controller依赖的dao和service
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/myproject-spring-ds.xml</param-value>
</context-param>
其中 myproject-spring-ds.xml就是dao和service的配置文件。
最后还要配置一个上下文载入器,保证其他上下文文件都载入。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
这样web.xml中的配置文件就基本完成了,当然像日志啊,encodingFilter,hibernateFilter等,也要在这里配置,不细说了。
写控制器的时候,你可以实现Controller接口,但是我认为比较好的方法是继承AbstractController,或者你可以自己再写一个核心控制器,来继承AbstractController,里面有你自己的方法。当然要根据实际情况来编写。
spring的mvc,想要搞出一套自己用的爽的,要花很大功夫,比如Dao层可以自己写BaseDAOHibernate,来继承AbstractHibernateDAO,当然自己写个牛B的通用分页,也是很重要的。诸如此类的细节太多了。要慢慢完善自己的mvc框架。
分享到:
相关推荐
spring mvc学习笔记spring mvc学习笔记spring mvc学习笔记spring mvc学习笔记spring mvc学习笔记
Spring in Action中文清晰版(带阅读笔记). Spring in Action中文清晰版(带阅读笔记).
Spring in action的学习笔记,里面有许多代码示例,部分内容是自己根据多方面资料综合而成
Spring3 MVC 学习笔记 入门 Spring3 MVC 学习笔记 入门
学习spring总结的笔记 希望对初学者有所帮助
spring框架整体知识点整理,代码样例
spring in action spring mvc 第四版 中文,基于springMVC框架
Spring in action Spring in action Spring in action Spring in action Spring in action Spring in action
spring学习笔记
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring MVC4中,我们将会从头开始构建一个有用的Web应用。本书共计10章,分别介绍了...
使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、...
Java Spring框架学习笔记(内附源码).pdf
传智博客Spring框架2016版笔记资料 传智博客Spring框架2016版笔记资料 传智博客Spring框架2016版笔记资料 传智博客Spring框架2016版笔记资料 传智博客Spring框架2016版笔记资料
马士兵老师spring框架学习笔记
传智播客 Spring MVC 学习笔记
spring MVC框架用于web应用快速开发的一个模块。作为当今最主流的web开发框架,开发技能相当热门,值得大家掌握应用。
spring mvc学习笔记,包括学习遇到的问题和解决方法。
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java...
介绍Spring MVC框架以及使用套路