SSM框架---SpringMVC架构图及三大核心组件(三)

一、架构图

场景:浏览器发起一个请求,比如list.do,请求会先进入web.xml中;web.xml中配置了一个前端控制器DispatcherServlet。list.do满足过滤条件,则会进入这个前端控制器

前端控制器用来初始化springmvc容器。容器中有三大组件:处理器映射器处理器适配器视图解析器

  1. 处理器映射器HandlerMapping:用来帮助我们找到相应的Controller;
  2. 处理器适配器HandlerAdapter:用来帮助我们找到Controller里面相应的方法;返回结果ModelAndView,这里的view是一个jsp,jsp是不能直接放到浏览器进行渲染的,所以需要视图解析器。
  3. 视图解析器ViewResolver:获取结果ModelAndView,渲染成静态页面html。

三大组件是默认配置的,不需要我们手动配置。在源码spring-webmvc-4.2.4.RELEASE-sources.jar中的DispatcherServlet.properties文件中可以看到,当然我们也可以在springmvc.xml中覆盖配置。

注意:还可以在处理器映射器中设置拦截器:HandlerInterceptor 拦截器(图一3、图二4)。在处理器映射中通过配置拦截器(包括处理器执行前、执行后、执行后进行拦截)将使功能更强大。

二、细说dispatcherServlet的三大核心组件

1、处理器映射器HandlerMapping

在源码spring-webmvc-4.2.4.RELEASE-sources.jar中的DispatcherServlet.properties可以看到:对于HandlerMapping的配置支持两种方式。

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
	org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
  1. org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping(传统开发方式,现在没人用了)
  2. org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping(看源码会发现是过时的注解开发方式,偶尔有人会使用)
  3. org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping(最新版本的注解开发方式,推荐)

传统开发方式的配置:<bean name="/list.do" class="com.ly.springmvc.controller.ItemsController"></bean>---废弃

注解开发方式的配置:包扫描: <context:component-scan base-package="com.ly.springmvc.controller"></context:component-scan>

最新注解开发方式的配置:<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>---太难记了,用注解驱动替代,废弃

以下是对应得部分源码: 

2、处理器适配器HandlerAdapter

在源码spring-webmvc-4.2.4.RELEASE-sources.jar中的DispatcherServlet.properties可以看到:对于HandlerAdapter的配置支持三种方式。

org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
	org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
  1. org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter(没人用)
  2. org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter(传统开发方式,可以使用,正式生产不会用)

SimpleControllerHandlerAdapter.java调用handleRequest(...)方法,对于我们写的第一个传统方式的ItemsController.java类

  • 3. org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter(看源码会发现是:过时的注解开发方式,偶尔有人还在用)

  • 4. org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter(最新版本的注解开发方式,推荐)

最新注解开发方式的配置:<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>---太难记了,用注解驱动替代,废弃

3、注解驱动<mvc:annotation-driven/>

由于<!--  配置注解开发方式最新版本的处理器映射器   -->
       <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
       <!--  配置注解开发方式最新版本的处理器适配器-->
       <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>这两行太难记了,所以产生了注解驱动。

  ======快捷键ctrl+shift+t查找源码。======AnnotationDrivenBeanDefinitionParser.java加载了RequestMappingHandlerMapping.java和RequestMappingHandlerAdapter.java类,所以你就知道为什么这一这句话就能替代上面两句进行优化了。

4、视图解析器ViewResolver

在源码spring-webmvc-4.2.4.RELEASE-sources.jar中的DispatcherServlet.properties可以看到:对于ViewResolver的配置。

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

找到对应的InternalResourceViewResolver.java,继承自父类UrlBasedViewResolver.java,参数prefix和suffix可以对程序进行优化。

 

视图解析器前缀和后缀的配置:同时删掉xxxController对跳转页面路径及文件修饰符。即:将modelAndView.setViewName("WEB-INF/jsp/itemList.jsp") --> modelAndView.setViewName("itemList");

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/jsp/" />
	<property name="suffix" value=".jsp" />
</bean>

配置视图解析器后,测试结果如下:添加修改了list.do,list2.do保持原样======结果,list.do可以访问,list2.do显示404,url重复了

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统分析与设计是软件开发过程中非常重要的一步,它包括需求分析、系统设计、模块设计、数据库设计等环节。下面我将为您介绍基于ssm框架的图书推荐管理系统的系统分析与设计流程。 1. 需求分析 需求分析是软件开发的第一步,它旨在明确用户的需求和期望,为后续的开发工作提供依据。在需求分析阶段,我们需要采集和分析用户需求,编写需求文档,明确系统功能和性能要求等。 对于图书推荐管理系统而言,需要明确以下几点需求: - 用户登录注册:用户可以通过注册账号或使用已有账号登录系统。 - 图书管理:管理员可以添加、删除、修改图书信息,包括书名、作者、价格、出版社等。 - 推荐功能:系统可以根据用户的浏览记录和购买记录,对用户进行个性化推荐。 - 订单管理:用户可以查看自己的订单信息,管理员可以对订单进行管理和统计。 - 数据统计:管理员可以通过系统生成的数据分析报告了解系统的使用情况和瓶颈问题。 2. 系统设计 在需求分析的基础上,我们需要进行系统设计,包括系统架构、模块划分、数据流程设计等。 对于基于ssm框架的图书推荐管理系统,可以采用以下设计方案: - 系统架构:采用B/S架构,前端采用HTML、CSS、JavaScript,后端采用Spring、SpringMVC、MyBatis框架。 - 模块划分:将系统划分为用户模块、图书管理模块、推荐模块、订单管理模块、数据统计模块等。 - 数据流程设计:用户登录后,可以查看推荐图书,浏览图书详情,将图书加入购物车并结算。管理员可以查看并管理图书信息和订单信息,生成数据统计报告。 3. 模块设计 在系统设计的基础上,进一步进行模块设计,确定每个模块的功能和具体实现方式。 以图书管理模块为例,需要实现以下功能: - 图书添加:管理员可以添加图书信息,包括书名、作者、价格、出版社等。 - 图书删除:管理员可以删除图书信息。 - 图书修改:管理员可以修改图书信息。 - 图书查询:管理员可以根据关键字查询图书信息。 4. 数据库设计 数据库设计是系统开发过程中极为重要的一环,它直接关系到系统的性能和稳定性。在数据库设计阶段,需要确定数据库结构、表结构、字段类型、索引等。 对于图书推荐管理系统,需要设计以下几张表: - 用户表:包括用户ID、用户名、密码等字段。 - 图书表:包括图书ID、书名、作者、价格、出版社等字段。 - 购物车表:包括购物车ID、用户ID、图书ID等字段。 - 订单表:包括订单ID、用户ID、图书ID、订单状态等字段。 以上是基于ssm框架的图书推荐管理系统的系统分析与设计流程,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值