SpringMVC-环境配置+入门实例

一、springMVC简介

1、什么是MVC

MVC是Model View Controller的简写,其中三个单词代表不同的层次结构,是一种软件工程里面的一种软件架构模式。
M:Model就是模型,里面包含了许多Javabean,其中一种是实体类bean,专门存储数据,还有一种是业务逻辑类bean,专门处理业务逻辑和数据访问的,有service对象和dao对象等。
V:View简写,视图的意思。指用户可以看到和用户交互的页面,可以向后端输入数据,就像我们的html页面。用户可以直观看到,并且通过表单可以和后端交互。
C:Controller,控制器。接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。最简单有我们的各种servlet。

2.什么是springMVC

SpringMVC就是一个Spring内置的MVC框架,spring下面有许多单独的框架,各个框架之间都可以单独使用。SpringMVC解决WEB开发中各种逻辑,而且使用简单,与Spring无缝集成。采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

二、环境配置

1、创建maven工程

我使用的idea是21版的,在添加maven配置后创建web工程会自动导入maven工程相关配置,我这里也简单介绍一下maven工程的创建,如果你的maven还没有配置好,可以参考另一篇博客:maven的安装、环境配置、私服配置,idea部署maven

  1. 选择创建模块或者项目
    在这里插入图片描述
  2. 选择maven工程
    在这里插入图片描述
  3. 选择maven版本
    第一个就是选择maven的版本,最开始idea有一个默认的,你自己有下就选择你自己的版本,第二个是mavensetting配置文件的位置,第三个是maven本地仓库的位置。一般你有将maven部署到idea那idea都会自动选择二三步。
    在这里插入图片描述
    项目创建好之后main下面只有一个webapp目录,你可以加上其它目录。包括java源程序目录,资源目录,还有一个测试类的目录。然后右击选择Mark Directory as选择目录类型。
    在这里插入图片描述

2、导入核心依赖

  1. 在pom.xml里面导入如下依赖:
    第一个是测试类依赖,第二个是springMVC依赖,第三是日志依赖,第四个是thymeleaf依赖,第一三就你的情况可以导入也可以不导入。
<!--测试类依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
<!--spring mvc依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.1</version>
        </dependency>
<!--日志-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

<!--spring与thymeleaf整合依赖-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.15.RELEASE</version>
        </dependency>

  1. 配置web.xml文件
    spring能够基于原生的servlet,通过功能强大的前端控制器DispatcherServlet统一处理请求和处理响应。
    (1)默认的方式配置
    我们在javaweb中学习的servlet一个请求就对应一个servlet,在配置文件中就要在<url-pattern>/</url-pattern>里面配置servlet路径。而springMVC对全部的请求都做统一处理,通过前端控制器DispatcherServlet统一处理请求,那pattern>/</url-pattern>里面就要配置全部请求地址。web里面学的全部请求方式就是/*,但是这要注意的是不能包含jsp,因为jsp本省就是servlet程序,它的请求本身就通过特定方式处理,不需要再处理了,所以请求地址配置为<url-pattern>/</url-pattern>代表除了jsp以外的全部请求。
<!--    默认的springMVC配置前端空值器,对浏览器发送的请求统一处理-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

(2)扩展配置方式
扩展方式通过 <init-param> </init-param>标签配置了springMVC配置文件的初始名称和位置<param-name>标签里面contextConfigLocation翻译过来就是配置文件的位置,<param-value>里面是配置文件的类加载路径。还有<load-on-startup>1</load-on-startup>标签配置前端控制器的初始化时间,里面是1 就代表服务器启动时前端控制器就初始化,并不像web基础里面请求一次才初始化一个servlet。

<!--    扩展配置方式-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--    配置spring配置文件的初始化名称和位置-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
<!--        将dispatcherServlet前端控制器初始化时间改为服务器启动时初始化-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

3、创建springMVC配置文件

在resource目录下新建一个springMVC.xml文件,注意要选择spring config类型的。然后加入context命名空间,用于组件扫描。这里组件扫描使用方法和springIOC里面一样,用<context:component-scan base-package=""> </context:component-scan>标签,base-package标签里面是将要扫描的类路径。

<?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"
       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">

<!--    开启组件扫描-->
    <context:component-scan base-package="com.cx.springmvc.controller">
    </context:component-scan>
</beans>

4、加入thymeleaf视图解析器

这个thymeleaf具体后面会讲到,现在照着配置,后面会使用到。thymeleaf配置加在spring配置文件里面。

<!--    thymeleaf视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!--                        视图前缀-->
                        <property name="prefix" value="/WEB-INF/templates/"/>
                        <!--                        视图后缀-->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

三、编写web代码

1、写一个类,并且加上配置标签

这里的注解和spring里面的一样,注意在组件扫描里面加上包路径。我的类路径是com.cx.springmvc.controller,所以对应的组件扫描标签就是 <context:component-scan base-package="com.cx.springmvc.controller"> </context:component-scan>如果没有开启组件扫描,这个类就不会加载到spring容器里面,不能通过spring实例化。

@Controller
public class HelloController {
}

2、配置thymeleaf视图解析器的下载路径

我这里先写一个简单的html,注意html里面要加上thymeleaf视图解析器的下载路径,如果你想要后面的所有html界面都自动加上thymeleaf视图解析器的下载路径,可以在idea里面修改html界面默认初始化内容。
在这里插入图片描述
在这里插入图片描述
在第四步里面html标签加上xmlns:th=“http://www.thymeleaf.org”,这个就是thymeleaf视图解析器的下载路径。

3、编写一个简单的前端页面

注意编写后html的路径,我的html放在WEB-INF下的templates里面,对应在thymeleaf配置里面视图前缀就为 <property name="prefix" value="/WEB-INF/templates/"/>,再由于我的demo页面是html类型的,视图后缀就为<property name="suffix" value=".html"/>,配置成功后通过html名称就能够找到对应的网页。

index.html页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>hello world!!!</h1>
</body>
</html>

demo1.html页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
</body>
</html>

4、写获取视图的方法

在我们注解的类里面写获取视图方法,注意方法返回String类型,返回内容是页面名字,我的页面叫index.html和demo1.html,就返回index和demo1。最后在方法上加上@RequestMapping(“/”)注解,引号里面对应页面名称。如果是@RequestMapping(“/”)就代表默认启动页面。

@Controller
public class HelloController {

    @RequestMapping("/")
    public String toIndex(){
        return "index";
    }

    @RequestMapping("/demo1")
    public String toDemo1(){
        return "demo1";
    }
}

5、配置Tomcat服务器

6、测试结果

启动服务器后默认页面就是index.html的内容,后面加上demo1就是demo1页面的内容,注意不用加上虚拟路径和后缀,因为在thymeleaf视图解析器里面已经配置过试图前缀和视图后缀。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我没得冰阔落.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值