• Spring MVC入门


    本文引用自:《Java EE企业级应用开发教程》

    Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。它具有如下特点:

    • 是Spring框架的一部分,可以方便地利用Spring所提供的其他功能。
    • 灵活性强,易于与其他框架集成。
    • 提供了一个前端控制器DispatcherServlet,使开发人员无须额外开发控制器对象。
    • 可自动绑定用户输入,并能正确的转换数据类型。
    • 内置常见的校验器,可以检验用户输入。如果校验不能通过,那么就会重定向到输入表单。
    • 支持国际化。可以根据用户区域显示多国语言。
    • 支持多种视图技术。它支持JSP、Velocity和FreeMarker待视图技术。
    • 使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。

    一、Spring MVC所需Jar包,通常与Spring版本保持一致,Maven的pom.xml配置如下:

            <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>5.2.17.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.17.RELEASE</version>
            </dependency>

    二、修改web.xml,配置Spring MVC的前端控制器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://java.sun.com/xml/ns/javaee"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        id="WebApp_ID" version="3.0">
        <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-config.xml</param-value>
            </init-param>
            <!-- 表示容器在启动时立即加载Servlet -->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>

    <url-pattern>元素的“/”,会将所有URL拦截,并交由DispatcherServlet处理。

    三、创建Controller类,该类需要实现Controller接口

    package com.itheima.controller;
    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 FirstController implements Controller{
        @Override
        public ModelAndView handleRequest(HttpServletRequest request,
                               HttpServletResponse response)  {
             // 创建ModelAndView对象
            ModelAndView mav = new ModelAndView();
             // 向模型对象中添加数据
            mav.addObject("msg", "这是我的第一个Spring MVC程序");
             // 设置逻辑视图名
            mav.setViewName("/WEB-INF/jsp/first.jsp");
             // 返回ModelAndView对象
            return mav;
        }
    }

    handleRequest是Controller接口的实现方法,FirstController类会调用该方法来处理请求,并返回一个包含视图名和模型的ModelAndView对象。

    四、创建Spring MVC的配置文件,配置控制器映射信息(springmvc-config.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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
        <!-- 配置处理器Handle,映射“/firstController”请求 -->
        <bean name="/firstController" 
                class="com.itheima.controller.FirstController" />
        <!-- 处理器映射器,将处理器Handle的name作为url进行查找 -->
        <bean class=
        "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
        <!-- 处理器适配器,配置对处理器中handleRequest()方法的调用-->
        <bean class=
        "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
        <!-- 视图解析器 -->
        <bean class=
        "org.springframework.web.servlet.view.InternalResourceViewResolver">
        </bean>
    </beans> 

    首先定义一个名称为"/firstController"的Bean,该Bean会将控制器类FirstController映射到/firstController请求中;然后配置处理器映射器BeanNameUrlHandlerMapping和处理器适配器SimpleControllerHandlerAdapter。BeanNameUrlHandlerMapping用于将处理器Bena中的name(即url)进行处理器查找;而SimpleControllerHandlerAdapter用于完成对FirstController处理器中handleRequest方法的调用;最后配置视图解析器,InternalResourceViewResolver,用它解析结果视图,并呈现给用户。

    五、创建视图(View)页面first.jsp,位于WEB-INFjsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
         "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>入门程序</title>
    </head>
    <body>
         ${msg}
    </body>
    </html> 

    六、启动项目,测试应用

     

    七、总结Spring MVC的工作流程

     配图参考:https://blog.csdn.net/qq_36761831/article/details/89053314

  • 相关阅读:
    C# XML 文档注释
    大数据知识学习
    现在的人,买个钢铁做的车,每天擦,每周打蜡。可对自已的身体最应该保养的“车”,却从不养护
    Asp.net项目因Session阻塞导致页面打开速度变慢
    AvoidRepeatSubmit通过Javascript避免客户端重复提交请求
    Linux下Attansic L2 网卡驱动安装
    如果知道dll文件是面向32位系统还是面向64位系统的?
    整理C# 二进制,十进制,十六进制 互转
    连接Oracle时出现“System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”错误的问题
    [转]删除hbase表region块脚本
  • 原文地址:https://www.cnblogs.com/nayitian/p/15355254.html
Copyright © 2020-2023  润新知