`
wutao8818
  • 浏览: 616451 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

重头开始学 Spring JPetStore 4

阅读更多
跟踪一个  .do 请求吧

就它了。 Enter the Store      http://localhost:8080/jpetstore/shop/index.do

org.springframework.web.servlet.DispatcherServlet 动用了强大的handlerMapping 。

当然这个接口有很多实现。

引用


AbstractDetectingUrlHandlerMapping, AbstractHandlerMapping, AbstractPathMapHandlerMapping, AbstractUrlHandlerMapping, BeanNameUrlHandlerMapping, CommonsPathMapHandlerMapping, ControllerClassNameHandlerMapping, DefaultAnnotationHandlerMapping, SimpleUrlHandlerMapping




看看petstore-servlet.xml 用了哪个? 这里使用了org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping这个实现
,说白了其实它特单纯。也就是 /shop/index.do 这段作为对应处理Controller bean的那么属性。找找吧。是不是有个  name="/shop/index.do" bean

引用
<bean name="/shop/index.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="index"/>
</bean>
 

对了,就是这个bean了。找到了吗。这个请求就被分发到了org.springframework.web.servlet.mvc.ParameterizableViewController 这个Controller也是个很单纯的控制器了。直接就转向一个viewName属性指定的index.jsp页面了。当然省略了一个过程。index怎么就到了index.jsp呢?

这个问题的答案在这里

引用
org.springframework.web.servlet.view.InternalResourceViewResolver



一个ViewResolver的实现。还有其他几个实现。

引用


AbstractCachingViewResolver, AbstractTemplateViewResolver, BeanNameViewResolver, FreeMarkerViewResolver, InternalResourceViewResolver, JasperReportsViewResolver, ResourceBundleViewResolver, UrlBasedViewResolver, VelocityLayoutViewResolver, VelocityViewResolver, XmlViewResolver, XsltViewResolver




它悄悄的做了手脚。

引用
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/spring/"/>
<property name="suffix" value=".jsp"/>
</bean>


首先到 /WEB-INF/jsp/spring/ 里找 后缀..jsp 这就成了  /WEB-INF/jsp/spring/index.jsp了。完了,放松一下吧。一个请求到此已经结束了。是不是太快了。。。。


spring mvc 这部机器 说白了其实很简单,DispatcherServlet 把 HandlerMapping Controller ViewResolver 3个组件 组装在一起就完成了整个处理过程。

想起来就像人吃饭一样。把饭放入嘴巴,经过喉咙,然后到胃里,处理一下,再接着往下传,到肠子 最后把处理的结果 排泄出来。呵呵,恶心一把  
当然还吸收了一些,这就类似存了一些数据到数据库。说白了还真这么回事。

还以2个小细节,看到有部分的请求由另外一个HandlerMapping实现了。
引用
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping


为什么他要第二个?看这个bean的id应该就能明白几分了。secureHandlerMapping,这些请求需要经过一个安全验证。这个安全验证通过 signonInterceptor 这个interceptors 插件插入到了 HandlerMapping 中。

引用

<bean id="signonInterceptor" class="org.springframework.samples.jpetstore.web.spring.SignonInterceptor"/>


关于这个插入的组件有很多文章提到它。也就是一个类似AOP或者filter的作用吧。看到一篇文章上提到 一点就是 interceptors比aop少了一个方式就是round环绕模式的实现。也就是无法把一个 前部分处理的变量  舒服的传递到 后部。

另外安全控制 如果在一个大一点的项目里,现在可以用 spring 另外一个独立的模块 ACEGI  Spring security 来做。

再一次可以看出来spring 真的是三头六臂的感觉,满身都是插口。到处都能安装插件。和变形金刚差不多了。

分享到:
评论

相关推荐

    学习Spring 的例子JpetStore

    《Spring框架学习:以JpetStore为例》 Spring框架是Java企业级应用开发中的核心框架,它为开发者提供了丰富的功能,简化了开发流程,提高了代码的可测试性和可维护性。JpetStore作为Spring的经典示例项目,是学习...

    spring例子: jpetstore

    标题 "spring例子: jpetstore" 提到的是一个基于Spring框架的应用示例——JPetStore。这个项目是Spring官方提供的一个经典示例,用于展示如何使用Spring框架来构建Web应用程序。它是一个小型的在线宠物商店,包含了...

    spring jpetstore spring附带的例子

    《Spring JPetStore:Spring框架的经典示例》 Spring框架是Java开发中广泛使用的轻量级框架,以其灵活、高效和模块化的特性深受开发者喜爱。其中,JPetStore项目是Spring官方提供的一个经典示例,它展示了Spring的...

    spring jpetstore2.5

    4. **配置Web.xml**:这是Spring应用的入口点,需要正确配置Spring的DispatcherServlet、ContextLoaderListener等组件,以及相应的bean定义文件路径。 5. **配置数据库连接**:根据实际环境修改JPetStore的数据库...

    Spring jpetstore

    **Spring jpetstore** 是一个基于Spring框架的开源示例应用,它展示了如何使用Spring MVC、Spring JDBC以及Spring的其他核心特性来构建一个完整的Web应用。这个项目是Spring官方提供的,旨在帮助开发者学习和理解...

    jpetstore4.0 (spring+struts+ibatis)

    4. **数据访问集成**:Spring与iBatis结合,提供了对数据库操作的支持,简化了数据访问代码。 **Struts框架** Struts是基于MVC设计模式的Web应用框架,它为开发者提供了处理HTTP请求和响应、展示视图、以及控制应用...

    jpetstore spring 的经典完整可直接运行的例子 jpetstore

    《基于jpetstore的Spring、iBatis与Struts整合实战》 jpetstore项目是Spring框架的一个经典示例,它全面展示了如何将Spring、iBatis和Struts这三个核心的Java Web技术进行集成,构建出一个完整的MVC(Model-View-...

    MyEclipse中加载Spring的JPetStore

    《MyEclipse中加载Spring的JPetStore详解》 在软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java企业级应用开发的事实标准。而MyEclipse作为一款强大的Java集成开发环境,为开发者提供了便捷的Spring...

    spring之jpetstore

    《Spring之JPetStore:深度解析与实践指南》 在Java世界中,Spring框架以其强大的功能和灵活性,已经成为企业级应用开发的首选。而JPetStore作为Spring框架的经典示例项目,是学习和理解Spring核心特性的绝佳起点。...

    spring的jpetstore工程(myeclipse)

    《Spring的JPetStore工程与MyEclipse集成详解》 Spring框架是Java开发中的核心组件,它提供了丰富的功能,如依赖注入(DI)、面向切面编程(AOP)、数据访问和事务管理等。JPetStore作为Spring官方提供的一个示例...

    Spring+jpetstore+Myeclipse

    最新spring带的JPetStore的MyEclipse项目,包括了数据库,可用hsqldb直接运行,可以直接导入MyEclipse中并部署运行。 在Myeclipse里新建一个web项目,导入shopping项目即可,数据库在db文件夹里

    eclipse_spring_jpetstore.rar

    《Eclipse环境下的Spring框架——以JPetStore项目为例》 在Java开发领域,Eclipse作为一款强大的集成开发环境(IDE)被广泛使用,而Spring框架则是企业级应用开发的重要选择。本文将深入探讨如何在Eclipse环境中...

    Spring源码学习-JPetStore.part3

    spring自带的JPetStore,我已经配置好(数据库也配置好,用的是hsqldb),可以直接导 入eclipse中运行。共3个压缩包

    JPetStore (Struts + Spring + Hibernate)版

    **标题解析:** "JPetStore (Struts + Spring + Hibernate)版" 是一个基于Java技术的开源电子商务示例应用,它集成了Struts、Spring和Hibernate三个关键的开源框架。这个版本相较于之前的JPetStore5.0,进行了重要的...

    Struts+Spring+Hibernate实现的jpetstore

    在 jpetstore 中,Spring 作为整个应用的“胶水”,管理各个组件的生命周期和依赖关系。它可能通过XML配置或注解驱动的方式来定义bean,这些bean可以是DAO(数据访问对象)、Service、Controller等。Spring还提供了...

    jpetstore开源学习代码

    《jpetstore开源学习代码》是一个深受开发者欢迎的学习资源,特别针对那些希望深入理解J2EE(Java 2 Platform, Enterprise Edition)技术的初学者和有经验的程序员。jpetstore项目是一个示例应用,它展示了如何在...

    jpetstore

    该jpetstore经典案例为最新SPRING开发包里面的完全案例,并集成到eclipse里面了,在eclipse里面可以直接运行并调试,在工作目录里面直接建立jpetstore目录,自动导入该目录下文件,修改jdbc.properties配置文件,连接...

    用jpetstore学习架构 使用Spring boot+MyBatis +MySQL.zip

    【标题】"用jpetstore学习架构 使用Spring boot+MyBatis +MySQL"是一个实践项目,旨在帮助开发者通过实现一个具体的电商应用——jpetstore,掌握基于Spring Boot、MyBatis和MySQL数据库的架构设计与开发技能。...

    jpetstore系统架构图

    尽管jpetstore5.0系统架构图未明确提及Spring框架,但Spring在企业级应用开发中起着举足轻重的作用。它提供的依赖注入(DI)和面向切面编程(AOP)功能,极大地提升了代码的灵活性和可维护性。在实际应用中,Spring...

Global site tag (gtag.js) - Google Analytics