重构测试项目为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并添加控制器
- 由于资源文件位置发生了改变,重启项目后会出现资源访问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>
- 由于之前的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项目,加纳~