SpringMVC(一)配置

目录

引入

[第一章:Java web的发展历史](#第一章:Java web的发展历史)

[一、Model I和Model II](#一、Model I和Model II)

[1.Model I开发模式](#1.Model I开发模式)

[2.Model II开发模式](#2.Model II开发模式)

[二. MVC模式](#二. MVC模式)

第二章:SpringMVC的入门案例

搭建SpringMVC的入门程序

1.创建新项目

2.等待加载+导入坐标

3.处理xml文件和其他

导入tomcat

运行

小结:


引入

SSM(Spring + Spring MVC + MyBatis)

Spring MVC、Spring、MyBatis之间有什么关联:SSM就相当于时一个升级版本的Servlet。

那么什么是Servlet?它能够做什么?

Servlet的三个核心功能:和页面进行交互、业务、JDBC实现和数据库交互

那么对应上升级版本的Servlet--->SSM,Servlet中的小功能也被SSM中所替代:

1、和页面进行交互---->SSM通过SpringMVC实现

2、业务(Servlet实现基于反射和代理)--->SSM本质还是基于反射,只是通过反射做了个更大框架-Spring框架(IOC+AOP)

3、数据库的连接--->SSM通过mybatis实现

第一章:Java web的发展历史

一、Model I和Model II

1.Model I开发模式

Model1的开发模式是:JSP+JavaBean的模式,它的核心是Jsp页面,在这个页面中,Jsp页面负责整合页面和JavaBean(业务逻辑),而且渲染页面,它的基本流程如下:

这样的设计模式到这一个jsp页面负责了视图的展示和业务流程的控制高度耦合的结果是Jsp代码十分复杂,后期维护困难!

(注 :JSP是已经被淘汰的技术,其中包括前端界面以及一点点封装的后端逻辑;bean就是对象**)**

2.Model II开发模式

在Model II的模式下。利用jsp页面、servlet和JavaBean组件分工协作共同完成系统的所有任务。其中jsp负责数据显示逻辑任务,servlet负责程序的流程控制任务,JavaBean负责处理业务逻辑任务。它的基本流程如下:

Model2:相对于Model1来说,职责分工更为明确,在Model1的基础上,抽取了Servlet层,体现了一个分层的思想,适合大型的项目开发!(当时的评判标准是适合大型项目开发的,现在看起来已经过时了!)

二. MVC模式

Spring mvc是基于Spring的一个模块,专门做web开发,可以理解为是Servlet的升级
在Spring MVC框架当中,Controller替代Servlet担负控制器的职能,
M: 指model:模型层,指工程当中的Java Bean,作用是处理数据
Java Bean分两类:

  • 一类是实体类Bean:专门存储业务数据的
  • 一类为业务处理Bean:指Servlet或Dao对象,专门处理业务逻辑和数据
    V :View,视图层指项目当中的html或jsp等页面,作用是与用户进程交互,展示数据
    C :Contoller,控制层,指工程当中的servlet,作用是接受请求和响应数据
    MVC思想不是那个语言所特有的设计模式,也不是web应用所特有的思想,而是一种规范。MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高了应用的可扩展性和可维护性。他们三者的关系如下图所示

第二章:SpringMVC的入门案例

搭建SpringMVC的入门程序

1.创建新项目

选择Maven模块,勾选上"从archetype创建(A)",然后选择如下项(注意这里有两个webapp结尾的项,不要选错!),做完这些后选择下一步。

为项目起名字,工作组件可自行更改:

进入这里:

什么都不用选,直接点完成。

2.等待加载+导入坐标

创建项目进入后就会自动加载,有点慢,等待加载成功完成即可:

加载完成后会显示进程结束:

随后就可以配置pom.xml了:

首先将pom.xml里面自带的<dependencies>和<build>内容删除掉,<name>和<url>这两个也可以删除:

删除后是这样:

导入坐标:

html 复制代码
<!--版本锁定-->
<properties>
  <spring.version>5.0.2.RELEASE</spring.version>
</properties>

<dependencies>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.0</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.0</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.0</version>
</dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <!--SpringMVC-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <!--servlet API-->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
  </dependency>

  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
  </dependency>

  <!--日志-->
  <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
  </dependency>

  <dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>
    <version>3.0.9.RELEASE</version>
  </dependency>

</dependencies>

注意这里面的两个<properties>冲突了,需要合并粘贴一下:

合并:

完成后点击"m"进行导入:

【注意一个点:这里面显示的组ID、版本、artifactID都已经确定了,最下面这一行显示的packaging表示的是打包方式,这里是war包,当然还有jar包等等】

3.处理xml文件和其他

将1、2实现后就可以得到这样:

首先第一步,在main下创建目录:

按shift键选择创建这两个,回车:

可以把index.jsp(和前端HTML相近,是一种过时的技术)删除或留着都可以。

处理web.xml里面的内容:

首先需要将原本的web.xml配置文档做出如下更改:

html 复制代码
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
   
 </web-app>

配置DispatcheServlet

Spring MVC是基于原生的servlet,通过强大的前端控制器DispatcheServlet,对请求和响应进行统一处理。

Spring MVC的本质就是一个servlet,是对原生的servlet进行了封装。在以前我们浏览器的每一次请求都需要我们写一个对应的servlet,现在我们只需要将浏览器的请求和响应交给DispatcheServlet进行统一的处理。

在web.xml配置文件中核心控制器DispatcherServlet:

html 复制代码
<!--在web.xml中配置Spring提供的过滤器类 -->
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!--不拦截所有是html的页面请求-->
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

<!--配置前端控制器,对浏览器发送的请求进行统一处理-->
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--加载springmvc.xml配置文件的位置和名称,配置的是Spring配置-->
    <init-param>
        <!--contextConfigLocation:上下文配置路径,固定值-->
        <param-name>contextConfigLocation</param-name>
        <!--classpath:类路径,值得是Java和resources文件夹-->
        <!--springmvc.xml:指的是配置文件的名称:需要配置springmvc.xml,在下面-->
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--配置启动加载-->
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>   
</servlet-mapping>

<!--开启项目时打开的页面-->
<welcome-file-list>
    <welcome-file>/index.html</welcome-file>
</welcome-file-list>

把上述代码放进web.xml文件中的<web-app>中会有一处报错:

这里报错原因是因为目前的Java框架中尚未创建这个名为springmvc.xml的spring.xml类型的文件:

在main下的resource路径下创建string.xml文件,并命名为springmvc:

创建好后上面的报错点就不再报错了。

配置index.html(初始进入的前端界面)文件:

注意看我们配置在这里面的这一段代码,就是我们在打开项目时会默认进入的界面,需要我们去配置一下。

在webapp路径下创建index.html文件:

并在里面配置好:

html 复制代码
<html>
<head>
  <meta charset="utf-8">
  <title>入门程序</title>
</head>
<body>
<h3>入门</h3><a href="/创建的Java项目的名字(一定要对应好)/hello.do" >入门程序</a>
</body>
</html>

完成上述后:

现在在在webapp中新建目录来盛放以后要写的html、js、css等:

1.在html包中创建suc.html,并编写:

html 复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">

    <title>成功</title>
</head>
<body>
<h1>Hello <b th:text="${msg}"></b></h1>
</body>
<script>
</script>
</html>

2.在java中新建软件包controller:

并在里面创建HelloController的Java类,在里面编写(有报错就手动导入类即可):

java 复制代码
//把当前类交给IOC容器进行管理
@Controller
public class HelloController {
    /**
     * 处理超链接发送出来的请求
     * @param model
     * @return
     */
    @RequestMapping(path = "/hello.do")
    public String sayHello(Model model){

        System.out.println("入门方法执行了2...");
        // 向模型中添加属性msg与值,可以在html页面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");
        // 配置了视图解析器后,写法
        return "suc";

    }
}

3.编写springmvc.xml的配置文件(直接覆盖过去就行)

html 复制代码
<?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.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">

    <!--配置spring创建容器时要扫描的包-->
    <context:component-scan base-package="com.qcby"></context:component-scan>

    <!--处理映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <!--处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--配置视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine" ref="templateEngine"/>
    </bean>
    <!-- templateEngine -->
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver"/>
    </bean>
    <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/html/" />
        <property name="suffix" value=".html" />
        <property name="templateMode" value="HTML5"/>
    </bean>
    <!-- JSON View -->
    <bean
        class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
    </bean>
    <!-- 配置spring开启注解mvc的支持  默认就是开启的 ,要想让其他组件(不包含映射器、适配器、处理器)生效就必须需要配置了-->
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

注意这里(要扫描的就是先前创建的HelloController):

导入tomcat

配置好上述后,框架基本搭建完毕,下一步就是导入tomcat运行前端:

点击+后找到tomcat本地:

点击后选择部署,点击➕,选择工件:

选择弹出的第二个:

选择后将这里项目名称后的后缀删除(否则运行时找不到项目):

运行

配置好上述基础的配置后,就可以运行方才搭建的简单界面(运行连接tomcat有点慢):

运行后来到这个界面:

这里就是 index.html文件里面的内容,即打开项目时先运行的界面:

点击入门程序,得到这个界面,即suc.html界面:

小结:

相关推荐
缺点内向3 小时前
Java:创建、读取或更新 Excel 文档
java·excel
带刺的坐椅4 小时前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看5 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程5 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t5 小时前
ZIP工具类
java·zip
lang201509286 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
pengzhuofan7 小时前
第10章 Maven
java·maven
百锦再7 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
刘一说7 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端
壹佰大多7 小时前
【spring如何扫描一个路径下被注解修饰的类】
java·后端·spring