[SpringMVC-初始] 初始SpringMVC

关于SpringMVC的简介

A.SpringMVC概述

  作用:

    SpringMVC框架是SpringFramWork中实现了MVC架构模式的轻量级子框架

    用于将WEB层进行职责解耦,松散的耦合可插拔组件结构,
    比其他的MVC框架有更强的扩展性和灵活性

  优点:
    简介的MVC设计
    与Spring框架的无缝集合
    灵活的URL映射
    丰富的视图(字符串,对象,转发,重定向,json,xml,图片...)支持

B.新建一个SpringMVC项目

    

HelloController.java

package com.stu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 文件名称: com.stu.controller.HelloController.java<br/>
 * 初始作者: Administrator<br/>
 * 创建日期: 2018-2-5<br/>
 * 功能说明: 新建一个Controller控制器 <br/>
 * =================================================<br/>
 * 修改记录:<br/>
 * 修改作者 日期 修改内容<br/>
 * ================================================<br/>
 * Copyright (c) 2010-2011 .All rights reserved.<br/>
 */
// @Controller注解:使得一个普通的POJO(Plain Old Java Object,没有实现过任何接口或继承过任何类的Java对象)类成为一个控制器。
@Controller
// @RequestMapping注解:用来指定请求的映射路径,可以加在类前面,也可以加在方法前面
// 例如在类前面加上@RequestMapping("/hello") 表示通过/hello能够访问到HelloController这个类
// 对于不同的Controller类,类前面的@RequestMapping对应的映射路径不要重复!
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping("/demoForHello")
    // 说明该方法的访问路径是/hello/demoForHello
    // 即在hello注解中的demoForHello注解的方法
    public String helloPage() {
        //返回的为视图名,前缀+返回值+后缀名=最后 跳转/转发 路径
        return "Hello";
    }
}

通过浏览器地址栏访问容器地址:http://127.0.0.1:7070/SpringMVCDemo/hello/demoForHello  则会根据返回的 “Hello" 匹配相应的界面。

前缀和后缀在SpringMVC-servlet.xml中配置

    <!--
        注解扫描器 ,base-package用于指定要扫描的包的路径
        当前配置用来扫描com.niit.controller包及其子包下所有的类,所有含@Controller注解的类就会成为一个控制器类(就有了处理请求和返回响应的能力)
        另外被@Controller注解标记的类也会成为Spring IOC 容器中被管理的一个对象
    -->
    <context:component-scan base-package="com.stu.controller"></context:component-scan>

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


    <!-- 不拦截静态资源 -->
    <mvc:annotation-driven></mvc:annotation-driven>
    <mvc:default-servlet-handler />

编辑一个 Hello.jsp 文件,文件名和方法返回值大小写一致。

并且在web.xml中添加如下配置信息

<!-- SpringMVC的中央控制器 -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 
               也可以通过修改Servlet的初始化参数来指定要加载的SpringMVC配置文件所在的路径
            -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/springMVC-servlet.xml</param-value>
            <!-- 从类路径加载 -->
            <!--<param-value>classpath:applicationContext.xml</param-value>-->
        </init-param>
        <!--页面加载时开始加载-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--
            /* 拦截的是所有的路径,如果直接访问jsp,那么不可能存在以/***/***.jsp为路径的控制器 如果访问/hello/hello01
            那么在转发过程中依然跳转到.jsp路径,和前面的场景一样是错误的
        -->
        <!--
            / 只会拦截路径型请求,例如 /hello/hello01 不会拦截后缀型请求,例如jsp
            但是会拦截纯静态资源,例如css、js、图片之类 如果要纯静态资源能够被正常加载,那么需要在Spring配置文件中加上:
            <mvc:annotation-driven/> <mvc:default-servlet-handler/>
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

添加到Tomcat容器中,用浏览器进行访问结果如下

    

原文地址:https://www.cnblogs.com/x-you/p/8419357.html