zoukankan      html  css  js  c++  java
  • SpringMVC总结

    1. Spring web mvc介绍

     Spring web mvcStruts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来:

     

    1. Web mvc

     

    1、 用户发起request请求至控制器(Controller)

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

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

    模型通常是指业务逻辑

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

    web中模型无法将数据直接在视图上显示,需要通过控制器完成。如果在C/S应用中模型是可以将数据在视图中展示的。

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

    通过视图展示给用户要的数据或处理结果。 

    1. Spring web mvc 架构 

    架构图

     

    流程

    1、 用户发送请求至前端控制器DispatcherServlet

    2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。

    3、 HandlerMapping处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

    4、 DispatcherServlet调用HandlerAdapter处理器适配器

    5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

    6、 Controller执行完成返回ModelAndView

    7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

    8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器

    9、 ViewReslover解析后返回具体View

    10、 DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

    11、 DispatcherServlet响应用户 

    组件说明:

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

    DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。

    HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

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

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

    下边两个组件通常情况下需要开发:

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

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

    1. 第一个springmvc工程

     一步:建立一个Web项目

     eclipse下创建动态web工程springmvc_01

     二步:导入spring3.1.4jar

     第三:前端控制器配置

     WEB-INFweb.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配置文件

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

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

    如上代码,通过contextConfigLocation加载classpath下的springmvc-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,需要将编写的controller在spring容器中进行配置,且指定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标签库,所以classpath中必须包含jstl的相关jar 包;

    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;
      }
    }
  • 相关阅读:
    充满了艰难的造题之幼儿园测试【历史考试】
    【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
    windows下nginx的安装使用及解决80端口被占用nginx不能启动的问题
    使用hMailServer搭建免费邮件服务器(亲测可用)
    $.ajax()方法详解
    详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
    $.ajax()调用.cs里的方法实现ajax操作示例
    Asp.Net URL重写的具体实现(通过URLRewriter.dll)
    数据图
    C#解析JSON字符串总结
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/6905335.html
Copyright © 2011-2022 走看看