SpringMVC框架入门看这一篇就够了

Spring MVC体系结构与处理请求控制器

一、基本认识
我们常说的SSM项目,第一个“S”,就是我今天要给大家说的SpringMVC,第二个“S”是什么呢?是Spring,最后一个“M”就是Mybatis持久层框架,它封装了JDBC操作,让我们在对数据库进行操作的时候可以更加便捷。
SpringMVC它主要是来干嘛的呢?就像我上文说到的,Mybatis把JDBC封装了,那SpringMVC又做了什么呢?核心就是IOC,控制反转,对所有的对象,比如说Service层,对象的控制交给了Spring,还有一些关于事务的管理,AOP切面编程,公共的一些代码也可以交由Spring来管理。
Mybatis替代了JDBC,封装了连接数据库等的细节,那SpringMVC它替代了什么呢?他实现了IOC和AOP对对象的控制,其实它代替可以理解为是替代了Servlet这一层。在用MVC框架之前,用Servlet很麻烦,要继承一下Servlet,实现doget和dopost等的方法,所有请求过来都会经过doget和dopost等的方法。根据你传参数的不同来决定访问哪一个方法。实现请求的区分。但是这个方法太繁琐了。所以我们要来学习MVC来把Servlet来替换掉,因为它太繁琐了,实现一个控制层的反转。
SpringMVC框架入门看这一篇就够了_第1张图片
上图是一个MVC的架构图。
实现的是一个Controller到Model,Model就是模型,也就是Dao层,JavaBean,到View视图层,给用户看的一个页面,Jsp等等。这就是MVC,分层的一个框架。请求会经过controller(控制器)-》调Service层-》调Dao层,最后Controller来决定调一个Jsp或一个Html页面来返回给用户看。
二、基本使用
SpringMVC如何搭建?也非常简单
1.下载jar文件并导入工程(jar包)
-spring-web-3.2.13.RELEASE.jar
-spring-webmvc-3.2.13.RELEASE.jar
2.配置文件(配置xml文件)
-在web.xml中配置Servlet
-创建Spring MVC的配置文件
3.创建Controller处理请求的控制器(java的程序调用)
搭建:
第一步:创建一个web的项目,一定要勾选web!下面是流程图:
SpringMVC框架入门看这一篇就够了_第2张图片
给项目起名字,以及目录放置就不赘述了
这是创建完成的样子,这里用的IDE是IDEA;
SpringMVC框架入门看这一篇就够了_第3张图片
一定要有一个带蓝点的web文件夹以及下面的WEB-INF和web.xml的文件,才是一个web工程,当然也有创建失败的情况,也就是web文件夹不带小蓝点,这个在IDEA中怎么处理我们以后再讲。因为这里一定要有web组件。它是一个web项目。为了真正的让大家理解,这里我们不用MAVEN来管理jar包,采用直接添加jar包的方式来讲解。
引jar包,我们要在WEB-INF下创建一个lib文件夹,用来存放jar包;
创建jar包文件夹
好了,存放jar包的地方创建完成之后,我们就可以去仓库找一下对应的jar包添加了。
SpringMVC框架入门看这一篇就够了_第4张图片
上图是给工程添加好jar包的样子,把jar包放进lib文件夹后一定要记得全部选中你要添加的jar包然后add as libary,这样jar包才会生效。
ok,这样第一步给工程引jar包就完成了
第二步:配置xml文件
1.配置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_4_0.xsd"
         version="4.0">
    <display-name></display-name>
    <!--SpringMVC-Servlet配置-->
    <servlet>
        <servlet-name>springmvc</servlet-name><!--首先是起个名字,这里我叫springmvc,叫什么无所谓-->
    <!--这里是用mvc框架与Servlet最大的不同,以前用Servlet的时候,起完名字要给一个class,也就是这个变量名到底是哪个类
    即是自己写的一个Servlet,但是这里不同了,这里用的是框架,也就是SpringMVC写的Servlet:把包名.类名直接带进来就ok
    "org.springframework.web.servlet.DispatcherServlet"-->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置找springmvc的配置文件路径,不配置的话,他默认会去WEB-INF的目录下找-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <!--以前指向的是自己写的Servlet,现在指向的是SpringMVC的Servlet-->

    <!--声明完Servlet之后,紧接着就要声明一下哪一些映射能过去,也就是路径,这里配/user-->
    <!--这个是什么意思呢?这个就是如果请求到这个项目,如果请求的路径中包含/user就会去找springmvc,找到它就会去找servlet-name
    的springmvc,找到它的话,就找到了servlet-class中我们配置的SpringMVC的Servlet,找到"org.springframework.web.servlet.DispatcherServlet"
    请求就进去了,只不过这个Servlet不是我们自己写的,而是框架中带的-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/user/*
    

    
        index.jsp
    

ok,配置web.xml文件的详细内容和讲解我都放在注释中去讲解了,下面我们还需要配一个文件,springmvc.xml;

首先新建一个名字为resources的文件夹,将他标记为资源文件夹,怎么标记呢?创建完文件夹之后,右键Mark Directory as,将这个文件夹标记为资源文件夹:
SpringMVC框架入门看这一篇就够了_第5张图片
可能有人想问,xml不是配好了吗?这里要注意,web.xml中配置的只是,请求来了以后要去找Servlet,去找SpringMVC的DispatcherServlet。
springmvc.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: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">
<!--请求到了SpringMVC的Servlet之后,我们这里要接受请求之后对请求做一个处理-->
 <!--既然我们这里用了框架,就要将Controller控制器交给Spring去管理,怎么就交给Spring去管理了呢?
 存到Spring容器里就好了嘛,所以下面我们要加这么一个东西:-->
    <!--扫描controller包,既然交给Spring管理就要让Spring去扫描,发现这些控制器-->
    <context:component-scan base-package="com.csdn.controller"/>

    <!--做完上面的事情之后,就要开启MVC注解,这里不开注解会很麻烦,开了之后只需要去扫描你加的注解就可以做很多事情-->
    <mvc:annotation-driven/>

    <!--视图解析器,这个是用来干嘛的呢?为了把所有的控制器交给Spring去管理,简单来讲,就是controller控制器
    一会儿会返回一个字符串,这个字符串会解析为一个路径来给到前端-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--给controller控制器加一个前缀加一个后缀,就会定位到一个详细的路径中去了,定位到了一个详细的页面路径
        不就给到前端去了吗?-->
        <!--前缀:在方法返回的字符串前面拼接上-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀:在方法返回的字符串后面拼接上-->
        <property name="suffix" value=".jsp"/>

    </bean>

</beans>

下面就可以写代码了(一个小栗子):
先写一个controller(UserController)下面是代码和详解:

package com.csdn.controller;

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

//首先加一个注解@Controller,将这个对象new出来,将当前的类实例化,并存入Spring容器,
// 标记为他是一个控制器,这就是为什么我们要在web.xml中配置扫描controller包的意义
@Controller
public class UserController {
    //这个注解意思是如果访问到了这个项目,进入了我的Servlet,带一个/user就进来了,
    //然后就去@RequestMapping上去找,去匹配,如果跟这个路径匹配到了,就会进去这个对应的方法
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("走这个方法了吗?");
        return "helloWorld";
        //ok,它返回一个字符串,那还记得我们在web.xml中配置什么了吗?对,前缀和后缀
        //返回一个字符串之后,他会变成什么样子呢?会变成下面这个样子:
        //WEB-INF/jsp/helloWorld.jsp  也就是说他会去找这个地址,把这个文件响应给用户
        //那我们就去对应路径下创建一个helloWorld.jsp,让他能访问到
    }
}

去对应的路径下创建helloWorld.jsp
SpringMVC框架入门看这一篇就够了_第6张图片
ok,将项目部署到tomcat中的过程我就不赘述了,下面跑起来看一下效果
SpringMVC框架入门看这一篇就够了_第7张图片
效果很完美,再来看一下控制台:
控制台打印效果
效果一样很完美。
OK这就是SpringMVC的入门配置与使用,后续的高阶讲解慢慢我会写给大家。

你可能感兴趣的:(框架)