重构测试项目为spring+springMVC+Mybatis框架

重构测试项目为spring+springMVC+Mybatis框架

背景

继上次将自动化测试时的医药管理信息系统项目用idea运行成功后,由于项目结构有些乱,一部分代码好像也重复,于是打算重新重构以下该项目,这次先使用spring+springMVC+Mybatis框架

一、设计项目目录结构

按ssm框架重新设计了目录结构,删除了一些重复代码

├─.idea
├─src
│  └─main
│      ├─java
│      │  └─mms
│      │      ├─controller
│      │      ├─interceptors
│      │      ├─mapper
│      │      ├─pojo
│      │      └─services
│      ├─resources
│      │  ├─mybatis
│      │  │  ├─mybatis-config.xml
│      │  │  └─mappers
│      │  ├─spring
│      │  │   ├─applicationContext.xml   
│      │  │   ├─applicationContext-mybatis.xml      
│      │  │   └─springMVCConfig.xml   
│      │  ├─jdbc.properties
│      │  ├─log4j.properties
│      │  └─static
│      │      ├─css
│      │      ├─images
│      │      ├─js
│      │      └─myjavascript
│      └─webapp
│          └─WEB-INF
│              └─templates
│                  ├─agency
│                  ├─client
│                  └─medicine
└─target
 

同时也修改了文件名(tabs–>templates),如果你也修改了记得将对应的代码也进行修改
在这里插入图片描述

二、将war包中的class

由于老师给的是项目打包后的war包,代码都是.class文件,我们需要使用工具JD-GUI将.class文件转换为.java文件,转换后将.java文件放入对应的包下。
在这里插入图片描述

三、修改配置文件springMVCConfig.xml并添加控制器

  1. 由于资源文件位置发生了改变,重启项目后会出现资源访问404的错误,我们需要对相关的配置文件springMVCConfig.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:p="http://www.springframework.org/schema/p"
	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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
	<!-- 注解驱动 -->
	<mvc:annotation-driven />
	
	<!-- 定义Controller的扫描包 -->
	<context:component-scan base-package="mms.controller" />

	<!-- 定义静态资源映射 -->
	<mvc:resources mapping="/static/**" location="classpath:/static/" />

	<!-- 定义视图解析器 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/templates/" />
		<property name="suffix" value=".html" />
	</bean>

	<!-- 处理静态资源被“/”所拦截的问题 -->
	<mvc:default-servlet-handler />
	<!-- 定义拦截器 -->
	<mvc:interceptors>
		
		<mvc:interceptor>
			<!-- 所有的请求都进入 -->
			
			<mvc:mapping path="/**"/>
			<!-- 不拦截登陆页面 -->
			<mvc:exclude-mapping path="/login.html" />
			<mvc:exclude-mapping path="/static/css/*" />
			<mvc:exclude-mapping path="/static/js/**" />
			<mvc:exclude-mapping path="/static/images/*" />
			<!-- 不拦截处理登陆的业务 -->
			<mvc:exclude-mapping path="/Login/loginUser" />
			
			<bean class="mms.interceptors.MyHandlerInterceptor"/>
		</mvc:interceptor>
		
	</mvc:interceptors>


</beans>
  1. 由于之前的html文件都是直接暴露在根目录下的静态资源,因此可以直接通过 URL 访问。而现在我们将html文件移动到 WEB-INF 目录下,需要视图解析器通过控制器返回视图名去访问,因此我们还需要添加控制器IndexController
package mms.controller;

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

/**
 * @author Orange peel
 * @create 2025-02-16 19:08
 */
@Controller
public class IndexController {

    @RequestMapping("/index")
    public String showIndex() {
        return "index";  // 返回的视图名称
    }

    @RequestMapping("/templates/client/Search")
    public String clientSearch() {
        return "client/Search";
    }

    @RequestMapping("/templates/agency/Search")
    public String agencySearch() {
        return "agency/Search";
    }

    @RequestMapping("/templates/medicine/Search")
    public String medicineSearch() {
        return "medicine/Search";
    }

    @RequestMapping("/templates/client/Entry")
    public String clientEntry() {
        return "client/Entry";
    }

    @RequestMapping("/templates/agency/Entry")
    public String agencyEntry() {
        return "agency/Entry";
    }

    @RequestMapping("/templates/medicine/Entry")
    public String medicineEntry() {
        return "medicine/Entry";
    }

    @RequestMapping("/templates/client/Delete")
    public String clientDelete() {
        return "client/Delete";
    }

    @RequestMapping("/templates/agency/Delete")
    public String agencyDelete() {
        return "agency/Delete";
    }

    @RequestMapping("/templates/medicine/Delete")
    public String medicineDelete() {
        return "medicine/Delete";
    }

    @RequestMapping("/templates/client/Modify")
    public String clientModify() {
        return "client/Modify";
    }

    @RequestMapping("/templates/agency/Modify")
    public String agencyModify() {
        return "agency/Modify";
    }

    @RequestMapping("/templates/medicine/Modify")
    public String medicineModify() {
        return "medicine/Modify";
    }

    @RequestMapping("/templates/client/Browse")
    public String clientBrowse() {
        return "client/Browse";
    }

    @RequestMapping("/templates/agency/Browse")
    public String agencyBrowse() {
        return "agency/Browse";
    }

    @RequestMapping("/templates/medicine/Browse")
    public String medicineBrowse() {
        return "medicine/Browse";
    }

    @RequestMapping("/templates/client/Report")
    public String clientReport() {
        return "client/Report";
    }

    @RequestMapping("/templates/agency/Report")
    public String agencyReport() {
        return "agency/Report";
    }

    @RequestMapping("/templates/medicine/Report")
    public String medicineReport() {
        return "medicine/Report";
    }

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

四、配置tomcat后直接启动即可

在这里插入图片描述

在这里插入图片描述

等下次有空再重构成springboot项目,加纳~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RAGFlow

相关链接 ragflow.io 官网 github 相关术语 RAG “Retrieval-Augmented Generation”&#xff08;RAG&#xff09;是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的深度学习模型架构。这种模型通常用于处理自然语言处理&…

java断点调试(debug)

在开发中&#xff0c;新手程序员在查找错误时, 这时老程序员就会温馨提示&#xff0c;可以用断点调试&#xff0c;一步一步的看源码执行的过程&#xff0c;从而发现错误所在。 重要提示: 断点调试过程是运行状态&#xff0c;是以对象的运行类型来执行的 断点调试介绍 断点调试是…

最新智能优化算法: 阿尔法进化(Alpha Evolution,AE)算法求解23个经典函数测试集,MATLAB代码

一、阿尔法进化算法 阿尔法进化&#xff08;Alpha Evolution&#xff0c;AE&#xff09;算法是2024年提出的一种新型进化算法&#xff0c;其核心在于通过自适应基向量和随机步长的设计来更新解&#xff0c;从而提高算法的性能。以下是AE算法的主要步骤和特点&#xff1a; 主…

llama.cpp部署 DeepSeek-R1 模型

一、llama.cpp 介绍 使用纯 C/C推理 Meta 的LLaMA模型&#xff08;及其他模型&#xff09;。主要目标llama.cpp是在各种硬件&#xff08;本地和云端&#xff09;上以最少的设置和最先进的性能实现 LLM 推理。纯 C/C 实现&#xff0c;无任何依赖项Apple 芯片是一流的——通过 A…

国产编辑器EverEdit - 如虎添翼的功能:快速选择

1 快速选择 1.1 应用场景 快速选择适用于批量选择和修改的场景&#xff0c;比如&#xff1a;变量改名。 1.2 使用方法 1.2.1 逐项快速选择 将光标放置在单词前或单词中&#xff0c;选择主菜单查找 -> 快速选择 -> 快速选择或使用快捷键Ctrl D 注&#xff1a;光标放…

基于flask+vue的租房信息可视化系统

✔️本项目利用 python 网络爬虫抓取某租房网站的租房信息&#xff0c;完成数据清洗和结构化&#xff0c;存储到数据库中&#xff0c;搭建web系统对各个市区的租金、房源信息进行展示&#xff0c;根据各种条件对租金进行预测。 1、数据概览 ​ 将爬取到的数据进行展示&#xff…

vue非组件的初学笔记

1.创建Vue实例&#xff0c;初始化渲染的核心 准备容器引包创建Vue实例new Vue() el用来指定控制的盒子data提供数据 2.插值表达式 作用利用表达式插值&#xff0c;将数据渲染到页面中 格式{{表达式}} 注意点 表达式的数据要在data中存在表达式是可计算结果的语句插值表达式…

Spring 事务及管理方式

Spring 事务管理是 Spring 框架的核心功能之一&#xff0c;它为开发者提供了一种方便、灵活且强大的方式来管理数据库事务。 1、事务的基本概念 事务是一组不可分割的操作序列&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部失败回滚&#xff0c;以确保数据的一致…

百达翡丽(Patek Philippe):瑞士制表的巅峰之作(中英双语)

百达翡丽&#xff08;Patek Philippe&#xff09;&#xff1a;瑞士制表的巅峰之作 在钟表界&#xff0c;百达翡丽&#xff08;Patek Philippe&#xff09; 一直被誉为“世界三大名表”之一&#xff0c;并且常被认为是其中的至高存在。一句“没人能真正拥有一枚百达翡丽&#x…

153~173笔记

Pinia是Vue的最新状态管理工具&#xff0c;是Vuex的替代品 提供更加简单的API&#xff08;去掉了mutation&#xff09; 提供符合&#xff0c;组合式风格的API&#xff08;和Vue3新语法统一&#xff09; 去掉了modules的概念&#xff0c;每一个store都是一个独立的模块 配合Type…

【论文笔记】Transformer^2: 自适应大型语言模型

Code repo: https://github.com/SakanaAI/self-adaptive-llms 摘要 自适应大型语言模型&#xff08;LLMs&#xff09;旨在解决传统微调方法的挑战&#xff0c;这些方法通常计算密集且难以处理多样化的任务。本文介绍了Transformer&#xff08;Transformer-Squared&#xff09;…

c语言-链表习题

1.尾插法 Q6544 涉及&#xff1a; &#xff08;1&#xff09;创建链表 struct stu* createList() {struct stu *head NULL, *tail NULL, *newNode;char choice;char name[20];float price;do {printf("请输入书名 价格&#xff1a;\n");scanf("%s %f",…

阿里云一键部署DeepSeek-V3、DeepSeek-R1模型

目录 支持的模型列表 模型部署 模型调用 WebUI使用 在线调试 API调用 关于成本 FAQ 点击部署后服务长时间等待 服务部署成功后&#xff0c;调用API返回404 请求太长导致EAS网关超时 部署完成后&#xff0c;如何在EAS的在线调试页面调试 模型部署之后没有“联网搜索…

Springboot集成Spring AI和Milvus,验证RAG构建过程

在当今信息爆炸的时代&#xff0c;如何高效地管理和利用海量的知识数据成为了企业和开发者面临的重大挑战。基于AI的大模型和检索增强生成&#xff08;RAG, Retrieval-Augmented Generation&#xff09;技术为这一难题提供了全新的解决方案。通过结合向量数据库、Embedding技术…

用React实现一个登录界面

使用React来创建一个简单的登录表单。以下是一个基本的React登录界面示例&#xff1a; 1. 设置React项目 如果你还没有一个React项目&#xff0c;你可以使用Create React App来创建一个。按照之前的步骤安装Create React App&#xff0c;然后创建一个新项目。 2. 创建登录组…

Python爬虫实战:股票分时数据抓取与存储 (1)

在金融数据分析中&#xff0c;股票分时数据是投资者和分析师的重要资源。它能够帮助我们了解股票在交易日内的价格波动情况&#xff0c;从而为交易决策提供依据。然而&#xff0c;获取这些数据往往需要借助专业的金融数据平台&#xff0c;其成本较高。幸运的是&#xff0c;通过…

通过BingAPI爬取Bing半个月内壁纸

通过BingAPI爬取Bing半个月内壁纸 一、前言二、爬虫代码三、代码说明 一、前言 爬取Bing搜索网站首页壁纸的方式主要有两种&#xff0c;第一种为间接爬取&#xff0c;即并不直接对Bing网站发起请求&#xff0c;而是对那些收集汇总了Bing壁纸的网站发起请求&#xff0c;爬取图片…

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

在Ubuntu24.04上安装Stable-Diffusion1.10.1版本

之前曾介绍过在Ubuntu22.04上安装Stable-Diffusion&#xff1a; 在Ubuntu22.04上部署Stable Diffusion_ubuntu stable dif-CSDN博客 这个安装我们使用conda python虚拟机。这次我们介绍的是在Ubuntu24.04安装Stable-Diffusion的最新版本V1.10.1&#xff08;截止到今天最新版&…

功能测试与接口测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的…