diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" new file mode 100644 index 0000000000000000000000000000000000000000..4f1b137e5bf8c816c4b99656fdda3865f3e6fe16 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" @@ -0,0 +1,943 @@ +## 课堂笔记 + +#### **综合练习(四)(博客管理系统)** + +**一、准备sql数据** + +**二、设置好 Maven 并导入依赖项** + +**三、构建好项目结构** + +**四、编写 Blog 实体类、Blog 里的各种配置类** + +**五、编写 BlogMapper 接口、BlogService 接口、BlogServiceImpl 实现类** + +**六、编写 BlogController 类** + +**七、启动Tomcat** + +**八、修改前端请求页面** + +**九、浏览器 开始测试各个请求** + +## 课后作业 + +#### **综合练习(四)(博客管理系统)** + +#### **项目结构预览** + +![image-20250106093256468](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128919.png) + +#### 具体步骤 + +##### **一、准备sql数据** + +```sql +/* + Navicat Premium Dump SQL + + Source Server : mysql + Source Server Type : MySQL + Source Server Version : 80034 (8.0.34) + Source Host : localhost:3306 + Source Schema : demo + + Target Server Type : MySQL + Target Server Version : 80034 (8.0.34) + File Encoding : 65001 + + Date: 06/01/2025 08:15:18 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for blog +-- ---------------------------- +DROP TABLE IF EXISTS `blog`; +CREATE TABLE `blog` ( + `blogId` int NOT NULL AUTO_INCREMENT, + `blogTitle` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `blogAuthor` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `blogText` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`blogId`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog +-- ---------------------------- +INSERT INTO `blog` VALUES (1, '辉辉的个人博客', '刘文辉', '这是一个博客'); +INSERT INTO `blog` VALUES (2, '陈俊杰的个人博客', '陈俊杰', '这是一个博客'); + +SET FOREIGN_KEY_CHECKS = 1; +``` + +##### **二、设置好 Maven 并导入依赖项** + +**pom.xml 依赖配置文件** + +```xml + + 4.0.0 + com.jd + myBlog + war + 1.0-SNAPSHOT + + + UTF-8 + + + + + org.springframework + spring-webmvc + 5.2.25.RELEASE + + + + + org.springframework + spring-test + 5.2.25.RELEASE + + + + + org.springframework + spring-jdbc + 5.2.25.RELEASE + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + com.fasterxml.jackson.core + jackson-databind + 2.9.0 + + + + + org.projectlombok + lombok + 1.18.36 + + + + org.mybatis + mybatis + 3.5.16 + + + + + com.mysql + mysql-connector-j + 8.3.0 + + + + junit + junit + 4.13.2 + test + + + + + com.alibaba + druid + 1.1.20 + + + + + + org.mybatis + mybatis-spring + 2.0.6 + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + / + 80 + utf-8 + + + + + +``` + +##### **三、构建好项目结构** + +![image-20250106093316939](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128929.png) + +##### **四、编写 Blog 实体类、config 里的各种配置类** + + **Blog 实体类** + +```java +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data // 自动生成 set,get,toString 方法 +@AllArgsConstructor // 自动生成 有参构造 方法 +@NoArgsConstructor // 自动生成 无参构造 方法 +public class Blog { + private int blogId; + private String blogTitle; + private String blogAuthor; + private String blogText; +} +``` + +**JdbcConfig 配置类** + +```java +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +public class JdbcConfig { + @Bean // 创建一个Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} +``` + +**MybatisConfig 配置类** + +```java +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +@MapperScan("com.mapper") // 扫包 +public class MyBatisConfig { + @Bean // 创建一个Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} +``` + +**SpringConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration // 声明为配置文件 +@ComponentScan("com.service") // 扫包 +@Import({JdbcConfig.class, MyBatisConfig.class}) // 导入类 +public class SpringConfig { +} +``` + +**SpringMvcConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration // 声明为配置文件 +@ComponentScan("com.controller") // 扫包 +@EnableWebMvc // MVC 核心注解 +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} +``` + +**WebConfig 配置类** + +```java +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} +``` + +##### **五、编写 BlogMapper 接口、BlogService 接口、BlogServiceImpl 实现类** + +**BlogMapper 接口** + +```java +package com.mapper; + +import com.entity.Blog; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper // 声明为 Mapper 配置文件 +public interface BlogMapper { + // 查询所有博客信息 + @Select("select * from blog;") + List selectAllBlogs(); + + // id 查询一个博客信息 + @Select("select * from blog where blogId = #{id};") + Blog selectOneBlogById(int id); + + // title 查询博客信息 + @Select("select * from blog where blogTitle like '%${title}%';") + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + @Delete("delete from blog where blogId = #{id};") + int deleteOneBlog(int id); + + // 新增一个博客信息 + @Insert("insert into blog (blogTitle, blogAuthor, blogText) values (#{blogTitle},#{blogAuthor},#{blogText});") + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + @Update("update blog set blogTitle= #{blogTitle},blogAuthor= #{blogAuthor}, blogText= #{blogText} where blogId = #{blogId};") + int updateOneBlog(Blog blog); +} +``` + +**BlogService 接口** + +```java +package com.service; + +import com.entity.Blog; + +import java.util.List; + +public interface BlogService { + // 查询所有博客信息 + List selectAllBlogs(); + + // id 查询一个博客信息 + Blog selectOneBlogById(int id); + + // title 查询博客信息 + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + int deleteOneBlog(int id); + + // 新增一个博客信息 + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + int updateOneBlog(Blog blog); +} +``` + +**BlogServiceImpl 实现类** + +```java +package com.service.impl; + +import com.entity.Blog; +import com.mapper.BlogMapper; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@Service // 声明为 Service 配置文件 +public class BlogServiceImpl implements BlogService { + @Autowired // 自动装配 + private BlogMapper blogMapper; // 注入接口 + + // 查询所有博客信息 + @Override + public List selectAllBlogs() { + return blogMapper.selectAllBlogs(); + } + + // id 查询一个博客信息 + @Override + public Blog selectOneBlogById(int id) { + return blogMapper.selectOneBlogById(id); + } + + // title 查询博客信息 + @Override + public List selectOneBlogByTitle(String title) { + return blogMapper.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @Override + public int deleteOneBlog(int id) { + return blogMapper.deleteOneBlog(id); + } + + // 新增一个博客信息 + @Override + public int insertOneBlog(Blog blog) { + return blogMapper.insertOneBlog(blog); + } + + // 修改一个博客信息 + @Override + public int updateOneBlog(Blog blog) { + return blogMapper.updateOneBlog(blog); + } +} +``` + +##### **六、编写 BlogController 类** + +**BlogController 类** + +```java +package com.controller; + +import com.entity.Blog; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@RestController // 声明为 RestController 配置文件 +@CrossOrigin // 跨域运行 +@RequestMapping("/blog") // 请求地址 + +public class BlogController { + @Autowired // 自动装配 + private BlogService blogService; // 注入接口 + + // 查询所有博客信息 + @GetMapping + public List selectAllBlogs() { + return blogService.selectAllBlogs(); + } + + // id 查询一个博客信息 + @GetMapping("/{id}") + public Blog selectOneBlogById(@PathVariable String id) { + return blogService.selectOneBlogById(Integer.parseInt(id)); + } + + // title 查询博客信息 + @GetMapping(params = "title") + public List selectOneBlogByTitle(String title) { + return blogService.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @DeleteMapping("/{id}") + public int deleteOneBlog(@PathVariable String id) { + return blogService.deleteOneBlog(Integer.parseInt(id)); + } + + // 新增一个博客信息 + @PostMapping + public int insertOneBlog(@RequestBody Blog blog) { + return blogService.insertOneBlog(blog); + } + + // 修改一个博客信息 + @PutMapping + public int updateOneBlog(@RequestBody Blog blog) { + return blogService.updateOneBlog(blog); + } +} +``` + +##### **七、启动Tomcat** + +![image-20250106093354463](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128936.png) + +##### **八、修改前端请求页面** + +**index.html** + +```html + + + + + + + 学生管理系统 + + + + +
+ +

博客管理系统

+
+ + + + +
+ + + + + + + + + + + + + + + + +
ID标题作者文本操作
+ +
+ + + +``` + +**styles.css** + +```css +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} +``` + +**data.js** + +```javascript +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let studentId = document.querySelector("#studentId"); +let studentName = document.querySelector("#studentName"); +let classname = document.querySelector("#classname"); +let classTeacher = document.querySelector("#classTeacher"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/blog"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?title=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return ` + ${item.blogId} + ${item.blogTitle} + ${item.blogAuthor} + ${item.blogText} + + + + + `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新博客'; + studentId.value = data.blogId; + studentName.value = data.blogTitle; + classname.value = data.blogAuthor; + classTeacher.value = data.blogText; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + studentId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!studentName.value || !classname.value || !classTeacher.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + blogId: studentId.value || null, // 如果为空,则视为添加新图书 + blogTitle: studentName.value, + blogAuthor: classname.value, + blogText: classTeacher.value + }; + + // 根据编号判断是添加还是更新 + if (studentId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加博客'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + studentId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); +``` + +##### **九、浏览器 开始测试各个请求** + +**查询所有博客信息请求并渲染展示** + +![image-20250106093434569](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128943.png) + +**用 name 查询博客信息请求并渲染展示** + +![image-20250106093506695](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128948.png) + +**用 id 查询博客信息请求** + +![image-20250106093532205](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128952.png) + +**用 id 删除博客信息请求** + +![image-20250106093607926](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128955.png) + +![image-20241230173052834](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/202412301730861.png) + +![image-20250106093625644](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736130733.png) + +**新增博客信息请求** + +![image-20250106093647461](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128957.png) + +![image-20241231170531708](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241231_1735635931.png) + +![image-20250106093709919](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128972.png) + +**修改博客信息请求** + +![image-20250106093815883](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128977.png) + +![image-20241231170614831](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241231_1735635974.png) + +![image-20250106093828905](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250106_1736128982.png) diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" new file mode 100644 index 0000000000000000000000000000000000000000..35410cacdc5e87f985c93a96520f5e11a5c822e4 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" new file mode 100644 index 0000000000000000000000000000000000000000..1a4bf9d6469c38c173b64903d64c5953272b36fc --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" new file mode 100644 index 0000000000000000000000000000000000000000..35a8929f5b91382ded2f4769860c0bb5df15bebb --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" @@ -0,0 +1,12 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + $ProjectFileDir$ + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" new file mode 100644 index 0000000000000000000000000000000000000000..aa00ffab7828f4818589659c804ec2cfd99baed3 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" new file mode 100644 index 0000000000000000000000000000000000000000..abb532ab355ddfa5ec01bd4393fcda38f88224b0 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" new file mode 100644 index 0000000000000000000000000000000000000000..79a352f1e92a127a65b42ab6185343abcbe656e0 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" new file mode 100644 index 0000000000000000000000000000000000000000..56782cab2a40d3f1192d91ef10f76f0e8f452171 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" new file mode 100644 index 0000000000000000000000000000000000000000..b37d3ae21d7f59fc5762aa82b56d804678203bfe --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" @@ -0,0 +1,103 @@ + + 4.0.0 + com.jd + myBlog + war + 1.0-SNAPSHOT + + + UTF-8 + + + + + org.springframework + spring-webmvc + 5.2.25.RELEASE + + + + + org.springframework + spring-test + 5.2.25.RELEASE + + + + + org.springframework + spring-jdbc + 5.2.25.RELEASE + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + com.fasterxml.jackson.core + jackson-databind + 2.9.0 + + + + + org.projectlombok + lombok + 1.18.36 + + + + org.mybatis + mybatis + 3.5.16 + + + + + com.mysql + mysql-connector-j + 8.3.0 + + + + junit + junit + 4.13.2 + test + + + + + com.alibaba + druid + 1.1.20 + + + + + + org.mybatis + mybatis-spring + 2.0.6 + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + / + 80 + utf-8 + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..d379cd15e8c395a3d4b6295878c6f136feb3450b --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +public class JdbcConfig { + @Bean // 创建一个Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..81472cf674173d31d7b13dac9d6048d64f8488ef --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" @@ -0,0 +1,19 @@ +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +@MapperScan("com.mapper") // 扫包 +public class MyBatisConfig { + @Bean // 创建一个Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..3047958784d1735497242a7345e9a702b81a36eb --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" @@ -0,0 +1,11 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration // 声明为配置文件 +@ComponentScan("com.service") // 扫包 +@Import({JdbcConfig.class, MyBatisConfig.class}) // 导入类 +public class SpringConfig { +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..7c074af09723a1e5601673786882faf00bb414ef --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" @@ -0,0 +1,17 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration // 声明为配置文件 +@ComponentScan("com.controller") // 扫包 +@EnableWebMvc // MVC 核心注解 +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..8d006772cdacd9c36a226c3331b09294fc500b16 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" new file mode 100644 index 0000000000000000000000000000000000000000..ca9934d466d09911f66d3b775d10503fb311753b --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" @@ -0,0 +1,55 @@ +package com.controller; + +import com.entity.Blog; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@RestController // 声明为 RestController 配置文件 +@CrossOrigin // 跨域运行 +@RequestMapping("/blog") // 请求地址 + +public class BlogController { + @Autowired // 自动装配 + private BlogService blogService; // 注入接口 + + // 查询所有博客信息 + @GetMapping + public List selectAllBlogs() { + return blogService.selectAllBlogs(); + } + + // id 查询一个博客信息 + @GetMapping("/{id}") + public Blog selectOneBlogById(@PathVariable String id) { + return blogService.selectOneBlogById(Integer.parseInt(id)); + } + + // title 查询博客信息 + @GetMapping(params = "title") + public List selectOneBlogByTitle(String title) { + return blogService.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @DeleteMapping("/{id}") + public int deleteOneBlog(@PathVariable String id) { + return blogService.deleteOneBlog(Integer.parseInt(id)); + } + + // 新增一个博客信息 + @PostMapping + public int insertOneBlog(@RequestBody Blog blog) { + return blogService.insertOneBlog(blog); + } + + // 修改一个博客信息 + @PutMapping + public int updateOneBlog(@RequestBody Blog blog) { + return blogService.updateOneBlog(blog); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" new file mode 100644 index 0000000000000000000000000000000000000000..dcf59067d9f9586835b4afe7751dca9d768869c9 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" @@ -0,0 +1,15 @@ +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data // 自动生成 set,get,toString 方法 +@AllArgsConstructor // 自动生成 有参构造 方法 +@NoArgsConstructor // 自动生成 无参构造 方法 +public class Blog { + private int blogId; + private String blogTitle; + private String blogAuthor; + private String blogText; +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" new file mode 100644 index 0000000000000000000000000000000000000000..7df0e3285f82a8d4f03aa551cfbad49d65363823 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" @@ -0,0 +1,33 @@ +package com.mapper; + +import com.entity.Blog; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper // 声明为 Mapper 配置文件 +public interface BlogMapper { + // 查询所有博客信息 + @Select("select * from blog;") + List selectAllBlogs(); + + // id 查询一个博客信息 + @Select("select * from blog where blogId = #{id};") + Blog selectOneBlogById(int id); + + // title 查询博客信息 + @Select("select * from blog where blogTitle like '%${title}%';") + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + @Delete("delete from blog where blogId = #{id};") + int deleteOneBlog(int id); + + // 新增一个博客信息 + @Insert("insert into blog (blogTitle, blogAuthor, blogText) values (#{blogTitle},#{blogAuthor},#{blogText});") + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + @Update("update blog set blogTitle= #{blogTitle},blogAuthor= #{blogAuthor}, blogText= #{blogText} where blogId = #{blogId};") + int updateOneBlog(Blog blog); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" new file mode 100644 index 0000000000000000000000000000000000000000..28e72ec7ad4329fd01b3e9663ca31d7c41b0f0c5 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" @@ -0,0 +1,25 @@ +package com.service; + +import com.entity.Blog; + +import java.util.List; + +public interface BlogService { + // 查询所有博客信息 + List selectAllBlogs(); + + // id 查询一个博客信息 + Blog selectOneBlogById(int id); + + // title 查询博客信息 + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + int deleteOneBlog(int id); + + // 新增一个博客信息 + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + int updateOneBlog(Blog blog); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" new file mode 100644 index 0000000000000000000000000000000000000000..9d140f7e322adc1b0cfb09404db794b3a5c0881b --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" @@ -0,0 +1,53 @@ +package com.service.impl; + +import com.entity.Blog; +import com.mapper.BlogMapper; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@Service // 声明为 Service 配置文件 +public class BlogServiceImpl implements BlogService { + @Autowired // 自动装配 + private BlogMapper blogMapper; // 注入接口 + + // 查询所有博客信息 + @Override + public List selectAllBlogs() { + return blogMapper.selectAllBlogs(); + } + + // id 查询一个博客信息 + @Override + public Blog selectOneBlogById(int id) { + return blogMapper.selectOneBlogById(id); + } + + // title 查询博客信息 + @Override + public List selectOneBlogByTitle(String title) { + return blogMapper.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @Override + public int deleteOneBlog(int id) { + return blogMapper.deleteOneBlog(id); + } + + // 新增一个博客信息 + @Override + public int insertOneBlog(Blog blog) { + return blogMapper.insertOneBlog(blog); + } + + // 修改一个博客信息 + @Override + public int updateOneBlog(Blog blog) { + return blogMapper.updateOneBlog(blog); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" new file mode 100644 index 0000000000000000000000000000000000000000..fb397cd628c50f8e5adf6a5a5b4adb68d76b7081 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" @@ -0,0 +1,128 @@ +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" new file mode 100644 index 0000000000000000000000000000000000000000..953d54d721926b419026e85102a031859efd306a --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" @@ -0,0 +1,62 @@ + + + + + + + 学生管理系统 + + + + +
+ +

博客管理系统

+
+ + + + +
+ + + + + + + + + + + + + + + + +
ID标题作者文本操作
+ +
+ + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" new file mode 100644 index 0000000000000000000000000000000000000000..0ac6c50226bed41b48fa66a52a1d73269106c663 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),u=a.value,s=u instanceof t;Promise.resolve(s?u.v:u).then((function(t){if(s){var n="return"===r?"return":"next";if(!u.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=u:(r=n=u,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(t){return function(){return new e(t.apply(this,arguments))}}function p(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){p(i,n,o,a,u,"next",e)}function u(e){p(i,n,o,a,u,"throw",e)}a(void 0)}))}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),N(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Z=function(e){return!_(e)&&e!==Q};var ee,te=(ee="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return ee&&e instanceof ee}),re=P("HTMLFormElement"),ne=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),oe=P("RegExp"),ie=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};$(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ae="abcdefghijklmnopqrstuvwxyz",ue="0123456789",se={DIGIT:ue,ALPHA:ae,ALPHA_DIGIT:ae+ae.toUpperCase()+ue};var ce,fe,le,pe,he=P("AsyncFunction"),de=(ce="function"==typeof setImmediate,fe=U(Q.postMessage),ce?setImmediate:fe?(le="axios@".concat(Math.random()),pe=[],Q.addEventListener("message",(function(e){var t=e.source,r=e.data;t===Q&&r===le&&pe.length&&pe.shift()()}),!1),function(e){pe.push(e),Q.postMessage(le,"*")}):function(e){return setTimeout(e)}),ve="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Q):"undefined"!=typeof process&&process.nextTick||de,ye={isArray:N,isArrayBuffer:C,isBuffer:function(e){return null!==e&&!_(e)&&null!==e.constructor&&!_(e.constructor)&&U(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||U(e.append)&&("formdata"===(t=A(e))||"object"===t&&U(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&C(e.buffer)},isString:F,isNumber:B,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:I,isReadableStream:G,isRequest:K,isResponse:V,isHeaders:X,isUndefined:_,isDate:q,isFile:M,isBlob:z,isRegExp:oe,isFunction:U,isStream:function(e){return D(e)&&U(e.pipe)},isURLSearchParams:J,isTypedArray:te,isFileList:H,forEach:$,merge:function e(){for(var t=Z(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&Y(n,o)||o;I(n[i])&&I(t)?n[i]=e(n[i],t):I(t)?n[i]=e({},t):N(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return $(t,(function(t,n){r&&U(t)?e[n]=R(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:A,kindOfTest:P,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(N(e))return e;var t=e.length;if(!B(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:re,hasOwnProperty:ne,hasOwnProp:ne,reduceDescriptors:ie,freezeMethods:function(e){ie(e,(function(t,r){if(U(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];U(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return N(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:Y,global:Q,isContextDefined:Z,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&U(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=N(r)?[]:{};return $(r,(function(t,r){var i=e(t,n+1);!_(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:he,isThenable:function(e){return e&&(D(e)||U(e))&&U(e.then)&&U(e.catch)},setImmediate:de,asap:ve};function me(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}ye.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ye.toJSONObject(this.config),code:this.code,status:this.status}}});var be=me.prototype,ge={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ge[e]={value:e}})),Object.defineProperties(me,ge),Object.defineProperty(be,"isAxiosError",{value:!0}),me.from=function(e,t,r,n,o,i){var a=Object.create(be);return ye.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),me.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function we(e){return ye.isPlainObject(e)||ye.isArray(e)}function Ee(e){return ye.endsWith(e,"[]")?e.slice(0,-2):e}function Oe(e,t,r){return e?e.concat(t).map((function(e,t){return e=Ee(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var Se=ye.toFlatObject(ye,{},null,(function(e){return/^is[A-Z]/.test(e)}));function xe(e,t,r){if(!ye.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ye.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ye.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ye.isSpecCompliantForm(t);if(!ye.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(ye.isDate(e))return e.toISOString();if(!u&&ye.isBlob(e))throw new me("Blob is not supported. Use a Buffer instead.");return ye.isArrayBuffer(e)||ye.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var u=e;if(e&&!o&&"object"===f(e))if(ye.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ye.isArray(e)&&function(e){return ye.isArray(e)&&!e.some(we)}(e)||(ye.isFileList(e)||ye.endsWith(r,"[]"))&&(u=ye.toArray(e)))return r=Ee(r),u.forEach((function(e,n){!ye.isUndefined(e)&&null!==e&&t.append(!0===a?Oe([r],n,i):null===a?r:r+"[]",s(e))})),!1;return!!we(e)||(t.append(Oe(o,r,i),s(e)),!1)}var l=[],p=Object.assign(Se,{defaultVisitor:c,convertValue:s,isVisitable:we});if(!ye.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ye.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ye.forEach(r,(function(r,i){!0===(!(ye.isUndefined(r)||null===r)&&o.call(t,r,ye.isString(i)?i.trim():i,n,p))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function Re(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Te(e,t){this._pairs=[],e&&xe(e,this,t)}var ke=Te.prototype;function je(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ae(e,t,r){if(!t)return e;var n=r&&r.encode||je;ye.isFunction(r)&&(r={serialize:r});var o,i=r&&r.serialize;if(o=i?i(t,r):ye.isURLSearchParams(t)?t.toString():new Te(t,r).toString(n)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}ke.append=function(e,t){this._pairs.push([e,t])},ke.toString=function(e){var t=e?function(t){return e.call(this,t,Re)}:Re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Pe=function(){function e(){d(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ye.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Le={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ne={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},_e="undefined"!=typeof window&&"undefined"!=typeof document,Ce="object"===("undefined"==typeof navigator?"undefined":f(navigator))&&navigator||void 0,Fe=_e&&(!Ce||["ReactNative","NativeScript","NS"].indexOf(Ce.product)<0),Ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Be=_e&&window.location.href||"http://localhost",De=u(u({},Object.freeze({__proto__:null,hasBrowserEnv:_e,hasStandardBrowserWebWorkerEnv:Ue,hasStandardBrowserEnv:Fe,navigator:Ce,origin:Be})),Ne);function Ie(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&ye.isArray(n)?n.length:i,u?(ye.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ye.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ye.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ye.isObject(e);if(i&&ye.isHTMLForm(e)&&(e=new FormData(e)),ye.isFormData(e))return o?JSON.stringify(Ie(e)):e;if(ye.isArrayBuffer(e)||ye.isBuffer(e)||ye.isStream(e)||ye.isFile(e)||ye.isBlob(e)||ye.isReadableStream(e))return e;if(ye.isArrayBufferView(e))return e.buffer;if(ye.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return xe(e,new De.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return De.isNode&&ye.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ye.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return xe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ye.isString(e))try{return(t||JSON.parse)(e),ye.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||qe.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ye.isResponse(e)||ye.isReadableStream(e))return e;if(e&&ye.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw me.from(e,me.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:De.classes.FormData,Blob:De.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ye.forEach(["delete","get","head","post","put","patch"],(function(e){qe.headers[e]={}}));var Me=qe,ze=ye.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),He=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function We(e){return!1===e||null==e?e:ye.isArray(e)?e.map(We):String(e)}function Ge(e,t,r,n,o){return ye.isFunction(n)?n.call(this,t,r):(o&&(t=r),ye.isString(t)?ye.isString(n)?-1!==t.indexOf(n):ye.isRegExp(n)?n.test(t):void 0:void 0)}var Ke=function(e,t){function r(e){d(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Je(t);if(!o)throw new Error("header name must be a non-empty string");var i=ye.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=We(e))}var i=function(e,t){return ye.forEach(e,(function(e,r){return o(e,r,t)}))};if(ye.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ye.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&ze[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ye.isHeaders(e)){var a,u=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=O(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.entries());try{for(u.s();!(a=u.n()).done;){var s=b(a.value,2),c=s[0];o(s[1],c,r)}}catch(e){u.e(e)}finally{u.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ye.isFunction(t))return t.call(this,n,r);if(ye.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ge(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Je(e)){var o=ye.findKey(r,e);!o||t&&!Ge(0,r[o],o,t)||(delete r[o],n=!0)}}return ye.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ge(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ye.forEach(this,(function(n,o){var i=ye.findKey(r,o);if(i)return t[i]=We(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=We(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(r=s,n||(n=setTimeout((function(){n=null,a(r)}),i-t)))},function(){return r&&a(r)}]}ye.inherits(Ye,me,{__CANCEL__:!0});var tt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ze(50,250);return et((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,u=i-n,s=o(u);n=i;var c=m({loaded:i,total:a,progress:a?i/a:void 0,bytes:u,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:r,lengthComputable:null!=a},t?"download":"upload",!0);e(c)}),r)},rt=function(e,t){var r=null!=e;return[function(n){return t[0]({lengthComputable:r,total:e,loaded:n})},t[1]]},nt=function(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n1?t-1:0),n=1;n1?"since :\n"+u.map(At).join("\n"):" "+At(u[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ye(null,e)}function _t(e){return Nt(e),e.headers=Ve.from(e.headers),e.data=Xe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Lt(e.adapter||Me.adapter)(e).then((function(t){return Nt(e),t.data=Xe.call(e,e.transformResponse,t),t.headers=Ve.from(t.headers),t}),(function(t){return $e(t)||(Nt(e),t&&t.response&&(t.response.data=Xe.call(e,e.transformResponse,t.response),t.response.headers=Ve.from(t.response.headers))),Promise.reject(t)}))}var Ct="1.7.9",Ft={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ft[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ut={};Ft.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.9] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new me(n(o," has been removed"+(t?" in "+t:"")),me.ERR_DEPRECATED);return t&&!Ut[o]&&(Ut[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},Ft.spelling=function(e){return function(t,r){return console.warn("".concat(r," is likely a misspelling of ").concat(e)),!0}};var Bt={assertOptions:function(e,t,r){if("object"!==f(e))throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new me("option "+i+" must be "+s,me.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}},validators:Ft},Dt=Bt.validators,It=function(){function e(t){d(this,e),this.defaults=t,this.interceptors={request:new Pe,response:new Pe}}var t;return y(e,[{key:"request",value:(t=h(s().mark((function e(t,r){var n,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){n={},Error.captureStackTrace?Error.captureStackTrace(n):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=st(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Bt.assertOptions(n,{silentJSONParsing:Dt.transitional(Dt.boolean),forcedJSONParsing:Dt.transitional(Dt.boolean),clarifyTimeoutError:Dt.transitional(Dt.boolean)},!1),null!=o&&(ye.isFunction(o)?t.paramsSerializer={serialize:o}:Bt.assertOptions(o,{encode:Dt.function,serialize:Dt.function},!0)),Bt.assertOptions(t,{baseUrl:Dt.spelling("baseURL"),withXsrfToken:Dt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ye.merge(i.common,i[t.method]);i&&ye.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=Ve.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,u.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,p=0;if(!s){var h=[_t.bind(this),void 0];for(h.unshift.apply(h,u),h.push.apply(h,f),l=h.length,c=Promise.resolve(t);p0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ye(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,r=function(e){t.abort(e)};return this.subscribe(r),t.signal.unsubscribe=function(){return e.unsubscribe(r)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}(),zt=Mt;var Ht={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ht).forEach((function(e){var t=b(e,2),r=t[0],n=t[1];Ht[n]=r}));var Jt=Ht;var Wt=function e(t){var r=new qt(t),n=R(qt.prototype.request,r);return ye.extend(n,qt.prototype,r,{allOwnKeys:!0}),ye.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(st(t,r))},n}(Me);return Wt.Axios=qt,Wt.CanceledError=Ye,Wt.CancelToken=zt,Wt.isCancel=$e,Wt.VERSION=Ct,Wt.toFormData=xe,Wt.AxiosError=me,Wt.Cancel=Wt.CanceledError,Wt.all=function(e){return Promise.all(e)},Wt.spread=function(e){return function(t){return e.apply(null,t)}},Wt.isAxiosError=function(e){return ye.isObject(e)&&!0===e.isAxiosError},Wt.mergeConfig=st,Wt.AxiosHeaders=Ve,Wt.formToJSON=function(e){return Ie(ye.isHTMLForm(e)?new FormData(e):e)},Wt.getAdapter=Lt,Wt.HttpStatusCode=Jt,Wt.default=Wt,Wt})); +//# sourceMappingURL=axios.min.js.map diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" new file mode 100644 index 0000000000000000000000000000000000000000..86618411d382c78058ee394bef2501c5cbece336 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" @@ -0,0 +1,188 @@ +(function () { + // 私有变量 + const addBtn = document.querySelector('#add-book-btn'); + const modal = document.querySelector('.modal'); + const closeModalBtn = document.querySelector('#close-form-btn'); + const tbody = document.querySelector('tbody'); + const form = document.querySelector('#book-form'); + const searchBox = document.querySelector("#search-box"); + const formTitle = document.querySelector("#form-title"); + + // 表单选项 + let itemId = document.querySelector("#book-id"); + let itemName = document.querySelector("#book-name"); + let itemAuthor = document.querySelector("#author"); + let itemPublisher = document.querySelector("#publisher"); + + + + let data = []; + // api接口设置 + const API_BASE_URL = "http://localhost/book"; + + // 搜索图书# 修改bookName + function searchBooks(query) { + axios.get(API_BASE_URL + `?bookName=${query}`).then(res => { + if (res.data.code === 500) { + alert(`${res.data.msg}`); + return; + } + data = res.data.data; + renderTable(data); + }); + } + + // 渲染表格数据 # 修改item.后面的属性名称 + function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return ` + ${item.bookId} + ${item.bookName} + ${item.bookAuthor} + ${item.bookPublisher} + + + + + `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); + } + + // 更新图书时,先回显要被修改的旧数据 + function updateBook(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data.data; + showOrCloseModal(); + form.reset(); + // ########以下内容要修改########## + + formTitle.innerText = '更新图书'; + itemId.value = data.bookId; + itemName.value = data.bookName; + itemAuthor.value = data.bookAuthor; + itemPublisher.value = data.bookPublisher; + + // ######以上内容要修改##### + }); + } + + + // 处理表格点击事件 + function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteBook(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + updateBook(e.target.closest('tr').dataset.id); + } + } + + // 开关浮层 + function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + document.querySelector("#book-id").value = null; // 重置当前编辑的图书ID + } + + // 获取列表 + function fetchBooks() { + axios.get(API_BASE_URL).then(res => { + data = res.data.data; + renderTable(data); + }); + + } + + // 根据id删除 + function deleteBook(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + if (res.data.code === 500) return alert(res.data.msg) + alert(res.data.data); + fetchBooks(); + }); + } + + + + // 点击保存按钮:添加或更新图书 + function saveBook() { + // 获取表单项的值 + let bookId = itemId.value; + const bookName = itemName.value; + const bookAuthor = itemAuthor.value; + const bookPublisher = itemPublisher.value; + + // 非空判断 + if (!bookName || !bookAuthor || !bookPublisher) { + alert("所有字段都必须填写!"); + return; + } + + // 表单项的值,封装成一个对象 + const book = { + bookId: bookId || null, // 如果为空,则视为添加新图书 + bookName: bookName, + bookAuthor: bookAuthor, + bookPublisher: bookPublisher + }; + + // 根据编号判断是添加还是更新 + if (bookId) { + axios.put(API_BASE_URL, book).then(res => { + res.data.code === 200 ? alert(res.data.data) : alert(res.data.msg); + fetchBooks(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, book).then(res => { + res.data.code === 200 ? alert(res.data.data) : alert(res.data.msg); + fetchBooks(); + showOrCloseModal(false); + }) + } + + } + + + + // 初始化事件监听器 + function init() { + addBtn.addEventListener('click', () => { + form.reset(); + formTitle.innerText = '添加图书'; + bookId = null; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + bookId = null; // 重置当前编辑的图书ID + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + saveBook(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + searchBooks(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载图书列表 + fetchBooks(); + } + + // 执行初始化函数 + init(); +})(); \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" new file mode 100644 index 0000000000000000000000000000000000000000..915bee6adb0a36273026fa05446020bbd11eff4a --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" @@ -0,0 +1,182 @@ +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let studentId = document.querySelector("#studentId"); +let studentName = document.querySelector("#studentName"); +let classname = document.querySelector("#classname"); +let classTeacher = document.querySelector("#classTeacher"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/blog"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?title=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return ` + ${item.blogId} + ${item.blogTitle} + ${item.blogAuthor} + ${item.blogText} + + + + + `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新博客'; + studentId.value = data.blogId; + studentName.value = data.blogTitle; + classname.value = data.blogAuthor; + classTeacher.value = data.blogText; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + studentId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!studentName.value || !classname.value || !classTeacher.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + blogId: studentId.value || null, // 如果为空,则视为添加新图书 + blogTitle: studentName.value, + blogAuthor: classname.value, + blogText: classTeacher.value + }; + + // 根据编号判断是添加还是更新 + if (studentId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加博客'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + studentId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..38f06e9361e3d7f2cea798f07c5af6ec242d1e6f Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..df19704766d61b86809b866f4e1df696b6cf1e8a Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..c35e773c71b57e52bba4497f7a76fdbda8b8963e Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringMvcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringMvcConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..42c04c91aba8d4b7575ae93f082bd26cc41f8c08 Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringMvcConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..1ac063d11c651c156745d862db8ae380201946db Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/controller/BlogController.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/controller/BlogController.class" new file mode 100644 index 0000000000000000000000000000000000000000..55d6e2ad7e534ac69322d39d0b2abdfd5fe76b3b Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/controller/BlogController.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" new file mode 100644 index 0000000000000000000000000000000000000000..af1cbdbf2ac0b573c52e29badca3dd0f31f92d4c Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/mapper/BlogMapper.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/mapper/BlogMapper.class" new file mode 100644 index 0000000000000000000000000000000000000000..d27f2627d1bac1631b53cc29df7408efdc036d97 Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/mapper/BlogMapper.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" new file mode 100644 index 0000000000000000000000000000000000000000..597922c19df63ffc80e960e5d177d6b873b5e4ac Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" new file mode 100644 index 0000000000000000000000000000000000000000..7086e789782bd30e164afbe77efec052d8684c2d Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" new file mode 100644 index 0000000000000000000000000000000000000000..789825be3c7fe6fa7d0e8b839ffd215830ad38b3 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" @@ -0,0 +1,10 @@ +com\config\WebConfig.class +com\service\impl\BlogServiceImpl.class +com\controller\BlogController.class +com\config\JdbcConfig.class +com\config\MyBatisConfig.class +com\entity\Blog.class +com\service\BlogService.class +com\mapper\BlogMapper.class +com\config\SpringConfig.class +com\config\SpringMvcConfig.class diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" new file mode 100644 index 0000000000000000000000000000000000000000..e15818285901de106b3d2c8a88db03920ef32d67 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" @@ -0,0 +1,10 @@ +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\JdbcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\MyBatisConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringMvcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\WebConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\controller\BlogController.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\entity\Blog.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\mapper\BlogMapper.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\BlogService.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\impl\BlogServiceImpl.java diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" new file mode 100644 index 0000000000000000000000000000000000000000..76c9512b2c1b9690adaae447f598479f35ee7ebb --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" @@ -0,0 +1,64 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.FileHandler.level = FINE +1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.FileHandler.prefix = catalina. + +2localhost.org.apache.juli.FileHandler.level = FINE +2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.FileHandler.prefix = localhost. + +3manager.org.apache.juli.FileHandler.level = FINE +3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.FileHandler.prefix = manager. + +4host-manager.org.apache.juli.FileHandler.level = FINE +4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.FileHandler.prefix = host-manager. + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +#org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages in TldLocationsCache, uncomment the following line: +#org.apache.jasper.compiler.TldLocationsCache.level = FINE diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" new file mode 100644 index 0000000000000000000000000000000000000000..7114f5d1a513080c465178862bab02e1aab035ed --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" @@ -0,0 +1,26 @@ + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" new file mode 100644 index 0000000000000000000000000000000000000000..cc8383cbf46534c3025e003854e5a03e257b6b40 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" @@ -0,0 +1,4283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/octet-stream + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + eml + message/rfc822 + + + emma + application/emma+xml + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gbr + application/rpki-ghostbusters + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/octet-stream + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/octet-stream + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/octet-stream + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + ngdat + application/vnd.nokia.n-gage.data + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsf + application/vnd.lotus-notes + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + application/x-font-otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sig + application/pgp-signature + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + src + application/x-wais-source + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + application/x-font-ttf + + + ttf + application/x-font-ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-ms-wmz + + + woff + application/x-font-woff + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + application/vnd.hzn-3d-crossword + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + Z + application/x-compress + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" new file mode 100644 index 0000000000000000000000000000000000000000..773f569322b3ede1fae2489ed1118eae8feffc08 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" @@ -0,0 +1,103 @@ +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-1 35 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-2 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/data.js HTTP/1.1" 200 5206 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /favicon.ico HTTP/1.1" 404 973 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-1 96 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-6 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-10 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:25 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 698 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:09 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-1 774 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:12 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-3 20 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:26 +0800] "GET /blog?title=1 HTTP/1.1" 200 12 http-bio-80-exec-4 102 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:13 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-6 17 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:50 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-10 8 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-10 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/data.js HTTP/1.1" 200 5193 http-bio-80-exec-4 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET / HTTP/1.1" 200 2136 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:54 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 10 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:01 +0800] "GET /blog?title=%E8%BE%89%E8%BE%89 HTTP/1.1" 200 118 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:13 +0800] "GET /blog/2 HTTP/1.1" 200 119 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 233 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 9 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:32 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:35 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-4 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:37 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-4 47 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:03 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-4 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:04 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:07 +0800] "GET /blog/3 HTTP/1.1" 200 119 http-bio-80-exec-4 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:12 +0800] "DELETE /blog/3 HTTP/1.1" 500 4607 http-bio-80-exec-4 20 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 11 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 48 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-3 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-2 14 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 776 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:00 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-6 56 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:01 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:04 +0800] "DELETE /blog/4 HTTP/1.1" 200 11 http-bio-80-exec-8 21 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:05 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-9 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-1 132 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-3 24 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 1045 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-8 12 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 15 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:53 +0800] "GET /blog?title=%E9%99%88 HTTP/1.1" 200 121 http-bio-80-exec-10 77 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:24 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-10 8 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 12 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:18 +0800] "DELETE /blog/2 HTTP/1.1" 200 11 http-bio-80-exec-10 237 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:19 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 13 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-10 14 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:55 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-10 48 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:37:23 +0800] "GET /blog/5 HTTP/1.1" 200 119 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:19 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:20 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 13 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-1 8 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224).md" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224).md" new file mode 100644 index 0000000000000000000000000000000000000000..f5911347c06f726a75ee20db6d92ae88853df690 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224).md" @@ -0,0 +1,921 @@ +## 课堂笔记 + +#### **综合练习(五)(学校管理系统)** + +**一、准备sql数据** + +**二、设置好 Maven 并导入依赖项** + +**三、构建好项目结构** + +**四、编写 School 实体类、config 里的各种配置类** + +**五、编写 SchoolMapper 接口、SchoolService 接口、SchoolServiceImpl 实现类** + +**六、编写 SchoolController 类** + +**七、启动 Tomcat** + +**八、修改前端请求页面** + +**九、浏览器 开始测试各个请求** + +## 课后作业 + +#### **综合练习(五)(学校管理系统)** + +#### **项目结构预览** + +![image-20250107161202579](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237522.png) + +#### 具体步骤 + +##### **一、准备sql数据** + +```sql +drop database if exists demo; +create database demo charset utf8; +use demo; +# schoolId 学校编号, +create table school( + schoolId int PRIMARY key auto_increment, # schoolId 学校编号 + schoolName VARCHAR(50), # schoolName 学校名称 + schoolAddress VARCHAR(50),# schoolAddress 学校地址 + schoolPhone VARCHAR(255)# schoolPhone 学校电话 +) + +insert into school ( schoolName,schoolAddress,schoolPhone )values + ('清华大学','北京','10086'), + ('北京大学','北京','10010'), + ('闽西大学','闽西','12306'), + ('龙岩学院','龙岩','12315') +``` + +##### **二、设置好 Maven 并导入依赖项** + +**pom.xml 依赖配置文件** + +```xml + + 4.0.0 + com.jd + mySchool + war + 1.0-SNAPSHOT + + + UTF-8 + + + + + org.springframework + spring-webmvc + 5.2.25.RELEASE + + + + + org.springframework + spring-test + 5.2.25.RELEASE + + + + + org.springframework + spring-jdbc + 5.2.25.RELEASE + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + com.fasterxml.jackson.core + jackson-databind + 2.9.0 + + + + + org.projectlombok + lombok + 1.18.36 + + + + org.mybatis + mybatis + 3.5.16 + + + + + com.mysql + mysql-connector-j + 8.3.0 + + + + junit + junit + 4.13.2 + test + + + + + com.alibaba + druid + 1.1.20 + + + + + + org.mybatis + mybatis-spring + 2.0.6 + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + / + 80 + utf-8 + + + + + +``` + +##### **三、构建好项目结构** + +![image-20250107161250234](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237570.png) + +##### **四、编写 School 实体类、config 里的各种配置类** + + **School 实体类** + +```java +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class School { + private int schoolId; + private String schoolName; + private String schoolAddress; + private String schoolPhone; +} +``` + +**JdbcConfig 配置类** + +```java +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} +``` + +**MybatisConfig 配置类** + +```java +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +@MapperScan("com.mapper") +public class MybatisConfig { + @Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} +``` + +**SpringConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan("com.service") +@Import({JdbcConfig.class, MybatisConfig.class}) +public class SpringConfig { + +} +``` + +**SpringMvcConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan("com.controller") +@EnableWebMvc +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} +``` + +**WebConfig 配置类** + +```java +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} +``` + +##### **五、编写 SchoolMapper 接口、SchoolService 接口、SchoolServiceImpl 实现类** + +**SchoolMapper 接口** + +```java +package com.mapper; + +import com.entity.School; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface SchoolMapper { + // 查询所有学校信息 + @Select("select * from school;") + List selectAllSchools(); + + // schoolName 查询学校信息 + @Select("select * from school where schoolName like '%${schoolName}%';") + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + @Select("select * from school where schoolId = #{schoolId};") + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + @Delete("delete from school where schoolId = #{schoolId};") + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + @Insert("insert into school (schoolName, schoolAddress, schoolPhone) VALUES (#{schoolName},#{schoolAddress},#{schoolPhone});") + int insertSchool(School school); + + // 修改学校信息 + @Update("update school set schoolName = #{schoolName},schoolAddress = #{schoolAddress},schoolPhone = #{schoolPhone} where schoolId = #{schoolId};") + int updateSchool(School school); +} +``` + +**SchoolService 接口** + +```java +package com.service; + +import com.entity.School; + +import java.util.List; + +public interface SchoolService { + // 查询所有学校信息 + List selectAllSchools(); + + // schoolName 查询学校信息 + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + int insertSchool(School school); + + // 修改学校信息 + int updateSchool(School school); +} +``` + +**SchoolServiceImpl 实现类** + +```java +package com.service.impl; + +import com.entity.School; +import com.mapper.SchoolMapper; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data +@Service +public class SchoolServiceImpl implements SchoolService { + @Autowired + private SchoolMapper schoolMapper; + + @Override + // 查询所有学校信息 + public List selectAllSchools() { + return schoolMapper.selectAllSchools(); + } + + @Override + // schoolName 查询学校信息 + public List selectSchoolBySchoolName(String schoolName) { + return schoolMapper.selectSchoolBySchoolName(schoolName); + } + + @Override + // id 查询学校信息 + public School selectSchoolBySchoolId(int schoolId) { + return schoolMapper.selectSchoolBySchoolId(schoolId); + } + + @Override + // id 删除学校信息 + public int deleteSchoolBySchoolId(int schoolId) { + return schoolMapper.deleteSchoolBySchoolId(schoolId); + } + + @Override + // 新增学校信息 + public int insertSchool(School school) { + return schoolMapper.insertSchool(school ); + } + + @Override + // 修改学校信息 + public int updateSchool(School school) { + return schoolMapper.updateSchool(school); + } +} +``` + +##### **六、编写 SchoolController 类** + +**SchoolController 类** + +```java +package com.controller; + +import com.entity.School; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data +@RestController +@RequestMapping("/school") +@CrossOrigin +public class SchoolController { + @Autowired + private SchoolService schoolService; + + // 查询所有学校信息 + @GetMapping + public List selectAllSchools() { + return schoolService.selectAllSchools(); + } + + // schoolName 查询学校信息 + @GetMapping(params = "schoolName") + public List selectSchoolBySchoolName(String schoolName) { + return schoolService.selectSchoolBySchoolName(schoolName); + } + + // id 查询学校信息 + @GetMapping("/{schoolId}") + public School selectSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.selectSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // id 删除学校信息 + @DeleteMapping("/{schoolId}") + public int deleteSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.deleteSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // 新增学校信息 + @PostMapping + public int insertSchool(@RequestBody School school) { + return schoolService.insertSchool(school ); + } + + // 修改学校信息 + @PutMapping + public int updateSchool(@RequestBody School school) { + return schoolService.updateSchool(school); + } +} +``` + +##### **七、启动 Tomcat** + +![image-20250107161505066](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237705.png) + +##### **八、修改前端请求页面** + +**index.html** + +```html + + + + + + + 学校管理系统 + + + + +
+ +

学校管理系统

+
+ + + + +
+ + + + + + + + + + + + + + + + +
学校编号学校名称学校地址学校电话操作
+ +
+ + + +``` + +**styles.css** + +```css +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} +``` + +**data.js** + +```javascript +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let schoolId = document.querySelector("#schoolId"); +let schoolName = document.querySelector("#schoolName"); +let schoolAddress = document.querySelector("#schoolAddress"); +let schoolPhone = document.querySelector("#schoolPhone"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/school"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?schoolName=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return ` + ${item.schoolId} + ${item.schoolName} + ${item.schoolAddress} + ${item.schoolPhone} + + + + + `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新学校'; + schoolId.value = data.schoolId; + schoolName.value = data.schoolName; + schoolAddress.value = data.schoolAddress; + schoolPhone.value = data.schoolPhone; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + schoolId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!schoolName.value || !schoolAddress.value || !schoolPhone.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + schoolId: schoolId.value || null, // 如果为空,则视为添加新图书 + schoolName: schoolName.value, + schoolAddress: schoolAddress.value, + schoolPhone: schoolPhone.value + }; + + // 根据编号判断是添加还是更新 + if (schoolId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加学校'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + schoolId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); +``` + +##### **九、浏览器 开始测试各个请求** + +**查询所有学校信息请求并渲染展示** + +![image-20250107161546654](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237746.png) + +**用 name 查询学校信息请求并渲染展示** + +![image-20250107161609306](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237769.png) + +**用 id 查询学校信息请求** + +![image-20250107161625088](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237785.png) + +**用 id 删除学校信息请求** + +![image-20250107161703141](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237823.png) + +![image-20241230173052834](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/202412301730861.png) + +![image-20250107161719848](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237840.png) + +**新增学校信息请求** + +![image-20250107161803241](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237883.png) + +![image-20241231170531708](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241231_1735635931.png) + +![image-20250107161822593](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237902.png) + +**修改学校信息请求** + +![image-20250107161901345](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237941.png) + +![image-20241231170614831](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241231_1735635974.png) + +![image-20250107161917710](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20250107_1736237957.png) diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/.gitignore" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/.gitignore" new file mode 100644 index 0000000000000000000000000000000000000000..35410cacdc5e87f985c93a96520f5e11a5c822e4 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/.gitignore" @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/MySchool.iml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/MySchool.iml" new file mode 100644 index 0000000000000000000000000000000000000000..d6ebd4805981b8400db3e3291c74a743fef9a824 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/MySchool.iml" @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/compiler.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/compiler.xml" new file mode 100644 index 0000000000000000000000000000000000000000..124548855429a1596a68cc617583974d37ffffe2 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/compiler.xml" @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/dataSources.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/dataSources.xml" new file mode 100644 index 0000000000000000000000000000000000000000..58dc1390f1a1b8035f061570243cddd5d745e032 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/dataSources.xml" @@ -0,0 +1,12 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + $ProjectFileDir$ + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/encodings.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/encodings.xml" new file mode 100644 index 0000000000000000000000000000000000000000..aa00ffab7828f4818589659c804ec2cfd99baed3 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/encodings.xml" @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/jarRepositories.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/jarRepositories.xml" new file mode 100644 index 0000000000000000000000000000000000000000..abb532ab355ddfa5ec01bd4393fcda38f88224b0 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/jarRepositories.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/misc.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/misc.xml" new file mode 100644 index 0000000000000000000000000000000000000000..79a352f1e92a127a65b42ab6185343abcbe656e0 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/misc.xml" @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/sqldialects.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/sqldialects.xml" new file mode 100644 index 0000000000000000000000000000000000000000..56782cab2a40d3f1192d91ef10f76f0e8f452171 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/sqldialects.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/pom.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/pom.xml" new file mode 100644 index 0000000000000000000000000000000000000000..0a240fe35a54f19dfd7d8fd764931c93574e6d18 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/pom.xml" @@ -0,0 +1,103 @@ + + 4.0.0 + com.jd + mySchool + war + 1.0-SNAPSHOT + + + UTF-8 + + + + + org.springframework + spring-webmvc + 5.2.25.RELEASE + + + + + org.springframework + spring-test + 5.2.25.RELEASE + + + + + org.springframework + spring-jdbc + 5.2.25.RELEASE + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + com.fasterxml.jackson.core + jackson-databind + 2.9.0 + + + + + org.projectlombok + lombok + 1.18.36 + + + + org.mybatis + mybatis + 3.5.16 + + + + + com.mysql + mysql-connector-j + 8.3.0 + + + + junit + junit + 4.13.2 + test + + + + + com.alibaba + druid + 1.1.20 + + + + + + org.mybatis + mybatis-spring + 2.0.6 + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + / + 80 + utf-8 + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/JdbcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/JdbcConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..4a99ba426ebc57de541846b1583f8a9d619b6d42 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/JdbcConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/MybatisConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/MybatisConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..d82648057dfc5b62fd04a4d1ed2580bcd74df0da --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/MybatisConfig.java" @@ -0,0 +1,19 @@ +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +@MapperScan("com.mapper") +public class MybatisConfig { + @Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..11385e4478523b9af8b7773c2c79fdccf7c0aa63 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringConfig.java" @@ -0,0 +1,12 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan("com.service") +@Import({JdbcConfig.class, MybatisConfig.class}) +public class SpringConfig { + +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringMvcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringMvcConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..894b989f2e55dc4a43f1ba480d58c2eba01cde42 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringMvcConfig.java" @@ -0,0 +1,17 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan("com.controller") +@EnableWebMvc +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/WebConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/WebConfig.java" new file mode 100644 index 0000000000000000000000000000000000000000..8d006772cdacd9c36a226c3331b09294fc500b16 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/WebConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/controller/SchoolController.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/controller/SchoolController.java" new file mode 100644 index 0000000000000000000000000000000000000000..b00d4c6445f020c5e8b460c6932c4d68cb66ccd7 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/controller/SchoolController.java" @@ -0,0 +1,54 @@ +package com.controller; + +import com.entity.School; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data +@RestController +@RequestMapping("/school") +@CrossOrigin +public class SchoolController { + @Autowired + private SchoolService schoolService; + + // 查询所有学校信息 + @GetMapping + public List selectAllSchools() { + return schoolService.selectAllSchools(); + } + + // schoolName 查询学校信息 + @GetMapping(params = "schoolName") + public List selectSchoolBySchoolName(String schoolName) { + return schoolService.selectSchoolBySchoolName(schoolName); + } + + // id 查询学校信息 + @GetMapping("/{schoolId}") + public School selectSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.selectSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // id 删除学校信息 + @DeleteMapping("/{schoolId}") + public int deleteSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.deleteSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // 新增学校信息 + @PostMapping + public int insertSchool(@RequestBody School school) { + return schoolService.insertSchool(school ); + } + + // 修改学校信息 + @PutMapping + public int updateSchool(@RequestBody School school) { + return schoolService.updateSchool(school); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/entity/School.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/entity/School.java" new file mode 100644 index 0000000000000000000000000000000000000000..c5faab88537fb32fd06decb551a969dfda21e20a --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/entity/School.java" @@ -0,0 +1,15 @@ +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class School { + private int schoolId; + private String schoolName; + private String schoolAddress; + private String schoolPhone; +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/mapper/SchoolMapper.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/mapper/SchoolMapper.java" new file mode 100644 index 0000000000000000000000000000000000000000..73083f9b7db3d661a3695a228e15ca8df50019e5 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/mapper/SchoolMapper.java" @@ -0,0 +1,33 @@ +package com.mapper; + +import com.entity.School; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface SchoolMapper { + // 查询所有学校信息 + @Select("select * from school;") + List selectAllSchools(); + + // schoolName 查询学校信息 + @Select("select * from school where schoolName like '%${schoolName}%';") + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + @Select("select * from school where schoolId = #{schoolId};") + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + @Delete("delete from school where schoolId = #{schoolId};") + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + @Insert("insert into school (schoolName, schoolAddress, schoolPhone) VALUES (#{schoolName},#{schoolAddress},#{schoolPhone});") + int insertSchool(School school); + + // 修改学校信息 + @Update("update school set schoolName = #{schoolName},schoolAddress = #{schoolAddress},schoolPhone = #{schoolPhone} where schoolId = #{schoolId};") + int updateSchool(School school); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/SchoolService.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/SchoolService.java" new file mode 100644 index 0000000000000000000000000000000000000000..75ae72fef0065cb98e454a1b85e496b03e0cc077 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/SchoolService.java" @@ -0,0 +1,25 @@ +package com.service; + +import com.entity.School; + +import java.util.List; + +public interface SchoolService { + // 查询所有学校信息 + List selectAllSchools(); + + // schoolName 查询学校信息 + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + int insertSchool(School school); + + // 修改学校信息 + int updateSchool(School school); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/impl/SchoolServiceImpl.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/impl/SchoolServiceImpl.java" new file mode 100644 index 0000000000000000000000000000000000000000..1d6bc6e7113721f346238a203d861e541f07ccb6 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/impl/SchoolServiceImpl.java" @@ -0,0 +1,53 @@ +package com.service.impl; + +import com.entity.School; +import com.mapper.SchoolMapper; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data +@Service +public class SchoolServiceImpl implements SchoolService { + @Autowired + private SchoolMapper schoolMapper; + + @Override + // 查询所有学校信息 + public List selectAllSchools() { + return schoolMapper.selectAllSchools(); + } + + @Override + // schoolName 查询学校信息 + public List selectSchoolBySchoolName(String schoolName) { + return schoolMapper.selectSchoolBySchoolName(schoolName); + } + + @Override + // id 查询学校信息 + public School selectSchoolBySchoolId(int schoolId) { + return schoolMapper.selectSchoolBySchoolId(schoolId); + } + + @Override + // id 删除学校信息 + public int deleteSchoolBySchoolId(int schoolId) { + return schoolMapper.deleteSchoolBySchoolId(schoolId); + } + + @Override + // 新增学校信息 + public int insertSchool(School school) { + return schoolMapper.insertSchool(school ); + } + + @Override + // 修改学校信息 + public int updateSchool(School school) { + return schoolMapper.updateSchool(school); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/css/styles.css" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/css/styles.css" new file mode 100644 index 0000000000000000000000000000000000000000..fb397cd628c50f8e5adf6a5a5b4adb68d76b7081 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/css/styles.css" @@ -0,0 +1,128 @@ +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/index.html" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/index.html" new file mode 100644 index 0000000000000000000000000000000000000000..4508626bc762e51f725c1deb5a3e49d4c197b76e --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/index.html" @@ -0,0 +1,62 @@ + + + + + + + 学校管理系统 + + + + +
+ +

学校管理系统

+
+ + + + +
+ + + + + + + + + + + + + + + + +
学校编号学校名称学校地址学校电话操作
+ +
+ + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/axios.min.js" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/axios.min.js" new file mode 100644 index 0000000000000000000000000000000000000000..0ac6c50226bed41b48fa66a52a1d73269106c663 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/axios.min.js" @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),u=a.value,s=u instanceof t;Promise.resolve(s?u.v:u).then((function(t){if(s){var n="return"===r?"return":"next";if(!u.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=u:(r=n=u,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(t){return function(){return new e(t.apply(this,arguments))}}function p(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){p(i,n,o,a,u,"next",e)}function u(e){p(i,n,o,a,u,"throw",e)}a(void 0)}))}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),N(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Z=function(e){return!_(e)&&e!==Q};var ee,te=(ee="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return ee&&e instanceof ee}),re=P("HTMLFormElement"),ne=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),oe=P("RegExp"),ie=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};$(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ae="abcdefghijklmnopqrstuvwxyz",ue="0123456789",se={DIGIT:ue,ALPHA:ae,ALPHA_DIGIT:ae+ae.toUpperCase()+ue};var ce,fe,le,pe,he=P("AsyncFunction"),de=(ce="function"==typeof setImmediate,fe=U(Q.postMessage),ce?setImmediate:fe?(le="axios@".concat(Math.random()),pe=[],Q.addEventListener("message",(function(e){var t=e.source,r=e.data;t===Q&&r===le&&pe.length&&pe.shift()()}),!1),function(e){pe.push(e),Q.postMessage(le,"*")}):function(e){return setTimeout(e)}),ve="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Q):"undefined"!=typeof process&&process.nextTick||de,ye={isArray:N,isArrayBuffer:C,isBuffer:function(e){return null!==e&&!_(e)&&null!==e.constructor&&!_(e.constructor)&&U(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||U(e.append)&&("formdata"===(t=A(e))||"object"===t&&U(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&C(e.buffer)},isString:F,isNumber:B,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:I,isReadableStream:G,isRequest:K,isResponse:V,isHeaders:X,isUndefined:_,isDate:q,isFile:M,isBlob:z,isRegExp:oe,isFunction:U,isStream:function(e){return D(e)&&U(e.pipe)},isURLSearchParams:J,isTypedArray:te,isFileList:H,forEach:$,merge:function e(){for(var t=Z(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&Y(n,o)||o;I(n[i])&&I(t)?n[i]=e(n[i],t):I(t)?n[i]=e({},t):N(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return $(t,(function(t,n){r&&U(t)?e[n]=R(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:A,kindOfTest:P,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(N(e))return e;var t=e.length;if(!B(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:re,hasOwnProperty:ne,hasOwnProp:ne,reduceDescriptors:ie,freezeMethods:function(e){ie(e,(function(t,r){if(U(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];U(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return N(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:Y,global:Q,isContextDefined:Z,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&U(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=N(r)?[]:{};return $(r,(function(t,r){var i=e(t,n+1);!_(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:he,isThenable:function(e){return e&&(D(e)||U(e))&&U(e.then)&&U(e.catch)},setImmediate:de,asap:ve};function me(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}ye.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ye.toJSONObject(this.config),code:this.code,status:this.status}}});var be=me.prototype,ge={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ge[e]={value:e}})),Object.defineProperties(me,ge),Object.defineProperty(be,"isAxiosError",{value:!0}),me.from=function(e,t,r,n,o,i){var a=Object.create(be);return ye.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),me.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function we(e){return ye.isPlainObject(e)||ye.isArray(e)}function Ee(e){return ye.endsWith(e,"[]")?e.slice(0,-2):e}function Oe(e,t,r){return e?e.concat(t).map((function(e,t){return e=Ee(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var Se=ye.toFlatObject(ye,{},null,(function(e){return/^is[A-Z]/.test(e)}));function xe(e,t,r){if(!ye.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ye.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ye.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ye.isSpecCompliantForm(t);if(!ye.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(ye.isDate(e))return e.toISOString();if(!u&&ye.isBlob(e))throw new me("Blob is not supported. Use a Buffer instead.");return ye.isArrayBuffer(e)||ye.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var u=e;if(e&&!o&&"object"===f(e))if(ye.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ye.isArray(e)&&function(e){return ye.isArray(e)&&!e.some(we)}(e)||(ye.isFileList(e)||ye.endsWith(r,"[]"))&&(u=ye.toArray(e)))return r=Ee(r),u.forEach((function(e,n){!ye.isUndefined(e)&&null!==e&&t.append(!0===a?Oe([r],n,i):null===a?r:r+"[]",s(e))})),!1;return!!we(e)||(t.append(Oe(o,r,i),s(e)),!1)}var l=[],p=Object.assign(Se,{defaultVisitor:c,convertValue:s,isVisitable:we});if(!ye.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ye.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ye.forEach(r,(function(r,i){!0===(!(ye.isUndefined(r)||null===r)&&o.call(t,r,ye.isString(i)?i.trim():i,n,p))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function Re(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Te(e,t){this._pairs=[],e&&xe(e,this,t)}var ke=Te.prototype;function je(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ae(e,t,r){if(!t)return e;var n=r&&r.encode||je;ye.isFunction(r)&&(r={serialize:r});var o,i=r&&r.serialize;if(o=i?i(t,r):ye.isURLSearchParams(t)?t.toString():new Te(t,r).toString(n)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}ke.append=function(e,t){this._pairs.push([e,t])},ke.toString=function(e){var t=e?function(t){return e.call(this,t,Re)}:Re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Pe=function(){function e(){d(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ye.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Le={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ne={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},_e="undefined"!=typeof window&&"undefined"!=typeof document,Ce="object"===("undefined"==typeof navigator?"undefined":f(navigator))&&navigator||void 0,Fe=_e&&(!Ce||["ReactNative","NativeScript","NS"].indexOf(Ce.product)<0),Ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Be=_e&&window.location.href||"http://localhost",De=u(u({},Object.freeze({__proto__:null,hasBrowserEnv:_e,hasStandardBrowserWebWorkerEnv:Ue,hasStandardBrowserEnv:Fe,navigator:Ce,origin:Be})),Ne);function Ie(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&ye.isArray(n)?n.length:i,u?(ye.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ye.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ye.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ye.isObject(e);if(i&&ye.isHTMLForm(e)&&(e=new FormData(e)),ye.isFormData(e))return o?JSON.stringify(Ie(e)):e;if(ye.isArrayBuffer(e)||ye.isBuffer(e)||ye.isStream(e)||ye.isFile(e)||ye.isBlob(e)||ye.isReadableStream(e))return e;if(ye.isArrayBufferView(e))return e.buffer;if(ye.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return xe(e,new De.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return De.isNode&&ye.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ye.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return xe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ye.isString(e))try{return(t||JSON.parse)(e),ye.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||qe.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ye.isResponse(e)||ye.isReadableStream(e))return e;if(e&&ye.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw me.from(e,me.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:De.classes.FormData,Blob:De.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ye.forEach(["delete","get","head","post","put","patch"],(function(e){qe.headers[e]={}}));var Me=qe,ze=ye.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),He=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function We(e){return!1===e||null==e?e:ye.isArray(e)?e.map(We):String(e)}function Ge(e,t,r,n,o){return ye.isFunction(n)?n.call(this,t,r):(o&&(t=r),ye.isString(t)?ye.isString(n)?-1!==t.indexOf(n):ye.isRegExp(n)?n.test(t):void 0:void 0)}var Ke=function(e,t){function r(e){d(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Je(t);if(!o)throw new Error("header name must be a non-empty string");var i=ye.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=We(e))}var i=function(e,t){return ye.forEach(e,(function(e,r){return o(e,r,t)}))};if(ye.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ye.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&ze[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ye.isHeaders(e)){var a,u=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=O(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.entries());try{for(u.s();!(a=u.n()).done;){var s=b(a.value,2),c=s[0];o(s[1],c,r)}}catch(e){u.e(e)}finally{u.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ye.isFunction(t))return t.call(this,n,r);if(ye.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ge(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Je(e)){var o=ye.findKey(r,e);!o||t&&!Ge(0,r[o],o,t)||(delete r[o],n=!0)}}return ye.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ge(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ye.forEach(this,(function(n,o){var i=ye.findKey(r,o);if(i)return t[i]=We(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=We(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(r=s,n||(n=setTimeout((function(){n=null,a(r)}),i-t)))},function(){return r&&a(r)}]}ye.inherits(Ye,me,{__CANCEL__:!0});var tt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ze(50,250);return et((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,u=i-n,s=o(u);n=i;var c=m({loaded:i,total:a,progress:a?i/a:void 0,bytes:u,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:r,lengthComputable:null!=a},t?"download":"upload",!0);e(c)}),r)},rt=function(e,t){var r=null!=e;return[function(n){return t[0]({lengthComputable:r,total:e,loaded:n})},t[1]]},nt=function(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n1?t-1:0),n=1;n1?"since :\n"+u.map(At).join("\n"):" "+At(u[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ye(null,e)}function _t(e){return Nt(e),e.headers=Ve.from(e.headers),e.data=Xe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Lt(e.adapter||Me.adapter)(e).then((function(t){return Nt(e),t.data=Xe.call(e,e.transformResponse,t),t.headers=Ve.from(t.headers),t}),(function(t){return $e(t)||(Nt(e),t&&t.response&&(t.response.data=Xe.call(e,e.transformResponse,t.response),t.response.headers=Ve.from(t.response.headers))),Promise.reject(t)}))}var Ct="1.7.9",Ft={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ft[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ut={};Ft.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.9] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new me(n(o," has been removed"+(t?" in "+t:"")),me.ERR_DEPRECATED);return t&&!Ut[o]&&(Ut[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},Ft.spelling=function(e){return function(t,r){return console.warn("".concat(r," is likely a misspelling of ").concat(e)),!0}};var Bt={assertOptions:function(e,t,r){if("object"!==f(e))throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new me("option "+i+" must be "+s,me.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}},validators:Ft},Dt=Bt.validators,It=function(){function e(t){d(this,e),this.defaults=t,this.interceptors={request:new Pe,response:new Pe}}var t;return y(e,[{key:"request",value:(t=h(s().mark((function e(t,r){var n,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){n={},Error.captureStackTrace?Error.captureStackTrace(n):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=st(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Bt.assertOptions(n,{silentJSONParsing:Dt.transitional(Dt.boolean),forcedJSONParsing:Dt.transitional(Dt.boolean),clarifyTimeoutError:Dt.transitional(Dt.boolean)},!1),null!=o&&(ye.isFunction(o)?t.paramsSerializer={serialize:o}:Bt.assertOptions(o,{encode:Dt.function,serialize:Dt.function},!0)),Bt.assertOptions(t,{baseUrl:Dt.spelling("baseURL"),withXsrfToken:Dt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ye.merge(i.common,i[t.method]);i&&ye.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=Ve.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,u.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,p=0;if(!s){var h=[_t.bind(this),void 0];for(h.unshift.apply(h,u),h.push.apply(h,f),l=h.length,c=Promise.resolve(t);p0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ye(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,r=function(e){t.abort(e)};return this.subscribe(r),t.signal.unsubscribe=function(){return e.unsubscribe(r)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}(),zt=Mt;var Ht={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ht).forEach((function(e){var t=b(e,2),r=t[0],n=t[1];Ht[n]=r}));var Jt=Ht;var Wt=function e(t){var r=new qt(t),n=R(qt.prototype.request,r);return ye.extend(n,qt.prototype,r,{allOwnKeys:!0}),ye.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(st(t,r))},n}(Me);return Wt.Axios=qt,Wt.CanceledError=Ye,Wt.CancelToken=zt,Wt.isCancel=$e,Wt.VERSION=Ct,Wt.toFormData=xe,Wt.AxiosError=me,Wt.Cancel=Wt.CanceledError,Wt.all=function(e){return Promise.all(e)},Wt.spread=function(e){return function(t){return e.apply(null,t)}},Wt.isAxiosError=function(e){return ye.isObject(e)&&!0===e.isAxiosError},Wt.mergeConfig=st,Wt.AxiosHeaders=Ve,Wt.formToJSON=function(e){return Ie(ye.isHTMLForm(e)?new FormData(e):e)},Wt.getAdapter=Lt,Wt.HttpStatusCode=Jt,Wt.default=Wt,Wt})); +//# sourceMappingURL=axios.min.js.map diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/data.js" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/data.js" new file mode 100644 index 0000000000000000000000000000000000000000..847c5e5d9aa0116dcb1555d29bfc7772688e6c33 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/data.js" @@ -0,0 +1,182 @@ +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let schoolId = document.querySelector("#schoolId"); +let schoolName = document.querySelector("#schoolName"); +let schoolAddress = document.querySelector("#schoolAddress"); +let schoolPhone = document.querySelector("#schoolPhone"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/school"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?schoolName=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return ` + ${item.schoolId} + ${item.schoolName} + ${item.schoolAddress} + ${item.schoolPhone} + + + + + `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新学校'; + schoolId.value = data.schoolId; + schoolName.value = data.schoolName; + schoolAddress.value = data.schoolAddress; + schoolPhone.value = data.schoolPhone; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + schoolId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!schoolName.value || !schoolAddress.value || !schoolPhone.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + schoolId: schoolId.value || null, // 如果为空,则视为添加新图书 + schoolName: schoolName.value, + schoolAddress: schoolAddress.value, + schoolPhone: schoolPhone.value + }; + + // 根据编号判断是添加还是更新 + if (schoolId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加学校'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + schoolId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/JdbcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/JdbcConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..38f06e9361e3d7f2cea798f07c5af6ec242d1e6f Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/JdbcConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/MybatisConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/MybatisConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..598d31bd717ba274ee178429758f15b5e0ef29be Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/MybatisConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..5ec0607c5f56a4a60e8b4a2def3aded7a950678b Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringMvcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringMvcConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..42c04c91aba8d4b7575ae93f082bd26cc41f8c08 Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringMvcConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/WebConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/WebConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..1ac063d11c651c156745d862db8ae380201946db Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/WebConfig.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/controller/SchoolController.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/controller/SchoolController.class" new file mode 100644 index 0000000000000000000000000000000000000000..165d3817c9f13846c16d57c305da6087f0e29cc4 Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/controller/SchoolController.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/entity/School.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/entity/School.class" new file mode 100644 index 0000000000000000000000000000000000000000..2e2c461f1f4ef60bb2eb46803bfb09b86bb6cbec Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/entity/School.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/mapper/SchoolMapper.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/mapper/SchoolMapper.class" new file mode 100644 index 0000000000000000000000000000000000000000..38ad082538f7e13fc5190cf32b3b50a5298e8609 Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/mapper/SchoolMapper.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/SchoolService.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/SchoolService.class" new file mode 100644 index 0000000000000000000000000000000000000000..6183a9cd48631582f208814664792c18440bbd1d Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/SchoolService.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/impl/SchoolServiceImpl.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/impl/SchoolServiceImpl.class" new file mode 100644 index 0000000000000000000000000000000000000000..6f2de710e6ca8c6a8b29c036890c6196c63cd5d5 Binary files /dev/null and "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/impl/SchoolServiceImpl.class" differ diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" new file mode 100644 index 0000000000000000000000000000000000000000..5bf170bee44e37ec0d771a26c065ce5f3fbe1617 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" @@ -0,0 +1,10 @@ +com\config\MybatisConfig.class +com\config\WebConfig.class +com\service\SchoolService.class +com\config\JdbcConfig.class +com\service\impl\SchoolServiceImpl.class +com\config\SpringConfig.class +com\controller\SchoolController.class +com\config\SpringMvcConfig.class +com\mapper\SchoolMapper.class +com\entity\School.class diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" new file mode 100644 index 0000000000000000000000000000000000000000..5072927e8d6f8a173373b9eae29d11881c94fea7 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" @@ -0,0 +1,10 @@ +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\config\JdbcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\config\MybatisConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\config\SpringConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\config\SpringMvcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\config\WebConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\controller\SchoolController.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\entity\School.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\mapper\SchoolMapper.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\service\impl\SchoolServiceImpl.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.07\20250107 综合练习(五)\MySchool\src\main\java\com\service\SchoolService.java diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/logging.properties" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/logging.properties" new file mode 100644 index 0000000000000000000000000000000000000000..76c9512b2c1b9690adaae447f598479f35ee7ebb --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/logging.properties" @@ -0,0 +1,64 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.FileHandler.level = FINE +1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.FileHandler.prefix = catalina. + +2localhost.org.apache.juli.FileHandler.level = FINE +2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.FileHandler.prefix = localhost. + +3manager.org.apache.juli.FileHandler.level = FINE +3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.FileHandler.prefix = manager. + +4host-manager.org.apache.juli.FileHandler.level = FINE +4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.FileHandler.prefix = host-manager. + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +#org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages in TldLocationsCache, uncomment the following line: +#org.apache.jasper.compiler.TldLocationsCache.level = FINE diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/tomcat-users.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/tomcat-users.xml" new file mode 100644 index 0000000000000000000000000000000000000000..7114f5d1a513080c465178862bab02e1aab035ed --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/tomcat-users.xml" @@ -0,0 +1,26 @@ + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/web.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/web.xml" new file mode 100644 index 0000000000000000000000000000000000000000..cc8383cbf46534c3025e003854e5a03e257b6b40 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/web.xml" @@ -0,0 +1,4283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/octet-stream + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + eml + message/rfc822 + + + emma + application/emma+xml + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gbr + application/rpki-ghostbusters + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/octet-stream + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/octet-stream + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/octet-stream + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + ngdat + application/vnd.nokia.n-gage.data + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsf + application/vnd.lotus-notes + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + application/x-font-otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sig + application/pgp-signature + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + src + application/x-wais-source + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + application/x-font-ttf + + + ttf + application/x-font-ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-ms-wmz + + + woff + application/x-font-woff + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + application/vnd.hzn-3d-crossword + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + Z + application/x-compress + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/logs/access_log.2025-01-07" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/logs/access_log.2025-01-07" new file mode 100644 index 0000000000000000000000000000000000000000..e4dac0f487db3939bb17886b4c1872a324c872e8 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/logs/access_log.2025-01-07" @@ -0,0 +1,104 @@ +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:05:48 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-1 49 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:05:49 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-2 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:05:49 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-3 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:05:49 +0800] "GET /js/data.js HTTP/1.1" 200 5206 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:05:49 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-7 4 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:05:49 +0800] "GET /favicon.ico HTTP/1.1" 404 973 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:05:49 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:43:31 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 30 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:43:31 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-1 92 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:43:36 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-4 752 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:37 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-6 9 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:37 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-10 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET /js/data.js HTTP/1.1" 200 5205 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-1 15 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:44:43 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-1 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:30 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-2 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:31 +0800] "GET / HTTP/1.1" 200 2182 http-bio-80-exec-2 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:31 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-2 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:31 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:31 +0800] "GET /js/data.js HTTP/1.1" 200 5216 http-bio-80-exec-8 9 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:31 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-8 8 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:31 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:31 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:48 +0800] "GET /school?schoolName=%E6%B8%85%E5%8D%8E HTTP/1.1" 200 12 http-bio-80-exec-8 17 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:48:52 +0800] "GET /school?schoolName=%E6%B8%85%E5%8D%8E HTTP/1.1" 200 12 http-bio-80-exec-8 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:49:58 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 49 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:49:58 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-2 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:49:58 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-3 8 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:49:59 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-5 769 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:23 +0800] "POST /school HTTP/1.1" 200 11 http-bio-80-exec-6 58 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:24 +0800] "GET /school HTTP/1.1" 200 485 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:26 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-8 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:27 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:28 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:28 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-10 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:33 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-1 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:33 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-2 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:33 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-3 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:33 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:34 +0800] "GET /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-6 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:50:37 +0800] "DELETE /school/5 HTTP/1.1" 500 1143 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:51:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-8 4 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:51:30 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:51:30 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:51:30 +0800] "GET /school HTTP/1.1" 200 485 http-bio-80-exec-8 14 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:44 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 63 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:44 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-2 8 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:44 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-3 6 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:45 +0800] "GET /school HTTP/1.1" 200 485 http-bio-80-exec-5 800 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:46 +0800] "GET /school/5 HTTP/1.1" 500 1149 http-bio-80-exec-6 10 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:47 +0800] "GET /school/5 HTTP/1.1" 500 1149 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:47 +0800] "GET /school/5 HTTP/1.1" 500 1149 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:47 +0800] "GET /school/5 HTTP/1.1" 500 1149 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:47 +0800] "GET /school/5 HTTP/1.1" 500 1149 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:54:47 +0800] "GET /school/5 HTTP/1.1" 500 1149 http-bio-80-exec-10 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:55:37 +0800] "GET /school/5 HTTP/1.1" 500 1149 http-bio-80-exec-1 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:56:50 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-2 15 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:56:50 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-3 18 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:56:50 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 26 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:56:51 +0800] "GET /school/5 HTTP/1.1" 200 122 http-bio-80-exec-1 1199 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:56:51 +0800] "GET /school HTTP/1.1" 200 485 http-bio-80-exec-6 204 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:56:57 +0800] "GET /school/5 HTTP/1.1" 200 122 http-bio-80-exec-7 4 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:57:04 +0800] "PUT /school HTTP/1.1" 200 11 http-bio-80-exec-9 55 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:15:57:05 +0800] "GET /school HTTP/1.1" 200 482 http-bio-80-exec-10 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:30 +0800] "DELETE /school/5 HTTP/1.1" 200 11 http-bio-80-exec-3 23 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:30 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-3 6 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:37 +0800] "POST /school HTTP/1.1" 200 11 http-bio-80-exec-3 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:38 +0800] "GET /school HTTP/1.1" 200 470 http-bio-80-exec-3 4 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:42 +0800] "GET /school?schoolName=%E6%B8%85 HTTP/1.1" 200 102 http-bio-80-exec-3 229 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:45 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-3 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:45 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-3 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:00:46 +0800] "GET /school HTTP/1.1" 200 470 http-bio-80-exec-3 6 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:01:14 +0800] "GET /school/5 HTTP/1.1" 200 - http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:01:16 +0800] "GET /school/5 HTTP/1.1" 200 - http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:01:18 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:01:18 +0800] "GET /school HTTP/1.1" 200 470 http-bio-80-exec-3 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:01:23 +0800] "GET /school/6 HTTP/1.1" 200 107 http-bio-80-exec-3 4 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:02:08 +0800] "PUT /school HTTP/1.1" 200 11 http-bio-80-exec-3 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:02:08 +0800] "GET /school HTTP/1.1" 200 475 http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:04:18 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:04:18 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-10 2 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:04:18 +0800] "GET /school HTTP/1.1" 200 475 http-bio-80-exec-10 8 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:04:19 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 1 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:04:19 +0800] "GET /school HTTP/1.1" 200 475 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:15:35 +0800] "GET / HTTP/1.1" 200 2182 http-bio-80-exec-1 193 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:15:35 +0800] "GET /js/data.js HTTP/1.1" 200 5216 http-bio-80-exec-3 20 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:15:36 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-4 947 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:15:36 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-2 3 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:15:58 +0800] "GET /school?schoolName=%E6%B8%85 HTTP/1.1" 200 102 http-bio-80-exec-6 78 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:16:17 +0800] "GET /school/1 HTTP/1.1" 200 100 http-bio-80-exec-7 10 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:16:50 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-8 13 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:16:50 +0800] "GET /school HTTP/1.1" 200 373 http-bio-80-exec-10 5 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:17:12 +0800] "DELETE /school/4 HTTP/1.1" 200 11 http-bio-80-exec-10 16 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:17:13 +0800] "GET /school HTTP/1.1" 200 283 http-bio-80-exec-10 6 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:18:11 +0800] "POST /school HTTP/1.1" 200 11 http-bio-80-exec-10 46 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:18:12 +0800] "GET /school HTTP/1.1" 200 389 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:18:37 +0800] "GET /school/5 HTTP/1.1" 200 116 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:19:10 +0800] "PUT /school HTTP/1.1" 200 11 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [07/Jan/2025:16:19:11 +0800] "GET /school HTTP/1.1" 200 398 http-bio-80-exec-10 4