XML配置方式使用Spring MVC:实战练习

news2024/11/26 2:42:29

文章目录

  • 任务1、设置项目首页 - index.jsp
    • 1、修改web.xml文件
    • 2、创建首页文件
    • 3、修改登录控制器
    • 4、启动服务器,查看效果
  • 任务2、首页添加登录链接,单击跳转到登录页面
    • 1、修改首页文件
    • 2、修改登录控制器
    • 3、启动服务器,查看效果
  • 任务3、利用Spring MVC配置文件实现快捷页面跳转
    • 1、修改Spring MVC配置文件
    • 2、修改登录控制器
    • 3、启动服务器,查看效果
  • 任务4、添加静态资源,让Spring MVC正确处理
    • 1、添加一张图片
    • 2、修改首页文件
    • 3、启动服务器,查看效果
    • 4、修改Spring MVC配置文件
    • 5、修改首页文件
    • 6、重启服务器,查看效果
    • 课堂练习
      • (1)添加CSS样式表
      • (2)添加JavaScript脚本
  • 任务5、请求服务器端返回的简单字符串
    • 1、创建获取字符串控制器
    • 2、启动服务器,查看效果
    • 3、修改获取字符串控制器
    • 4、重启服务器,查看效果
    • 思考题:能否让返回字符串有点样式?
  • 任务6、请求服务器端返回的JSON数据
    • 1、创建用户实体类
    • 2、创建获取JSON控制器
    • 3、给项目添加JSON依赖
    • 4、启动服务器,查看结果
  • 任务7、请求服务器端返回的XML数据
    • 1、创建获取XML控制器
    • 2、项目添加XML的依赖
    • 3、将依赖添加到输出目录
    • 4、启动服务器,查看效果


任务1、设置项目首页 - index.jsp

在这里插入图片描述

页面显示内容 - Welcome to Spring MVC World!与系统当前日期时间

1、修改web.xml文件

注释掉“设置启动首页”元素(删除也可以)

2、创建首页文件

在views目录里创建首页文件 - index.jsp
在这里插入图片描述
说明:<%@ page import="java.util.Date" %> - 页面指令

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>首页</title>
    </head>
    <body>
        <h1>Welcome to Spring MVC World~</h1>
        <h3><%= new Date() %></h3> <!--JSP表达式元素-->
    </body>
</html>

此时,启动服务器,查看效果
在这里插入图片描述

3、修改登录控制器

在登录控制器里LoginController里添加一个方法能够跳转到首页
在这里插入图片描述

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

4、启动服务器,查看效果

访问:http://localhost:8080/SpringMvcDemo/

在这里插入图片描述
刷新页面,时间会发生变化
在这里插入图片描述

任务2、首页添加登录链接,单击跳转到登录页面

1、修改首页文件

添加一个超链接,跳转到登录页面
在这里插入图片描述重启服务器
在这里插入图片描述单击【跳转到登录页面】超链接
在这里插入图片描述修改超链接元素
在这里插入图片描述

2、修改登录控制器

在LoginController里添加一个跳转到登录页面的方法toLogin()
在这里插入图片描述

3、启动服务器,查看效果

显示首页
在这里插入图片描述单击【跳转到登录页面】超链接
在这里插入图片描述

说明:项目启动后,跳转到首页,然后从首页跳转到登录页面,都是通过登录控制器里的跳转方法实现的,跳转方法里没有任何业务逻辑,只是一条return语句负责页面跳转,我们有更为简单的方法来取代,即利用利用Spring MVC配置文件实现快捷页面跳转。

任务3、利用Spring MVC配置文件实现快捷页面跳转

1、修改Spring MVC配置文件

定义两个视图控制器来负责页面跳转
在这里插入图片描述

<!--定义视图控制器-->
    <mvc:view-controller path="/" view-name="index"/>
    <mvc:view-controller path="/toLogin" view-name="login"/>

2、修改登录控制器

删除两个负责页面跳转的方法:index()、toLogin()
在这里插入图片描述

3、启动服务器,查看效果

显示首页(说明Spring MVC配置文件里的第一个视图控制器生效)
在这里插入图片描述单击【跳转到登录页面】超链接,跳转到了登录页面(说明Spring MVC配置文件里的第二个视图控制器也生效了)
在这里插入图片描述

任务4、添加静态资源,让Spring MVC正确处理

静态资源包括图片、样式表、脚本、音视频,下面以图片为例进行说明

1、添加一张图片

在WEB-INF里创建images目录,将图片bear.jpg拷贝进来(当然你们可以拷贝其它图片)
在这里插入图片描述

2、修改首页文件

增加显示图片的元素
在这里插入图片描述

3、启动服务器,查看效果

首页无法正常显示图片,也就是说明应用无法访问静态的图片资源
在这里插入图片描述

4、修改Spring MVC配置文件

单独处理静态资源
在这里插入图片描述

5、修改首页文件

图片源采用虚拟路径,由配置文件负责映射到真实路径
在这里插入图片描述

6、重启服务器,查看效果

首页显示了熊的图片
在这里插入图片描述

课堂练习

(1)添加CSS样式表

在WEB-INF里创建css目录,在里面创建样式文件index.css,负责首页的样式(元素全部居中,设置页面背景颜色,去掉超链接的下划线……)

(2)添加JavaScript脚本

在WEB-INF里创建js目录,在里面创建脚本文件check.js,负责登录页面的非空校验(先进行用户名非空校验,后进行密码非空校验)

任务5、请求服务器端返回的简单字符串

1、创建获取字符串控制器

获取字符串控制器 - GetStringController
在这里插入图片描述

package net.army.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 作者:梁辰兴
 * 日期:2023/5/11
 * 功能:获取字符串控制器
 */
@Controller
public class GetStringController {
    @GetMapping("/getString")
    @ResponseBody // 响应正文注解,表明返回普通字符串而不是返回逻辑视图名
    public String getString() {
        return "Spring MVC 有趣~";
    }
}

2、启动服务器,查看效果

访问:http://localhost:8080/SpringMvcDemo/getString
在这里插入图片描述

3、修改获取字符串控制器

设置返回字符串采用的编码
在这里插入图片描述

4、重启服务器,查看效果

访问:http://localhost:8080/SpringMvcDemo/getString

在这里插入图片描述

思考题:能否让返回字符串有点样式?

设置返回普通文本,返回字符串不认网页标签
在这里插入图片描述在这里插入图片描述

设置返回网页文本,返回字符串才认网页标签
在这里插入图片描述
在这里插入图片描述

任务6、请求服务器端返回的JSON数据

1、创建用户实体类

创建net.army.spring.bean包,然后在包里创建User类
在这里插入图片描述
用户实体类对应用户表
在这里插入图片描述

package net.army.spring.bean;

import java.util.Date;

/**
 * 作者:梁辰兴
 * 日期:2023/5/11
 * 功能:用户实体类
 */
public class User {
    private int id;
    private String username;
    private String password;
    private String telephone;
    private Date registerTime;
    private int popedom;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public Date getRegisterTime() {
        return registerTime;
    }

    public void setRegisterTime(Date registerTime) {
        this.registerTime = registerTime;
    }

    public int getPopedom() {
        return popedom;
    }

    public void setPopedom(int popedom) {
        this.popedom = popedom;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", telephone='" + telephone + '\'' +
                ", registerTime=" + registerTime +
                ", popedom=" + popedom +
                '}';
    }
}

2、创建获取JSON控制器

获取JSON控制器 - GetJsonController
在这里插入图片描述
此处,没有操作数据库来得到用户实体或用户列表,在后面整合SSM框架时,会涉及到如何处理。

package net.army.spring.controller;

import net.army.spring.bean.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 作者:梁辰兴
 * 日期:2023/5/11
 * 功能:
 */
@RestController // @RestController是@Controller和@ResponseBody的结合
public class GetJsonController {
    @GetMapping(value = "/getJson", produces = "application/json; charset=utf-8")
    public User getJson() {
        // 创建用户对象
        User user = new User();
        // 设置用户对象属性
        user.setId(1);
        user.setUsername("张舰艇");
        user.setPassword("123456");
        user.setTelephone("13890903456");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 返回用户对象(按照请求映射注解的参数设置转换成JSON)
        return user;
    }

    @GetMapping(value = "/getJsonArray", produces = "application/json; charset=utf-8")
    public List<User> getJsonArray() {
        // 创建用户列表
        List<User> users = new ArrayList<>();

        // 创建第1个用户
        User user = new User();
        user.setId(1);
        user.setUsername("张舰艇");
        user.setPassword("123456");
        user.setTelephone("13890903456");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 创建第2个用户
        user = new User();
        user.setId(2);
        user.setUsername("江山而");
        user.setPassword("222222");
        user.setTelephone("13856567890");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 创建第3个用户
        user = new User();
        user.setId(3);
        user.setUsername("桑清所");
        user.setPassword("333333");
        user.setTelephone("15890905678");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 返回用户列表
        return users;
    }
}

3、给项目添加JSON依赖

在pom.xml文件里添加对json的支持
在这里插入图片描述

<!--对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>                                              

4、启动服务器,查看结果

访问:http://localhost:8080/SpringMvcDemo/getJson

在这里插入图片描述
需要将刚才新添加的依赖要放到输出目录
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
重启服务器,再次访问:http://localhost:8080/SpringMvcDemo/getJson,查看效果
在这里插入图片描述
访问:http://localhost:8080/SpringMvcDemo/getJsonArray
在这里插入图片描述

任务7、请求服务器端返回的XML数据

1、创建获取XML控制器

获取XML控制器 - GetXmlController
在这里插入图片描述

package net.army.spring.controller;

import net.army.spring.bean.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 作者:梁辰兴
 * 日期:2023/5/11
 * 功能:获取XML控制器
 */
@RestController
public class GetXmlController {
    @GetMapping(value = "/getXml", produces = "application/xml; charset=utf-8")
    public List<User> getXml() {
        // 创建用户列表
        List<User> users = new ArrayList<>();

        // 创建第1个用户
        User user = new User();
        user.setId(1);
        user.setUsername("张舰艇");
        user.setPassword("123456");
        user.setTelephone("13890903456");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 创建第2个用户
        user = new User();
        user.setId(2);
        user.setUsername("江山而");
        user.setPassword("222222");
        user.setTelephone("13856567890");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 创建第3个用户
        user = new User();
        user.setId(3);
        user.setUsername("桑清所");
        user.setPassword("333333");
        user.setTelephone("15890905678");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 返回用户列表
        return users;
    }
}

2、项目添加XML的依赖

在pom.xml文件里添加对xml的支持
在这里插入图片描述

<!--对xml的支持-->
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.5.3</version>
</dependency>

在这里插入图片描述

3、将依赖添加到输出目录

在项目结构窗口里将依赖添加到输出目录
在这里插入图片描述
添加之后的情况
在这里插入图片描述

4、启动服务器,查看效果

访问:http://localhost:8080/SpringMvcDemo/getXml
在这里插入图片描述

未解决!

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

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

相关文章

预测性维护无线振动监测方案QA合集

一、虹科无线振动监测方案 虹科无线振动监测方案具有高安全性、高可靠性、全自动诊断的优势&#xff0c;广泛应用于各种旋转设备的故障诊断。虹科无线振动监测方案包括Accel 310高分辨率无线振动系统&#xff0c;用户能够实现每小时获取标量数据或每日诊断监控机器状态。借助先…

PostgreSQL(五)JDBC连接串常用参数

目录 1.单机 PostgreSQL 连接串2.集群PostgreSQL 连接串 PostgreSQL JDBC 官方驱动下载地址&#xff1a; https://jdbc.postgresql.org/download/ PostgreSQL JDBC 官方参数说明文档&#xff1a; https://jdbc.postgresql.org/documentation/use/ 驱动类&#xff1a; driver-…

yarn切换element-plus版本

yarn的安装和卸载 npm install -g yarn npm uninstall yarn -g //yarn卸载 本机的element-plus版本 "element-plus": "2.0.1", 想要切换的element-plus版本 由于我需要用到树型选择&#xff0c;所以需要升级到2.1.8 用npm卸载element-plus时报如下错误…

Scala学习(三)---函数式编程

文章目录 1.面向对象编程2. 函数式编程是什么3.函数定义4.函数参数的特殊用法5.函数至简原则6.匿名函数6.1 匿名函数化简原则 7.高阶函数7.1 函数可以作为值进行传递7.2 函数可以作为参数进行传递7.3 函数可以作为返回值进行传递7.4 柯里化写法 1.面向对象编程 Scala语言是一个…

解决Uncaught SyntaxError: Unexpected reserved word

解决思路&#xff1a; 首先&#xff0c;我运行项目报错&#xff0c;我查看了一下node版本&#xff0c;是否太低&#xff0c; 如果是14版本的话&#xff0c;那么node需要升级&#xff0c; 目前&#xff0c;node已经升级到19&#xff0c;升级到16即可&#xff0c;无需太高 更…

❤ 微信原生小程序的使用

❤ 微信原生小程序的使用 运行提示&#xff1a; Provisional headers are shown 微信小程序请求远程服务器接口时&#xff0c;响应非常慢&#xff0c;最后请求超时&#xff0c;导致失败。网络那里提示 provisional headers are shown警告 原因&#xff1a; 原因有很多&#…

什么人间悲剧,面试被刷了还要被HR怼.....

前一阵子向朋友诉苦&#xff0c;我在参加字节跳动面试的时候被面试官怼得哑口无言&#xff0c;场面让我一度十分尴尬。 印象最深的就是下面几个问题&#xff1a; 根据你以前的工作经验和学习到的测试技术&#xff0c;说说你对质量保证的理解&#xff1f; 非关系型数据库和关系型…

内网:bloodhound域渗透分析工具

目录 neo4j window下载 社区版neo4j kali下载 BloodHound BloodHound 使用 介绍&#xff1a; 利用BloodHound对庞大内网域环境进行自动化信息搜集并整理分析数据&#xff0c;提高渗透效率。BloodHound是一款可视化图形分析域环境中的关系的工具&#xff0c;…

ES 权威指南

一、检索文档 1.1 检索文档的一部分 通常&#xff0c; GET 请求将返回文档的全部&#xff0c; 存储在 _source 参数中。 但是可能你感兴趣的字段只是 title 。 请求个别字段可以使 用 _source 参数。 多个字段可以使用逗号分隔&#xff1a; GET /website/blog/123?_sourcetit…

ios 打包静态库

前言&#xff1a; 各位同学大家&#xff0c; 有段时间没有跟大家见面了。 相信很多做IOS手游sdk 的同学 都会用到静态库&#xff0c; 我们不用把我们都源代码都发给对接方 就可以把我们的逻辑跟研发都代码融合在一起 具体实现&#xff1a; 第一步 点击file 第二步创建一个p…

ES6中将非数组转换为数组的三种方法

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 我们常常想使用数组的方法&#xff0c;比如forEach&#xff0c;filter&#xff0c;又或者so…

解决 CentOS 7 内核安全漏洞 CESA-2018:3651 报错

如果你的 CentOS 7 服务器在安全测试时出现 kernel (CESA-2018:3651) 报错&#xff0c;那么您的服务器存在内核安全漏洞&#xff0c;需要更新修补。本文将介绍如何解决这个问题。 查看当前内核版本 在进行内核更新之前&#xff0c;您需要先查看当前服务器所使用的内核版本。可…

本地部署 MiniGPT-4

本地部署 MiniGPT-4 1. 什么是 MiniGPT-42. Github 地址3. 安装 MiniGPT-44. 准备预训练的 MiniGPT-4 checkpoint5. 在本地启动演示其他 1&#xff0c;安装 CUDA Toolkit 11.8其他 2&#xff0c;安装 GCC 9 版本&#xff0c;并设置为默认GCC版本其他 3(成功)&#xff0c;重新安…

Shell脚本管道符常用搭配命令(我在人间贩卖黄昏,只为收集世间温柔去见你)

文章目录 1.sort2.uniq3.tr5.split6.paste7.eval 1.sort sort命令——以行为单位对文件内容进行排序&#xff0c;也可以根据不同的数据类型来排序比较原则是从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将他们按升序输出。 sort [选项] 文件名 cat file …

Java版企业电子采购招标系统源码

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…

UNIAPP实战项目笔记65 获取当前用户购物车数据的前端和后端交互

UNIAPP实战项目笔记65 获取当前用户购物车数据的前端和后端交互 思路 构建数据库表 前端数据存入vuex中shop.js的list中 list自动同步到后端数据&#xff0c; 后端相应前端请求数据 实例截图 ##代码 前端代码首批cart.vue <template><view class"shop-cart&quo…

两种知识库软件:BookStack和DokuWiKi在Debian12中的安装

一、BookStack的安装 1. 架设 LNMP系统环境 Debian12、php8.2-fpm、 nginx 2. 下载bookstack源码 3. 按照官网说明进行手动安装。 注意1&#xff1a;composer命令的安装&#xff0c;针对php的命令 下载、更名、安装 wget https://getcomposer.org/installer mv installer…

AI文章创作助手有什么特点

在当今信息爆炸的时代&#xff0c;文章创作已成为各行业必备技能。然而&#xff0c;如何高效地创作出质量优异且独具创意的文章仍是一个艰巨的挑战。AI文章创作助手应势而生&#xff0c;利用领先的自然语言处理和知识图谱技术&#xff0c;拥有丰富的自动创作和辅助创作能力&…

江苏省国家密码管理局副局长刘书伦等一行莅临通付盾调研

5月10日下午&#xff0c;江苏省国家密码管理局副局长刘书伦&#xff0c;苏州市国家密码管理局局长李家全、副局长王安方&#xff0c;苏州工业园区管委会党政办副主任陆万良等一行莅临通付盾&#xff0c;就密码及安全相关工作进行调研指导&#xff0c;通付盾创始人、CEO汪德嘉博…

Java框架学习04(SpringBoot自动装配原理)

1、什么是 SpringBoot 自动装配&#xff1f; 2、SpringBoot 是如何实现自动装配的&#xff1f;如何实现按需加载&#xff1f; 3、如何实现一个 Starter&#xff1f; 前言 使用过 Spring 的小伙伴&#xff0c;一定有被 XML 配置统治的恐惧。即使 Spring 后面引入了基于注解的配…