当前位置: 首页 > 图灵资讯 > 技术篇> SpringMVC总结

SpringMVC总结

来源:图灵教育
时间:2023-05-16 09:24:34

 

1.Spring web mvc介绍

Struts2属于表现层框架,它是Spring框架的一部分,从Spring的整体结构可以看出:

 

SpringMVC总结_xml

1.Web mvc

 

SpringMVC总结_spring_02

1、用户发起request请求(Controller)

控制接收用户请求的数据,委托模型处理

2、通过模型控制器(Model)处理数据并获得处理结果

业务逻辑模型通常是指业务逻辑

3、视图控制器将模型数据放在视图上(View)中展示

web模型不能直接在视图上显示数据,需要通过控制器完成。如果模型可以在C/S应用程序中显示视图中的数据。

4、控制器将视图response响应给用户

将数据或处理结果通过视图显示给用户。

1.Spring web mvc 架构架构图

 

SpringMVC总结_mvc_03

流程

1、用户向前端控制器Dispatcherseleter发送请求

2、dispatcherservlet收到Handlermaping处理器映射器的请求。

3、Handlermaping处理器映射器找到特定的处理器,生成处理器对象和处理器拦截器(如果有,则生成),并返回到Dispatcherservlet。

4、dispatcherservlet调用Handleradapter处理器适配器

5、HandlerAdapter适应调用特定的处理器(Controller,也叫后端控制器)。

6、Controler执行返回Modelandviewer

7、Handleradapter将controller执行结果modelandview返回Dispatcherservleteter

8、dispatcherservlet将modelandview传送到viewrslover视图解析器

9、Viewreslover分析后返回特定Viewew

10、根据View渲染Dispatcherservlet的视图(即将模型数据填充到视图中)。

11、Dispatcherservlet响应用户

组件说明:

通常使用框架实现以下组件:

DispatcherServlet:整个过程控制中心作为前端控制器,控制其他组件的执行,统一调度,减少组件之间的耦合,提高各组件的可扩展性。

HandlerMapping:不同的映射方法,如配置文件、实现接口、注释等,都是通过扩展处理器映射器实现的。

HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。

ViewResolver:通过扩展视图分析器,支持更多类型的视图分析,如:jsp、freemarker、pdf、excel等。

通常需要开发以下两个组件:

Handler:后端控制器用controller表示处理器。

View:视图,即显示给用户的界面,通常需要标签语言来显示模型数据。

1.第一个springmvc工程

第一步:建立Web项目

在eclipse下创建动态web工程springmvc_01。

第二步:导入spring3.1.4的jar包

第三步:前端控制器配置:

在WEB-INF\web.前端控制器配置在xml中

<servlet>    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:springmvc-servlet.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <url-pattern>*.action</url-pattern>  </servlet-mapping>

load-on-startup:表示servlet随服务启动;

url-pattern:*.请将action交给Dispatcherservlet处理。

contextConfigLocation:指定springmvc配置的加载位置,默认加载

载WEB-INF/[DispatcherServlet Servlet 名字]-servlet.xml。

第四步:springmvc配置文件

WEBB默认加载Springmvc-INF/[前端控制器的名称]-servlet.xml,还可以在前端控制器定义处指定加载的配置文件,如下:

<init-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:springmvc-servlet.xml</param-value></init-param>

如上代码,classpath下的springmvc通过contextconfiglocation加载-servlet.xml配置文件,配置文件名称不能限制[前端控制器名称]-servlet.xml。

第五步:配置处理器映射器

在springmvc中-servlet.xml文件配置如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd         http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.1.xsd         http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop-3.1.xsd         http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx-3.1.xsd "><!-- HandlerMapping --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

BeanNameUrlHandlerMapping:这意味着将定义的bean名称作为请求的url需要在spring容器中配置编写的controler,并指定bean的name作为请求的url,并且必须使用.action结束。

第六步:配置处理器适配器

在springmvc中-servlet.xml文件配置如下:

<!-- HandlerAdapter --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

SimpleControllerHandlerAdapter:也就是说,简单控制器处理适配器,所有org都实现了.springframework.web.servlet.mvc.Controller Bean作为Springmvc的后端控制器。

第七步:配置视图分析器

在springmvc中-servlet.xml文件配置如下:

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

InternalResourceViewResolver:支持JSP视图分析

viewClass:Jstlview表示JSP模板页面需要JSTL标签库,因此相关jarr必须包含在claspath中 包;

prefix 还有suffix:查找视图页面的前缀和后缀,最终视图地址为:

前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回modelandview指定。例如,如果逻辑视图被称为hello,则最终返回jsp视图地址 “WEB-INF/jsp/hello.jsp”

第八步:后端控制器开发

后端控制器即controller,又称action。

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;public class HelloWorldController implements Controller {  @Override  public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {    ModelAndView mv = new ModelAndView();    ///添加模型数据    mv.addObject("message", "Hello World!");    //设置逻辑视图名,最终视图地址=前缀+逻辑视图名+后缀    mv.setViewName("hello");    return mv;  }}