1.7初步了解Spring MVC--运用xml文件配置MVC

发布时间:2023-12-20 14:31:20

一、Spring MVC概述

1、MVC架构

  • MVC ModelViewController 的缩写,分别代表 Web 应用程序中的 3 种职责。
  1. 模型(Model):用于存储数据以及处理用户请求的业务逻辑。
  2. 视图(View):向控制器提交数据,在移动端或Web端显示模型中的数据。
  3. 控制器(Controller):根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。
  • 三层架构:Presentation Tier + Application Tier + Data Tier (展现层+应用层+数据访问层)

2、Spring MVC

  • Spring MVC 是 Spring 提供给 Web 应用的框架设计。Spring MVC 是一个典型的教科书式的 MVC 构架,不像 Struts 等都是变种或者不是完全基于 MVC 系统的框架。Spring MVC 角色划分清晰,分工明细,并且和 Spring 框架无缝结合。作为当今业界最主流的 Web 开发框架,Spring MVC 已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。
  • 实际上MVC只存在于三层架构的展现层,M实际上是数据模型,是包含数据的对象,在Spring MVC里有一个专门的类交Model,用于和V之间的数据交互和传值;V指的是视图页面,包含JSP、FreeMarker、Velocity、Thymeleaf、Tile等;C当然就是控制器(Spring MVC的注解@Controller的类)。

Spring MVC工作流程:

  1. 客户端请求提交到 DispatcherServlet。
  2. 由 DispatcherServlet 控制器寻找一个或多个 HandlerMapping,找到处理请求的 Controller。
  3. DispatcherServlet 将请求提交到 Controller。
  4. Controller 调用业务逻辑处理后返回 ModelAndView。
  5. DispatcherServlet 寻找一个或多个 ViewResolver 视图解析器,找到 ModelAndView 指定的视图。
    视图负责将结果显示到客户端。

在这里插入图片描述

3、使用Spring MVC的两种方式

  1. 基于XML配置与注解的方式使用Spring MVC
  2. 基于Java配置与注解的方式使用Spring MVC

二、基于XML配置与注解的方式使用Spring MVC

(一)创建Maven项目

  • Maven项目 - SpringMvcDemo01
    在这里插入图片描述
    在这里插入图片描述
  • 点finish
    在这里插入图片描述

(二)添加相关依赖

  • pom.xml文件里添加支持Spring MVC的相关依赖
    在这里插入图片描述
<?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>net.hw.spring</groupId>
    <artifactId>SpringMVCDemo2023</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- spring.version -->
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <spring.version>5.3.4</spring.version>
    </properties>
    <dependencies>
        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring Bean-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring容器-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring测试-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring数据库支持-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--数据库驱动工具包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <!--数据库连接池框架-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.24</version>
        </dependency>
        <!--日志框架-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--Spring AOP-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--AspectJ支持-->
        <dependency>
            <groupId>aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.5.4</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.6</version>
            <scope>runtime</scope>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <!--Spring Web-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--JSP标准标签库-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--Servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--对json的支持-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.7</version>
        </dependency>
        <!--对xml的支持-->
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.5.3</version>
        </dependency>
    </dependencies>


</project>

(三)给项目添加Web功能

  • 打开项目结构窗口,在列表里选择【Modules】
    在这里插入图片描述
  • 单击【+】按钮,添加Web功能
    在这里插入图片描述
    在这里插入图片描述
  • 单击【Create Artifact】按钮,将名称改为“SpringMvcDemo2023
    在这里插入图片描述
    单击【OK】按钮,可以看到项目多了一个web目录
    在这里插入图片描述

(四)创建三个页面

  • WEB-INF 里创建 views子目录(存放JSP页面)
    在这里插入图片描述

1、创建登录页面

  • views目录里创建登录页面 - login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>登录</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.5.3/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/popper.js/1.16.0/umd/popper.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script>
    <script src="js/check.js"></script>
</head>
<body>
<div class="container-fluid">
    <h3 class="text-center">用户登录</h3>
    <form class="was-validated" id="frmLogin" method="post" action="login">
        <div class="form-group">
            <label for="username">账号:</label>
            <input type="text" class="form-control" id="username" name="username" placeholder="请输入用户名" required>
            <div class="valid-feedback">有效</div>
            <div class="invalid-feedback">请输入用户名</div>
        </div>
        <div class="form-group">
            <label for="password">密码:</label>
            <input type="password" class="form-control" id="password" name="password" placeholder="请输入密码" required>
            <div class="valid-feedback">有效</div>
            <div class="invalid-feedback">请输入密码</div>
        </div>
        <div class="text-center">
            <button type="submit" class="btn btn-primary">登录</button>
            <button type="reset" class="btn btn-secondary">重置</button>
        </div>
    </form>
</div>
</body>
</html>

2、创建登录成功页面

  • 在views目录里创建登录成功页面 - success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <head>
        <title>登录成功</title>
    </head>
    <body>
        <h3>${username},登录成功</h3>
    </body>
</html>

3、创建登录失败页面

  • 在views目录里创建登录成功页面 - fail.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>登录失败</title>
    </head>
    <body>
        <h3>登录失败</h3>
    </body>
</html>

(五)创建登录控制器

  • 创建net.llp.spring.controller包,然后在包里创建LoginController
    在这里插入图片描述
package net.llp.spring.controller;

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

import javax.servlet.http.HttpSession;

/**
 * 功能:
 * 作者:罗
 * 日期:2023年03月09日20时00分07秒
 */
@Controller
public class LoginController {
    @RequestMapping("login")  // 可用@RequestMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpSession session) {
        // 将登录表单提交的用户名写入会话
        session.setAttribute("username", username);
        // 判断用户是否登录成功
        if (username.equals("admin") && password.equals("123456")) {
            // 返回逻辑视图名success,表明跳转到登录成功页面
            return "success";
        }

        // 返回逻辑视图名failure,表明跳转到登录失败页面
        return "fail";
    }




}

对于关系图
在这里插入图片描述

(六)创建Spring配置文件

  • resources里创建mvc子目录,然后在子目录里创建spring-config.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--扫描控制器-->
    <context:component-scan base-package="net.llp.spring.controller"/>
    
    
</beans>

(七)创建Spring MVC配置文件

  • resources/mvc目录里创建spring-mvc-config.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:mvc="http://www.springframework.org/schema/mvc"
       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
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--采用注解驱动-->
    <mvc:annotation-driven/>

    <!--扫描控制器-->
    <context:component-scan base-package="net.llp.spring.controller"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <mvc:view-controller path="/" view-name="index"/>
    <mvc:view-controller path="/toLogin" view-name="login"/>

    <!--专门处理静态资源的请求-->
    <mvc:resources mapping="/images/**" location="/WEB-INF/static/images/"/>
    <mvc:resources mapping="/css/**" location="/WEB-INF/static/css/"/>
    <mvc:resources mapping="/js/**" location="/WEB-INF/static/js/"/>
    <!--<mvc:annotation-driven/>-->

</beans>

在这里插入图片描述

(八)修改Web部署描述文件

  • 一个Web项目启动时最先要读取web.xml文件
  • 在web/WEB-INF目录里打开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">
    <!--设置启动首页-->
        <!--   <welcome-file-list>
        <welcome-file>/WEB-INF/views/login.jsp</welcome-file>
    </welcome-file-list>-->

    <!--Spring容器加载监听器,让Spring随着Web项目启动而初始化-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--指定Spring配置文件位置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:mvc/Spring-config.xml</param-value>
    </context-param>

    <!--配置Spring前段控制器,加载Spring MVC配置文件-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:mvc/spring-mvc-config.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>

    <!--设置字符编码过滤器-->
    <filter>
        <filter-name>Character Encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

注意:Spring配置文件位置和配置Spring前段控制器,加载Spring MVC配置文件
在这里插入图片描述

(九)配置Tomcat服务器

  • 点击【add Configuration】
    在这里插入图片描述
  • 点 + 号,找到Tamcat,点击local
    在这里插入图片描述
    在这里插入图片描述
  • 点击fix(修复)
    在这里插入图片描述
  • 点apply再点OK
    注意:URL地址
    在这里插入图片描述

(十)、添加对项目Tmacat的依赖

1、在Modules里添加omcat

  • .打开【Project Structure】窗口,选择Modules对应的Dependencies
    在这里插入图片描述
  • 点右边 + 号,点Lib,选择Tomcat添加进去
    在这里插入图片描述

2、添加运行时所需要的jar包

  • 点击Artiface,将右边jar包全选中,
    在这里插入图片描述
  • 点击 put into default Locations
    在这里插入图片描述

(十一)启动Tomcat查看效果

在这里插入图片描述

  • 自行测试登录成功和失败攻略
文章来源:https://blog.csdn.net/m0_65489276/article/details/130577310
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。