当前位置: 首页 > article >正文

重构测试项目为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项目,加纳~


http://www.kler.cn/a/552458.html

相关文章:

  • C++:并发编程基础
  • STM32 定时器产生定周期方法
  • Jedis 客户端 用于java连接redis服务
  • ubuntu24通过modelscope安装ollama和deepseek R1模型
  • ICML-2024 | 具身智能如何数据自由?RoboGen:基于生成式模拟实现全自动无限数据机器人学习
  • Vue的简单入门 二
  • DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 18
  • Spring容器扩展点
  • 新手小白学习docker第十弹-------Docker微服务实战
  • LLM 概述
  • 轨迹流动,实现语音转文字
  • tailwindcss学习01
  • 【图像加密解密】空间混沌序列的图像加密解密算法复现(含相关性检验)【Matlab完整源码 2期】
  • 夜莺监控发布 v8.beta5 版本,优化 UI,新增接口认证方式便于鉴权
  • 公牛充电桩协议对接单车汽车平台交互协议外发版
  • FFmpeg + Nginx + HLS流媒体播放方案
  • 深入理解TT无人机曲线飞行和挑战卡飞行+EP机甲全面运动
  • 【Windows软件 - HeidiSQL】导出数据库
  • Linux系统资源监控:全面掌握目录、文件、内存和硬盘使用情况