SpringMVC——入门编程

一、了解SpringMVC
1 . 什么是SpringMVC: Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。它与Struts2框架一样,都属于MVC框架,但其使用和性能等方面比Struts2更加优异。
2 . SpringMVC的优点:
* 是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。
* 灵活性强,易于与其他框架集成。
* 提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。
* 可自动绑定用户输入,并能正确的转换数据类型。
* 内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单。
* 支持国际化。可以根据用户区域显示多国语言。
* 支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。
* 使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。
二、 SpringMVC编程实例:
1 . 加入MVC的jar包

compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.14.RELEASE'

2 . 配置前端控制器 web.xml
生成web.xml的时候要注意步骤:Project Structure—>Facets—>web Gradle—>点加号设置web.xml的路径—>
将webapp\WEB-INF\web.xml复制下来,再选择你项目的正确路径,将刚才复制下来的粘贴在路径后面,确定添加后就能正确生成web.xml了。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!--setvlet配置,web容器-->
    <servlet>
        <servlet-name>springMvcDisptch</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--带动MVC容器工作-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:config/springmvc.xml</param-value>
        </init-param>
        <!--马上启动这个容器-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--servlet mapping(映射)配置,拦截器-->
    <servlet-mapping>
        <servlet-name>springMvcDisptch</servlet-name>
        <!--对所有请求进行处理-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3 . 创建控制器配置文件 springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd ">
    <!--mvc的扫描包,识别@Controller,生成bean-->

    <context:component-scan base-package="com.edusoft"></context:component-scan>
    <!--注解驱动配置-->
    <mvc:default-servlet-handler/>
    <mvc:annotation-driven></mvc:annotation-driven>

    <!--视图解析器配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/views/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"> </property>
    </bean>
</beans>

4 . 在类中用注解创建控制器类 CategoryController.java

package com.edusoft.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//用@Controller注解将普通类定义为控制器类
@Controller
//定义映射
@RequestMapping("/api/category")
public class CategoryController {
    @RequestMapping("/add")
    public String add(){
        //返回的视图
        return "/api/category/add";
    }
    @RequestMapping("/update")
    public String update(){
        return "/api/category/update";
    }
    @RequestMapping("/findOneById")
    public String findOneById(){
        return "/api/category/findOneById";
    }
    @RequestMapping("/findOneByProp")
    public String findOneByProp(){
        return "/api/category/findOneByProp";
    }
}

5 . 在相应的地方创建视图.jsp文件
6 . 启动TomCat,在网页中输入请求路径

三、 SpringMVC的工作流程
这里写图片描述
1 . 用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截。
2 . DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器。
3 . 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成),并返回给DispatcherServlet。
4 . DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)。
5 . HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器。
6 . Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名。
7 . HandlerAdapter将ModelAndView对象返回给DispatcherServlet。
8 . DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器)。
9 . ViewReslover解析后,会向DispatcherServlet中返回具体的View(视图)。
10 . DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。
11 . 视图渲染结果会返回给客户端浏览器显示。

猜你喜欢

转载自blog.csdn.net/wu_lie_xin/article/details/81663395