Spring MVC
MVC 是一种软件架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理应用程序的数据逻辑,视图负责展示数据给用户,控制器负责处理用户的输入和更新模型。这种分离的设计使得代码更易于维护和扩展。MVC 被广泛应用于Web开发和其他软件开发领域。SpringMVC 就是将原本在Servlet中开发的代码进行拆分,一部分由SpringMVC完成,一部分由我们自己完成。
SpringMVC 的执行流程如下:
客户端发送请求:当客户端(如浏览器)发送一个HTTP请求到服务器时,请求会首先被Tomcat服务器接收。
DispatcherServlet 接收请求:在SpringMVC中,DispatcherServlet是核心控制器,它接收所有的请求并将其分发给相应的处理器(Controller)。
HandlerMapping 映射处理器:DispatcherServlet 通过 HandlerMapping 来确定请求对应的处理器(Controller)。
Controller 处理请求:找到对应的处理器(Controller)后,DispatcherServlet 将请求转发给该处理器进行处理。
处理器处理请求:处理器(Controller)根据请求的内容进行相应的处理,可能会调用相应的业务逻辑处理数据,并返回一个 ModelAndView 对象。
视图解析器解析视图:DispatcherServlet 将 ModelAndView 对象中的视图逻辑名称交给 ViewResolver(视图解析器)来解析,找到对应的视图页面。
视图渲染:ViewResolver 找到对应的视图页面后,将数据填充到视图中,生成最终的视图页面。
响应结果:DispatcherServlet 将最终生成的视图页面返回给客户端,客户端接收到响应后进行展示。
总的来说,SpringMVC 的执行流程包括接收请求、映射处理器、处理请求、解析视图、渲染视图和响应结果等步骤,通过这一系列的流程,SpringMVC能够有效地处理客户端的请求并返回相应的结果给客户端。
Spring MVC的搭建
1、创建项目
2、添加WEB架构
这样更改路径是因为在项目中,web.xml 文件通常存放在 WEB-INF 目录下,而 D:\mvc\chapter12\web\WEB-INF\web.xml 这个路径可能不是项目的标准结构。将 web.xml 文件的路径更改为 D:\mvc\chapter\src\main\webapp\WEB-INF\web.xml 是为了符合项目的标准结构,使得项目更易于维护和管理。这样做也可以避免在部署或运行项目时出现路径错误或文件找不到的问题。
在这种情况下,可能是因为需要更新项目的 Web 资源目录路径。原来的路径D:\mvc\chapter\web可能不再适用,而新的路径D:\mvc\chapter\src\main\webapp是项目中新的正确路径。在弹出的对话框中,点击 Web 资源目录,在弹出的对话框中将原来的 web 文件地址D:\mvc\chapter\web 改为 D:\mvc\chapter\src\main\webapp。如果弹出了“未找到目录”的对话框,点击“是”按钮,以确认更新目录路径。这样做可以确保项目中的 Web 资源能够正确被识别和访问,以便项目能够正常运行。
3、配置依赖的Jar包(pom.xml)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-
4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>chapter12</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--Spring 核心类-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--Spring MVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--JSP-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
4、配置Spring MVC的核心配置文件spring-mvc.xml(在src\main\resources目录下)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置 Spring MVC 要扫描的包 -->
<context:component-scan base-package="com.j2ee.controller"/>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
在配置文件中,使用了context命名空间的component-scan标签来配置Spring MVC要扫描的包路径为"com.j2ee.controller"。
接下来使用了bean标签定义了一个InternalResourceViewResolver的bean。这个bean是Spring MVC中用于解析视图的类。在这里设置了两个属性:prefix和suffix,分别指定了视图文件的前缀和后缀。
最后,整个配置文件使用了beans命名空间,将上述配置信息封装在一个beans标签内。这个配置文件用于配置Spring MVC的基本设置,包括扫描包路径和视图解析器的设置。
注意:
这里也需要点击右上角的m加载进所需要的框架
这里<context:component-scan base-package="com.j2ee.controller"/>会显示标红,是需要我们在指定的包内创建相应路径com.j2ee.controller
我们接着依次创建com.j2ee.controller包(在src/mian/java下),和Web目录pages(在Webapp/WEB-INF下)。
5、配置Web.xml文件,添加内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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" version="3.0">
<!-- 配置 Spring MVC 的前端控制器 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 配置初始化参数,用于读取 Spring MVC 的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.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>
</web-app
6、在com.j2ee.controller包下创建IndexController类,其内容如下:
package com.j2ee.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping("/index")
public String index(){
return "index";
}
}
这段代码是一个简单的Spring MVC控制器类,用于处理用户请求并返回相应的视图页面。具体解释如下:
-
package com.j2ee.controller;
:声明了这个类所在的包路径为com.j2ee.controller。 -
import org.springframework.stereotype.Controller;
:导入了@Controller注解,用于标识这个类是一个控制器类。 -
import org.springframework.web.bind.annotation.RequestMapping;
:导入了@RequestMapping注解,用于映射请求URL到具体的处理方法。 -
@Controller
:使用@Controller注解标识这个类是一个控制器类,Spring会自动扫描并注册这个类。 -
public class IndexController {
:定义了一个名为IndexController的控制器类。 -
@RequestMapping("/index")
:使用@RequestMapping注解标识了index()方法可以处理来自“/index”路径的请求。 -
public String index(){}
:定义了一个名为index的方法,返回类型为String。这个方法处理了“/index”路径的请求。 -
return "index";
:在index()方法中返回了一个名为"index"的字符串,表示要返回名为index的视图页面。
综上所述,这段代码定义了一个名为IndexController的控制器类,当用户访问“/index”路径时,会调用index()方法并返回名为index的视图页面。
7、创建视图页面(index.jsp),在pages目录下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>hello world!!!</h2>
</body>
</html>
8、配置Tomcat:
在MVC(Model-View-Controller)架构中,Tomcat是一个常用的Web服务器,用于部署和运行Web应用程序。MVC配置Tomcat的作用包括:
提供一个运行环境:Tomcat作为一个Web服务器,提供了一个运行Java Web应用程序的环境。通过配置MVC应用程序在Tomcat上运行,可以让应用程序在一个稳定、可靠的环境中工作。
处理HTTP请求:Tomcat可以接收并处理来自客户端的HTTP请求,然后将请求转发给相应的MVC控制器进行处理。通过配置Tomcat,可以确保请求能够正确地被路由到相应的控制器,并返回相应的视图给用户。
管理应用程序的部署:Tomcat提供了管理Web应用程序部署的功能,可以通过Tomcat的管理界面来部署、启动、停止和卸载应用程序。通过配置MVC应用程序在Tomcat上部署,可以方便地管理应用程序的生命周期。
提供静态资源服务:Tomcat可以处理静态资源(如HTML、CSS、JavaScript文件等)的请求,并将这些资源返回给客户端。通过配置Tomcat,可以确保静态资源能够被正确地访问和加载。
总的来说,MVC配置Tomcat的作用是为MVC应用程序提供一个稳定的运行环境,并处理HTTP请求、管理应用程序的部署,以及提供静态资源服务等功能,从而确保应用程序能够正常运行并向用户提供服务。
Run->edit configurations->选 + 从弹出的菜单中选择tomcat server下的Local,如图:
注意:这里可能不能显示chapter.war这第一个配置,那么请回到主文件,看看核心配置文件是否标红,或者出现问题,我们可以试着重新加载项目,如图帮助所示:
9.测试
点击运行:若运行结果如下图显示,并不是配置错了,将地址名后面加index,就运行成功了!
附(如果想直接跳转)
如果i想要直接跳转到所需要的网页这里只需要将index.jsp移到webapp目录下即可,如图所示:
总结:
这是依据教学内容展现的一个最简单spring mvc 模型,主要依赖tomcat提供运行环境,Servlet组件DispatcherServlet来接受相应的请求,通过controller来去处理相应的用户请求。是最基础的模型,后续还要设置到view,映射处理、渲染等请求。需要逐步完善