`

springmvc浏览

阅读更多

  web mvc的主要功能都很类似,提供一种机制把用户通过http提交的数据转换成比较容易使用的形式,顺便作一些校验。然后读取某个配置文件将这些数据传送到一个控制器上。然后获取控制器返回的数据和视图名称,再找到对应的视图把这些数据和视图合并起来发回客户端。

 

★ SpringMVC
  Spring MVC是Spring Framework中重要的模块之一。它构建在功能强大的Spring IoC容器之上,并且广泛利用了容器特性来简化其配置。
  Spring MVC的重要组成部分是DispatcherServlet。它主要负责将请求发到相应的处理程序,让它们来处理这些请求。
 DispatcherServlet实现了Java EE设计模式中的前端控制器(front controller)模式。它充当Spring MVC框架的前端控制器。

☆ Spring MVC主要请求处理流程
  当DispatcherServlet接收到请求时,它会先查找适当的处理程序来处理请求。DispatcherServlet通过一个或多个处理程序映射,将每个请求映射到处理程序中。处理程序映射配置在web应用程序上下文中,是实现了HandlerMapping接口的Bean。它负责为请求返回一个适当的处理程序。处理程序映射通常根据请求的URL将请求映射到处理程序。
 
  一旦DispatcherServlet选择了适当的处理程序,它就会调用这个处理程序来处理请求。处理程序是任意的Java程序,可以处理Web请求。Spring MVC中用来处理Web请求的最典型处理程序是控制器(controller)。控制器通常必须调用后台服务来处理请求。

  控制器处理完请求之后,会将模型和视图名称(有时候是视图对象)返回给DispatcherServlet。模型包含了控制器要专递给视图进行显示的属性。如果返回的是视图名称,它会被解析成视图对象再进行呈现。绑定模型和视图的基本类是ModelAndView。

  当DispatcherServlet接收到模型和视图名称时,它会将逻辑名称解析成视图对象再进行呈现。DispatcherServlet从一个或者多个视图解析器中解析视图。视图解析器配置在Web应用程序上下文中,是实现了ViewResolver接口的Bean。它的任务是根据逻辑视图名返回视图对象。

  一旦DispatcherServlet将视图名称解析成视图对象,它就会呈现视图对象,并传递控制器返回的模型。


☆ Spring MVC映射策略:

  在Spring MVC应用程序中,Web请求被Web应用程序上下文中声明的一个或者多个处理程序映射Bean映射到处理程序上。这些Bean必须实现HandlerMaping接口,这样DisatcherServlet才能自动侦测到它们。

Spring MVC提供了几个HandlerMapping实现。

1 按Bean名称映射请求(默认的映射方式):BeanNameUrlHandlerMapping
  必须将每个处理程序的“Bean名称”声明成URL模式的形式,它可以接受通配符。如果处理程序的Bean名称与请求的URL想匹配,DispatcherServlet就会将请求分发给这个处理程序:
  <bean name="/welcome.htm" class="com.xxx.WelcomeController" />

2 按控制器类名称映射请求:根据控制器的类名字自动生成映射,移除名称中的Controller后缀,并将其他部分全部转换成小写字母。如果想让你的URL模式遵循Java的命名约定(如生成/reservationQuery*),必须将caseSensitive属性设置为true。此外,可以在pathPrefix属性中为生成的URL模式指定一个前缀。
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

<bean class="com.xxx.WelcomeController" />
路径:
WelcomeController --->/welcome*

3 用定制的映射定义来映射请求:(SimpleUrlHandlerMapping)
  显示的指定URL模式和处理程序之间的映射定义。

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
 <property name="mappings">
  <props>
   <prop key="/welcome.htm">
   welcomeController
   </prop>
  </props>

 </property>
</bean>

4 在一个web应用程序中可以同时设置多种映射策略
注意映射优先级的设置。
  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 <property name="mappings">
  <props>
   <prop key="/index.htm">welcomeController</prop>
  </props>
 </property>
 <property name="order" value="0" />
  </bean>
  <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
 <property name="caseSensitive" value="true" />
 <property name="order" value="1" />
  </bean>
  order值越小,表示优先级越高。

☆ 使用Handler Interceptor 拦截请求:(登录、权限)

Servlet API定义的Servlet过滤器可以在Servlet处理每个Web请求的前后分别对它进行前置处理和后置处理。

Spring MVC允许你通过处理拦截(handler interceptor)拦截Web请求,进行前置处理和后置处理。

处理拦截是针对特殊的处理程序映射进行注册的,因此它只能拦截通过这些处理程序映射的请求。

每个处理拦截都必须实现HandlerInterceptor接口。

☆ 解析用户区域
  为了让Web应用程序支持国际化,必须识别每个用户的首选区域,并根据这个区域显示内容。

  在Spring MVC应用程序中,用户的区域是通过区域解析器来识别的,它必须实现LocaleResolver接口。

  要定义一个区域解析器,只需在Web应用程序上下文中注册一个LocaleResolver类型的Bean就可以了。你必须将区域解析器的Bean名称设置为localeResolver,这样DispatcherServlet才能自动侦测到它。每个DispatcherServlet只能注册一个区域解析器。

☆ 外部化区分区域的文本信息

为了避免针对不同区域而创建不同语言版本的页面,应该将区分区域的文本信息提取出来。
  Spring能通过消息源(message source)替你解析文本信息,它必须实现MessageSource接口。然后Jsp文件可以使用在Spring标签库中定义的<spring:message>标签,来解析之指定的文本信息。
 
实现方法;
  只要在Web应用程序上下文中注册一个类型为MessageSource的Bean,就可以定义一个消息源。必须将消息源的Bean名称设置为messageSource,这样DispatcherServlet才能自动侦测到它。
  每个DispactherServlet只能注册一个消息源。


★ 按名称解析视图

当处理器处理完请求时,它可能返回视图对象,也可能返回这个视图对象的逻辑名称。如果它返回的是视图名称,DispatcherServlet就必须用这个名称创建视图对象,并为用户呈现视图。

  在Spring MVC应用程序中,视图由Web应用程序上下文中声明的一个或者多个视图解析器Bean进行解析。这些Bean必须实现ViewResolver接口,这样DispatcherServlet才能自动侦测到它们。

1 根据URL解析视图
  解析视图的基本策略是直接将它们映射到URL。视图解析器InternalResourceViewResolver用添加前缀和后缀的方法,将每个视图名称都映射到一个URL上。

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

2 从XML配置文件中解析视图
  解析视图的另一种方式是将视图声明成Spring的Bean,并将它们的Bean名称进行解析。默认情况下,XmlViewResolver从/WEB-INF/view.xml里加载视图Bean,但是可以通过location属性来覆盖这个位置。
  <bean class="org.springframework.web.servlet.view.XmlViewResolver">
 <property name="location">
  <value>/WEB-INF/xxx-views.xml</value>
 </property>
  </bean>
  在xxx-views.xml配置文件中,通过设置类名称和属性,可以将每个视图声明成普通的Spring Bean。使用这种方式,可以声明任何类型的视图(如RedirectView)

  3 从Resource Bundle中解析视图
  ResourceBundleViewResolver

分享到:
评论

相关推荐

    SpringMVC留言板_.zip

    SpringMVC留言板是一个基于Java的Web应用程序,使用了SpringMVC框架来实现用户交互和数据管理。这个实验项目旨在帮助开发者了解如何在实际环境中运用SpringMVC,掌握其核心概念和工作流程。以下是对该实验项目的详细...

    springmvc.docx

    SpringMVC 是一款基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,由 Spring 框架提供。MVC 模式将应用分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在 SpringMVC 中,...

    springmvc电影推荐系统

    1. 用户接口:这部分由SpringMVC的视图层负责,如JSP或Thymeleaf模板,用户可以通过这些页面浏览电影、查看推荐、提交评价等。 2. 业务逻辑:这是SpringMVC的核心,由一系列的Controller和Service类组成。...

    SpringMVC 集成 Swagger2

    在浏览器中输入`http://your-app-url/swagger-ui.html`,即可访问Swagger UI界面,进行API的浏览和测试。 为了让API描述更丰富,我们还可以利用Swagger2的其他注解,如`@ApiParam`用于描述请求参数,`@ApiResponse`...

    mybatis+springmvc分页

    在IT行业中,分页是网页应用中不可或缺的功能,它能够帮助用户更有效地浏览大量数据,而不会一次性加载所有内容导致页面响应慢或者内存压力大。本项目以"Mybatis+SpringMVC"为技术栈,实现了Oracle数据库中的emp表的...

    基于Spring SpringMVC Hibernate的网上书城

    逻辑分页允许用户浏览大量数据时,只加载一部分,减轻服务器压力,提高页面加载速度。模糊查询则使用户能根据关键词搜索相关书籍,提供更灵活的查找方式。 页面导航是网站结构设计的关键,它帮助用户轻松地在不同...

    采用springMVC、spring、hibernate框架实现,在线预览WORD文档

    本项目采用的技术栈是SpringMVC、Spring和Hibernate,这些都是Java EE领域广泛使用的开源框架,用于构建高效、灵活且可扩展的企业级应用。 SpringMVC是Spring框架的一个模块,专门用于处理Web应用程序的请求和响应...

    Spring+SpringMVC+Mybatis开发网上书店系统

    3、查看图书信息:用户登录成功后,能够按分类或者查找浏览图书信息进行购买。 4、加入购物车:用户登陆成功后,可以把喜欢的图书添加到购物车。 5、在线购买:用户进行登录成功后,可以挑选图书,种类,数量,点击...

    WEB文件上传之SpringMVC+ajaxfileupload使用(三)

    这使得用户可以在上传文件的同时继续浏览页面的其他部分,提升了交互性。 ### 实现步骤 1. **前端设置** - 引入AJAXFileUpload库的JavaScript文件,并在HTML中创建文件输入元素和提交按钮。 - 使用JavaScript监听...

    spring+springMVC+mybatis+easyui 增删查改以及分页源码

    **无刷新分页** 技术是指用户在浏览数据时,无需点击新的页面或执行完整的HTTP请求就能实现页面内容的更新。在Web应用中,通常通过AJAX(Asynchronous JavaScript and XML)实现。EasyUI的表格组件支持AJAX加载数据...

    基于springMVC开发房屋租赁赁.zip

    项目描述 系统分为前台用户界面和后台系统管理: 1. 前台用户界面 用户注册、用户登录、用户中心、浏览房源、房源搜索 查看房源明细、发布房源、提交合同、新闻公告、...SpringMVC+mybatis+bootstrap+jQuery+JSP

    easyui分页、springmvc后台处理分页

    在IT行业中,分页是网页应用中不可或缺的功能,它能够帮助用户有效地浏览大量数据,而不会一次性加载所有信息导致页面响应变慢。本项目重点介绍了如何结合EasyUI前端框架和SpringMVC后端框架实现高效的分页处理。...

    spring + springmvc + mybatis 整合 demo 及 mybatis-paginator分页 demo

    通过Mybatis-Paginator,我们可以便捷地获取当前页的数据,并提供页码导航,使用户能够轻松浏览和查找所需信息。 总结来说,这个压缩包中的"ssm_paginator"可能包含了以下内容:Spring的配置文件、SpringMVC的配置...

    SpringMVC 用户登录、商品浏览、交易下单电商项目.rar

    慕课网公开课,SpringBoot构建电商基础秒杀项目源码复现,包含SQL、前端代码,用户登录注册、商品添加和详情列表、交易下单模块功能实现,是新人学习Springboot很好的入门课程,代码全部自己复现,亲测可用。

    基于springmvc的视频后台管理系统

    此外,可能还包括课程分类、排序和推荐功能,以方便用户浏览和搜索。 2. **主讲人管理**:主讲人是视频内容的创造者,这个模块会维护主讲人的信息,如姓名、简介、专业领域等,同时可能包括添加、修改、删除主讲人...

    SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    这样可以提供更好的用户体验,因为用户可以继续浏览页面,而文件上传则在后台进行。 在使用ajaxfileupload.js时,我们需要在HTML页面中添加相关的JavaScript代码,配置文件选择器和上传按钮,并绑定事件监听器。当...

    shop项目开发,小型项目,springmvc练手

    【SpringMVC详解】 SpringMVC是Spring框架的一...在shop项目中,开发者可以通过上述知识点来实现商品浏览、添加购物车、订单处理等功能。通过实践,不仅能深入理解SpringMVC的工作原理,还能提高Java Web开发的能力。

    easyUI-springmvc-tree-demo

    在Web开发中,前端界面的交互性和用户体验至关重要,其中树形结构(Tree)组件是一种常用的数据展示方式,它能够清晰地展示层次关系,便于用户浏览和操作。EasyUI是一款基于jQuery的轻量级UI框架,提供了丰富的组件...

    基于SpringMVC的网上书店系统(带脚本)

    页面可能包括图书搜索、分类浏览、购物车、订单管理等。 2. **控制器**:SpringMVC的DispatcherServlet负责调度请求,将请求转发给相应的处理器(Controller)。Controller处理业务逻辑,如检索图书信息、处理用户...

Global site tag (gtag.js) - Google Analytics