java企业级信息系统开发学习笔记06基于xml配置方式使用Spring MVC

news2025/1/27 12:35:34

文章目录

  • 一、学习目标
  • 二、Spring MVC概述
      • 1、MVC架构
      • 2、Spirng MVC
      • 3、使用Spring MVC的两种方式
  • 三、基于xml配置与注解的方式使用Spring MVC
    • (一)创建Maven项目
    • (二)添加相关依赖
    • (三)给项目添加Web功能
    • (四)创建三个页面
      • 1、创建登录页面
      • 2、创建登录成功页面
      • 3、创建登录失败页面
    • (五)创建登录控制器
    • (六)创建Spring配置文件
    • (七)创建Spring MVC配置文件
    • (八)修改Web部署描述文件
    • (九)配置Tomcat服务器
    • (十)添加项目对Tomcat的依赖
    • (十一)启动Tomcat服务器

一、学习目标

  • 了解Spring MVC的基本原理
  • 会基于XML配置方式使用Spring MVC

二、Spring MVC概述

1、MVC架构

MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。

  • 模型:用于存储数据以及处理用户请求的业务逻辑。
  • 视图:向控制器提交数据,在移动端或Web端显示模型中的数据。
  • 控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。

2、Spirng 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 指定的视图。
    6.视图负责将结果显示到客户端。
    在这里插入图片描述

3、使用Spring MVC的两种方式

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

三、基于xml配置与注解的方式使用Spring MVC

(一)创建Maven项目

在这里插入图片描述

(二)添加相关依赖

在这里插入图片描述

<?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.huawei.spring</groupId>
    <artifactId>SpringMvcDemo01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- spring.version -->
        <spring.version>5.3.25</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 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>
        <!--日志框架-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

(三)给项目添加Web功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(四)创建三个页面

1、创建登录页面

<%--
  Created by IntelliJ IDEA.
  User: huawei
  Date: 2023-03-08
  Time: 15:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
	<head>
	    <title>用户登录</title>
	    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
	</head>
	<body>
	    <h3 style="text-align: center">用户登录</h3>
	    <form id="frmLogin" action="login" method="post">
	        <table class="tb" border="1" cellpadding="10" style="margin: 0px auto">
	            <tr>
	                <td align="center">账号</td>
	                <td><input id="username" type="text" name="username"/></td>
	            </tr>
	            <tr>
	                <td align="center">密码</td>
	                <td><input id="password" type="password" name="password"/></td>
	            </tr>
	            <tr align="center">
	                <td colspan="2">
	                    <input type="submit" value="登录"/>
	                    <input type="reset" value="重置"/>
	                </td>
	            </tr>
	        </table>
	    </form>
	</body>
</html>

2、创建登录成功页面

<%@ 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>
        <h1 style="text-align: center">${username},登录成功!</h1>
    </body>
</html>

3、创建登录失败页面

<%@ 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>
        <h1 style="text-align: center">${username},登录失败!</h1>
    </body>
</html>

(五)创建登录控制器

在这里插入图片描述

package net.huawei.spring.controller;

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

import javax.servlet.http.HttpSession;

/**
 * 功能:登录控制器
 * 作者:华卫
 * 日期:2023年03月08日
 */
@Controller // 交给Spring容器来管理
public class LoginController {
    @PostMapping("/login")  // 可用@RequestMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpSession session) {
        // 将登录表单提交的用户名写入会话
        session.setAttribute("username", username);
        // 判断用户是否登录成功
        if (username.equals("howard") && password.equals("903213")) {
            // 返回逻辑视图名success,表明跳转到登录成功页面
            return "success";
        } 
        
        // 返回逻辑视图名failure,表明跳转到登录失败页面
        return "failure"; 
    }
}

(六)创建Spring配置文件

在这里插入图片描述

<?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.huawei.spring" />

</beans>

(七)创建Spring MVC配置文件

在这里插入图片描述

<?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
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

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

    <!--扫描控制器-->
    <context:component-scan base-package="net.huawei.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>
</beans>

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

在这里插入图片描述

<?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">
    <!--设置启动首页-->
    <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>

(九)配置Tomcat服务器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(十)添加项目对Tomcat的依赖

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(十一)启动Tomcat服务器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433662.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC表格提交中文乱码和配置logback

最佳解决方案还是使用Spring提供的过滤器&#xff0c;将其配置到WEB.XML文件中&#xff1a; <filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class&g…

nginx部署VUE项目

前言 目前公司的前端代码基本都是部署在nginx下&#xff0c;特此来记录一下 开发环境&#xff1a;window10 nginx环境搭建&#xff08;参考下方文章&#xff09; window环境安装 mac环境安装 本地我将nginx放置于F盘 前端项目打包 一个nginx服务下可能会放置多个前端包&…

echarts 折线图

Echarts 常用各类图表模板配置 注意&#xff1a; 这里主要就是基于各类图表&#xff0c;更多的使用 Echarts 的各类配置项&#xff1b; 以下代码都可以复制到 Echarts 官网&#xff0c;直接预览&#xff1b; 图标模板目录Echarts 常用各类图表模板配置一、简洁折线图二、环形图…

结构体的存储

由于要想知道结构体的大小&#xff0c;了解结构体是如何存储在内存中的 我们需要先了解一个知识点&#xff1a; 结构体内存对齐 1. 第一个成员在与结构体变量偏移量为0的地址处 (偏移量是某个字节相较于起始存储空间的相差字节数 例如第一个字节的偏移量是0&#xff0c;第二个…

一套专业的C#医院体检管理系统源码 PEIS体检报告管理系统源码 C/S医院PEIS系统源码

医院PEIS体检管理系统源码&#xff0c;有源码&#xff0c;有演示&#xff0c;自主研发&#xff0c;官方正版授权&#xff01; 开发语言&#xff1a;C# 开发工具&#xff1a;VS2013版本起 后端框架&#xff1a;winform 数 据 库&#xff1a;oracle 12c 医院体检系统主要特点…

人大金仓亮相2023CHITEC,五大看点不容错过

近日&#xff0c;由中国卫生信息与健康医疗大数据学会和《中国卫生信息管理杂志》社联合举办的2023&#xff08;17th&#xff09;中国卫生信息技术/健康医疗大数据应用交流大会暨软硬件与健康医疗产品展览会&#xff08;2023 CHITEC&#xff09;在安徽合肥顺利召开。 作为数据库…

【DAY38】BOM/VUE初步学习

pageXOffset 设置或返回当前页面相对于窗口显示区左上角的 X 位置。 pageYOffset 设置或返回当前页面相对于窗口显示区左上角的 Y 位置。 screenLeft&#xff0c;screenTop&#xff0c;screenX&#xff0c;screenY 声明了窗口的左上角在屏幕上的的 x 坐标和 y 坐标。IE、Safari…

JavaScript历史

JavaScript历史 参考视频1 1990年&#xff0c;第一个终端显示网页被蒂姆博士创造出来&#xff0c;表现为超链接跳转、无图的特点。文本格式定义、文本传输协议即应用层协议&#xff0c;解析显示引擎是关键。1993年&#xff0c;随着人们对视觉效果的要求逐渐变高&#xff0c;马…

Https详解

文章目录 一. 什么是 Https1. "加密"是什么?2. 对称加密3. 非对称加密4. "中间人攻击" 二. 引入证书理解签名黑客能否伪造证书?黑客能否替换公钥?黑客能否篡改签名?如何查看证书? 一. 什么是 Https https 就是 http 安全层(SSL)–> 用来加密的协…

黑马在线教育数仓实战6

6. 意向用户主题看板_增量流程 6.1 数据采集(拉链表) 7. hive的索引 ​ 索引的作用: 加快查询的效率 为什么索引可以提升查询效率呢? hive索引是在 分区 分桶优化基础上, 又提供一种新的优化手段, 如果分区 和分桶受限, 可以尝试使用索引的方式来优化处理 hive提供了三种索…

VMware ESXi 8.0U1 macOS Unlocker OEM BIOS (标准版和厂商定制版)

ESXi 8.0U1 标准版&#xff0c;Dell HPE 联想 浪潮 定制版 请访问原文链接&#xff1a; https://sysin.org/blog/vmware-esxi-8-u1-oem/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 2023-04-18, VMware vSphere 8.0U1 发布…

家用洗地机实用吗?家用洗地机款式推荐

要说现在家居清洁用什么单品更省心&#xff0c;洗地机必须要算一项。虽然这在国际上也不是什么新鲜的概念了&#xff0c;但是在国内兴起也只是这几年的事&#xff0c;关于家用洗地机什么牌子最好之类的问题也是很多人都比较关心的问题。我个人也是不喜欢做家务的&#xff0c;家…

C++算法:排序、查找

排序 排序是一个非常经典的问题&#xff0c;它以一定的顺序对一个数组&#xff08;或一个列表&#xff09;中的项进行重新排序 有许多不同的排序算法&#xff0c;每个都有其自身的优点和局限性。 时间复杂度&#xff1a;对排序数据的总的操作次数。反映当n变化时&#xff0c;操…

SQL之SQL优化

文章目录 一、插入数据优化insert优化大批量插入数据 二、主键优化数据组织方式页分裂页合并主键设计原则三、order by优化 四、Group By 优化五、limit优化六、count优化count的几种用法 七、update优化总结 一、插入数据优化 insert优化 insert into tb_test values(1, tom…

Linux:centos:系统服务基础控制(systemctl)基础使用 图形化工具ntsysv使用

基础使用的办法为&#xff1a; systemctl控制类型服务名称 控制常用类型为一下几个 start 启动 stop 停止 enable 开机自启 disable 开机不自启 restart 重新启动 reload 重新加载 status 查看服务状态 systemc…

Redis---主从复制

一、redis主从复制 主从复制&#xff1a;是存储数据的服务结构 主服务器&#xff1a;接受客户端连接的服务器 从服务器&#xff1a;自动与主服务器保持数据一致的服务器 配置主从复制 1、环境准备 主服务器 主机名&#xff1a;master IP地址&#xff1a;192.168.11.101/…

在PyCharm中配置Git

防止以后换软件或电脑忘记怎么配置PyCharm&#xff0c;记录一下。 前提 电脑已经安装好了Git工具&#xff0c;安装教程有一个GitHub账号&#xff08;这不废话嘛…&#xff09;电脑最好有科学上网工具&#xff08;要不然拉取、推送等操作总是不成功&#xff09; PyCharm设置 …

VMware安装苹果系统教程 MAC安装VMware Tools,开启拖拽功能

VMware虚拟机安装苹果系统教程 1 准备工作 安装VM虚拟机、准备Install_macOS_Monterey_12.5 镜像、darwin1012.iso &#xff08;VMware Tools&#xff09;、unlocker解锁工具 2 解锁VM虚拟机 默认VM虚拟机是不支持macOS安装的&#xff0c;我们需要对虚拟机进行解锁操作&…

5.java程序员必知必会类库之excel读写库

前言 Excel在数据处理中的重要性自不必说&#xff0c;我们经常会有需求&#xff0c;将数据库中的数据&#xff0c;做过一些处理后&#xff0c;导出一个Excel给运营人员分析。也有需求是将批量的商品数据等&#xff0c;批量录入到我们系统中。直观上可以理解为Excel是客户和系统…

ASP 、PHP 代码加密的安全性逻辑思考

以古董后台语言 asp 为例&#xff0c;为了保证明文代码不被最终使用者修改或抄袭&#xff0c;有多种方法对代码进行编码&#xff0c;执行时再解码。也可以直接将代码全部编译入 COM 组件 &#xff0c;但是这需要每次都编译&#xff0c;不适合日常使用。 因此&#xff0c;这里考…