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 in Action 学习笔记知识点总结 #### 1. Spring 框架基础 ##### 1.1 Spring 概述 - **轻量级**:Spring 的“轻量级”主要体现在其对资源消耗较少,同时具备低入侵性。在基于 Spring 开发的应用中,业务...
标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
《Spring in Action》是一本深度剖析Spring框架的权威著作,其中文清晰版为中国的开发者提供了便利,便于理解和学习。本书全面覆盖了Spring的核心概念和技术,包括依赖注入、AOP(面向切面编程)、数据访问、Web开发...
本资源包“spring+hibernate学习笔记和项目源代码”提供了深入理解和实践这两个框架的机会,同时也包含了Struts的集成,形成经典的SSH(Spring、Struts、Hibernate)架构。以下是关于这些主题的详细知识解析: 1. *...
这个“struts+spring+hibernate学习笔记”应该涵盖了这三个框架的基础知识以及如何将它们整合使用的详细教程。 Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于控制Web应用的流程。它...
SSH框架是Java开发中常见的三大开源框架Struts、Spring和Hibernate的简称,它们一起构成了强大的企业级应用开发解决方案。这篇笔记将主要介绍SSH中的Struts框架,帮助初学者理解其核心概念和工作流程。 Struts是一...
Spring 主要是依赖注入(DI)和面向切面编程(AOP)的实现,而 Struts2 是一个基于 Model-View-Controller(MVC)设计模式的Web 应用框架。 Spring 框架: 1. **依赖注入(Dependency Injection, DI)**:Spring 的...
本篇学习笔记将聚焦于四个核心的J2EE框架:JDBC、Hibernate、Struts和Spring,这些框架在现代企业应用开发中扮演着重要角色。 **JDBC(Java Database Connectivity)**是Java语言访问数据库的标准API,它是连接Java...
Spring框架是Java开发中不可或缺的...通过这些笔记,开发者可以获得Spring框架的全面理解,并能熟练地将其与其他技术结合,构建高效且灵活的应用程序。学习和掌握这些内容将极大地提升Java开发者的技能和项目管理能力。
- **整合Struts2**:虽然Struts2是一个MVC框架,但Spring可以作为一个强大的业务逻辑层与之整合,利用Spring的IoC容器来管理Struts2的Action。 #### 七、Spring框架的应用场景 - **Web开发**:在Web开发中,通常...
### Struts、Spring、Hibernate&Ajax 学习笔记总结 #### Struts 部分 **Struts** 是 Java 开源框架中最早出现且最具影响力的框架之一,它出自 Apache 组织,是 Java Web 应用开发的标准之一。Struts 以 MVC(Model...
《传智播客2016版hibernate+struts2+Spring框架学习资源详解》 在IT行业中,框架的使用是开发高效、稳定应用的关键。本资源包聚焦于三大主流Java Web框架:Hibernate、Struts2和Spring,它们在2016年时仍然是开发者...
总之,Spring学习笔记对于理解SSH整合的全过程及其背后的设计原则非常有帮助,对于希望深入学习Java Web开发的开发者来说是一份宝贵的资源。通过实践和阅读这样的笔记,开发者可以更好地掌握这三大框架的使用,提升...
在提供的"spring+struts集成学习笔记和项目源码"中,你将有机会深入理解这些概念,通过实际操作来学习如何将Spring的优秀特性与Struts的高效处理机制结合起来,构建出高效稳定的Web应用。源码分析和实践操作是加深...
《Spring in Action》是关于Spring框架的一本权威指南,它深入浅出地介绍了Spring的核心概念和技术,对于理解和应用Spring框架有着重要的指导价值。在本文中,我们将围绕Spring框架的源码解析、工具使用以及相关学习...
学习SSH框架笔记,不仅可以掌握这三个框架的基本用法,还能深入理解Java Web开发中的设计原则和最佳实践。这份笔记内容广泛,包括各个框架的主要概念、配置、API使用、实战案例等,对于提升Java开发技能大有裨益。
Struts 是一个 MVC(Model-View-Controller)架构的 Web 框架,Spring 提供了一个全面的后端服务管理平台,而 Hibernate 则是用于对象关系映射(ORM)的框架,简化了数据库操作。下面将详细介绍这三个框架的基本概念...