zoukankan      html  css  js  c++  java
  • 创建一个简单的SpringMVC框架

      昨天写了一个单个Mybatis框架的小例子,今天来写一个SpringMVC框架的小例子。来复习一下框架的一些知识。主要是理解框架的执行流程。下面就直接开始吧。

      SpringMVC框架是现在比较流行的MVC框架,类似于Struts2,它的好处有很多,最重要的大概就是它是Spring的衍生产品,属于SpringFrameWork的后续产品,所以不需要特别的jar包,直接就可以和Spring整合,另外SpringMVC框架的设计思想是:控制器是基于方法的拦截,不是Struts2基于实例的拦截,所以SpringMVC对于服务器的内存的消耗要小于Struts2。剩下的优点我可能不太了解,欢迎大家补充。

      实现SpringMVC的小例子比较简单,和前面Mybatis的例子一样,也需要几个步骤。

      1.导入jar包,因为SpringMVC是SpringFrameWork的后续产品,所以需要的jar包和Spring没有什么区别,下面就举出本次小例子需要的jar包。

      2.编写Controller类。Controller类相当于Struts2中的Action,只不过Action是实例拦截用户请求的,Controller是方法拦截用户请求的。因为SpringMVC配置文件比较少,只有一个核心配置文件,所以大部分的配置都是需要注解来完成的。代码如下:

    package com.psq.springmvctrain.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class HelloWorld {
    	/**
    	 * hello方法
    	 */
    	@RequestMapping("hello")
    	public ModelAndView hello() {
    		
    		System.out.println("hello world");
    		
    		//模型视图,springMVC自带的
    		ModelAndView mav = new ModelAndView();
    		
    		//设置的模型数据,用于传递到jsp页面
    		mav.addObject("msg", "hello springmvc...");
    		
    		//设置打开的视图名字
    		mav.setViewName("/WEB-INF/jsp/hello.jsp");
    		
    		return mav;
    	}
    }
    

       3.配置SpringMVC核心配置文件springmvc.xml。这个文件主要是配置SpringMVC中的bean对象,还有就是配置映射器,适配器,视图解析器(SpringMVC三大组件)。一些细节的问题代码中都有注释,都有详细的介绍。代码如下:

    <?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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
        
        <!-- 配置@Controller处理器,包扫描器 -->
        <context:component-scan base-package="com.psq.springmvctrain.controller" />
        
        <!-- springmvc三大组件,处理器映射器,处理器适配器,视图解析器 -->
        <!--
                         映射器与适配器必需配套使用,如果映射器使用了推荐的RequestMappingHandlerMapping,
                        适配器也必需使用推荐的RequestMappingHandlerAdapter。 
         -->
        <!-- 配置处理器映射器 -->
        <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> -->
        
        <!-- 配置处理器适配器 -->
        <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->
        
        <!-- 注解驱动配置,代替映射器与适配器的单独配置,同时支持json响应(推荐使用) -->
        <mvc:annotation-driven />
        
        <!-- 配置视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
            <!-- 配置视图响应的前缀 -->
            <property name="prefix" value = "/WEB-INF/jsp/" />
            <!-- 配置视图响应的后缀 -->
            <property name="suffix" value = ".jsp" />
        
        </bean>
    </beans>
    

       4.编写jsp页面,提供测试。这个页面写什么无所谓,主要就是 测试使用,hello world即可。没有什么难度。要注意的就是jsp文件夹的位置要在WEB-INF目录下,可以防止用户的直接访问。

      5.配置前端控制器,在web.xml中配置和SpringMVC相关的一些配置,没有什么要讲的点,主要代码如下:

      <!-- 配置前端控制器 -->
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 加载springmvc核心配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
      </servlet>
      <!-- 配置拦截路径 -->
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
      </servlet-mapping>
    

       6.测试。测试就是最后一步了,要注意在web.xml中配置了拦截的路径,所以在访问的时候要注意请求的地址是以.action为结束的。

      编写的是一个小例子,甚至没有连接数据库,这里也不再讲和Mybatis的整合,大概在复习完Spring后,我会整合三个框架。我还是认为,最主要的学习是学习框架的思想和框架的具体流程,使用框架只是一个入门。剩下的就没有什么了。下面就说一说SpringMVC框架的具体流程。

      用户请求一个地址,首先web.xml会先拿到地址,首先进行判断,找到处理这个请求的servlet,在加载SpringMVC的核心配置文件。在核心配置文件中会加载所有的Controller类,因为springmvc.xml中声明了包扫描器,会扫描所有的Controller类,在去对应的Controller类中找到和用户请求相同的方法。处理请求后,在返回视图。代码执行的流程图如下所示:

      

      以上就是代码的执行流程图,但是单看这个还是很难理解SpringMVC的执行流程,下面就在说说SpringMVC的架构。

      SpringMVC中最重要的就是三大组件。处理器映射器,处理器适配器,视图解析器。三大组件的先后顺序也是这样,用户请求先交给前端控制器,在调用处理器映射器,返回处理执行链。在调用处理器适配器,适配器决定由那个处理器处理,处理完成后返回一个模型和视图,在交给视图解析器决定返回的视图。最后视图解析器返回给前端控制器,前端控制器在响应用户。最后完成。具体的结构图如下:

      上面的两个图不是我的,如果有问题,联系我,我删除。

      上面就是SpringMVC的一些具体流程,现在可以完成和理解本次的简单的例子了,但是对于开发还是远远不够,还是有很多问题,这里也不再叙述,因为本博客只是理解SpringMVC的思想和流程。但是还是列出具体的问题,防止自己忘记。

      首先是:在实际的开发中,Controller中会有一些参数要传进去,如何传参是个问题,SpringMVC支持request和response传参,但是很麻烦,所以可以直接传pojo类,基本类型,包装的pojo类。具体的传参还是要看个人的开发。

      其次是:映射器和适配器必须要配套使用,还有就是我的代码本来使用映射器和适配器是过时的,所以进行了修改,具体的修改有些麻烦,不再叙述。提个醒,自己没有忘就可以了。

      在其次就是:SpringMVC和Mybatis的整合问题,其实可以直接三个框架整合,因为SpringMVC是和Spring无缝整合的,所以后面会在写一个博客直接整合三个框架。

      最后就是:个人认为Spring-Boot和Maven虽然在一定程度上方便了开发,但是这些工具也在一定程度上提高了入门的门槛,工具的使用看自己的理解,菜鸟像我还是先慢慢写,最后理解了在使用这些工具会更好。这是个人的理解,勿喷。

      结束。

  • 相关阅读:
    Bootstrap下拉菜单的使用(附源码文件)--Bootstrap
    滚动条实现RGB颜色的调制(窗体程序)--JAVA基础
    登录对话框(窗体程序)--JAVA基础
    Bootstrap表格样式(附源码文件)--Bootstrap
    Block 循环引用(中)
    Block 循环引用(上)
    依赖注入
    类型转化
    Block 实践
    动态创建 Plist 文件
  • 原文地址:https://www.cnblogs.com/yanyu01/p/9384329.html
Copyright © 2011-2022 走看看