diff --git a/pom.xml b/pom.xml index c71883d..e74163a 100644 --- a/pom.xml +++ b/pom.xml @@ -61,30 +61,20 @@ org.jetbrains.kotlin kotlin-stdlib - - com.fasterxml.jackson.module - jackson-module-kotlin - - - com.alibaba.fastjson2 - fastjson2-kotlin - 2.0.40 - com.fasterxml.jackson.core jackson-databind + + com.fasterxml.jackson.module + jackson-module-kotlin + org.mariadb.jdbc mariadb-java-client runtime - - com.alibaba - fastjson - 2.0.40 - diff --git a/src/main/kotlin/team8/fruitable/constant/UserType.kt b/src/main/kotlin/team8/fruitable/constant/UserType.kt deleted file mode 100644 index 839a359..0000000 --- a/src/main/kotlin/team8/fruitable/constant/UserType.kt +++ /dev/null @@ -1,7 +0,0 @@ -package team8.fruitable.constant - -enum class UserType { - Admin, - User, - Guest -} diff --git a/src/main/kotlin/team8/fruitable/controller/action/Account.kt b/src/main/kotlin/team8/fruitable/controller/action/Account.kt index 0bfbfb5..ca1503b 100644 --- a/src/main/kotlin/team8/fruitable/controller/action/Account.kt +++ b/src/main/kotlin/team8/fruitable/controller/action/Account.kt @@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.servlet.mvc.support.RedirectAttributes +import team8.fruitable.controller.util.Util.Companion.error import team8.fruitable.datebase.entity.User import team8.fruitable.datebase.repository.AccountRepository @@ -18,10 +19,6 @@ class Account(private val repository: AccountRepository) { return token?.let(repository::findByToken) } - private fun hasAdminPermissions(token: String?): Boolean { - return this.getCurrentUser(token)?.isAdmin ?: false - } - private fun updateToken(response: HttpServletResponse, token: String, path: String = "/", age: Int = 2678400) { val cookie = Cookie("TOKEN", token) cookie.path = path @@ -29,53 +26,66 @@ class Account(private val repository: AccountRepository) { response.addCookie(cookie) } - fun error( - redirectAttributes: RedirectAttributes, - title: String, - message: String, - redirect: String = "/" - ): String { - redirectAttributes.addFlashAttribute("title", title) - redirectAttributes.addFlashAttribute("message", message) - redirectAttributes.addFlashAttribute("redirect", redirect) - return "redirect:/error" - } - @PostMapping("/login") fun login( response: HttpServletResponse, attributes: RedirectAttributes, - @CookieValue(value = "TOKEN", required = false) token: String?, - @RequestParam(name = "name") name: String, - @RequestParam(name = "password") password: String + @CookieValue("TOKEN", required = false) token: String?, + @RequestParam("name") name: String, + @RequestParam("password") password: String ): String { if (this.getCurrentUser(token) != null) return error(attributes, "登录", "当前已登录账户") - val user = repository.findByName(name) ?: return error(attributes, "登录", "账户不存在") - if (!user.testPassword(password)) return error(attributes, "登录", "密码错误") + val user = repository.findByName(name) ?: return error(attributes, "登录", "账户不存在", "/login") + if (!user.testPassword(password)) return error(attributes, "登录", "密码错误", "/login") user.updateToken() user.updateLoginTime() repository.save(user) updateToken(response, user.token) - return "redirect:/"; + return "redirect:/" } @PostMapping("/register") fun register( response: HttpServletResponse, attributes: RedirectAttributes, - @CookieValue(value = "TOKEN", required = false) token: String?, - @RequestParam(name = "name") name: String, - @RequestParam(name = "password") password: String, - @RequestParam(name = "age", required = false) age: Int?, - @RequestParam(name = "gender", required = false) gender: String?, - @RequestParam(name = "phone", required = false) phone: String?, - @RequestParam(name = "email", required = false) email: String?, - @RequestParam(name = "address", required = false) address: String? + @CookieValue("TOKEN", required = false) token: String?, + @RequestParam("name") name: String, + @RequestParam("password") password: String, + @RequestParam("age", required = false) age: Int?, + @RequestParam("gender", required = false) gender: String?, + @RequestParam("phone", required = false) phone: String?, + @RequestParam("email", required = false) email: String?, + @RequestParam("address", required = false) address: String? ): String { - if (this.getCurrentUser(token) != null) return error(attributes, "登录", "当前已登录账户") + if (this.getCurrentUser(token) != null) return error(attributes, "注册", "当前已登录账户") val user = repository.save(User(name, password, age, gender, phone, email, address)) updateToken(response, user.token) - return "redirect:/"; + return "redirect:/" + } + + @PostMapping("/update") + fun update( + response: HttpServletResponse, + attributes: RedirectAttributes, + @CookieValue("TOKEN", required = false) token: String?, + @RequestParam("password_old") passwordOld: String, + @RequestParam("name") name: String, + @RequestParam("password", required = false) password: String?, + @RequestParam("password_confirm", required = false) passwordConfirm: String?, + @RequestParam("age", required = false) age: Int?, + @RequestParam("gender", required = false) gender: String?, + @RequestParam("phone", required = false) phone: String?, + @RequestParam("email", required = false) email: String?, + @RequestParam("address", required = false) address: String?, + @RequestParam("redirect", required = false) redirect: String? + ): String { + val user = this.getCurrentUser(token) ?: return error(attributes, "更新", "账户未登录") + if (!user.testPassword(passwordOld)) return error(attributes, "更新", "正在使用的密码不正确", "/account") + if (password != passwordConfirm) return error(attributes, "更新", "密码与确认密码不相同", "/account") + user.update(name, password, age, gender, phone, email, address) + repository.save(user) + updateToken(response, user.token) + return "redirect:/account" } @RequestMapping("/logout") diff --git a/src/main/kotlin/team8/fruitable/controller/api/AccountApi.kt b/src/main/kotlin/team8/fruitable/controller/api/AccountApi.kt deleted file mode 100644 index 59e66c1..0000000 --- a/src/main/kotlin/team8/fruitable/controller/api/AccountApi.kt +++ /dev/null @@ -1,144 +0,0 @@ -package team8.fruitable.controller.api - -import jakarta.servlet.http.Cookie -import jakarta.servlet.http.HttpServletResponse -import org.springframework.web.bind.annotation.* -import team8.fruitable.constant.UserType -import team8.fruitable.datebase.entity.User -import team8.fruitable.datebase.repository.AccountRepository -import team8.fruitable.util.ResultBuilderJson - -@RestController -@RequestMapping("/api/v1/account") -class AccountApi(private val repository: AccountRepository) { - private fun getCurrentUser(token: String?): User? { - return token?.let(repository::findByToken) - } - - private fun hasAdminPermissions(token: String?): Boolean { - return this.getCurrentUser(token)?.isAdmin ?: false - } - - private fun updateToken(response: HttpServletResponse, token: String, path: String = "/", age: Int = 2678400) { - val cookie = Cookie("TOKEN", token) - cookie.path = path - cookie.maxAge = age - response.addCookie(cookie) - } - - @GetMapping("/info", produces = ["application/json"]) - fun infoMe( - @CookieValue(value = "TOKEN", required = false) token: String? - ): String { - val user = this.getCurrentUser(token) ?: return ResultBuilderJson("账户未登录").toJson() - return ResultBuilderJson(user.asMap(UserType.User)).toJson() - } - - @GetMapping("/info/{id}", produces = ["application/json"]) - fun info( - @CookieValue(value = "TOKEN", required = false) token: String?, @PathVariable id: Long - ): String { - val queryUser = repository.findById(id).orElse(null) ?: return ResultBuilderJson("账户不存在").toJson() - val currentUser = this.getCurrentUser(token) - return ResultBuilderJson( - queryUser.asMap(if (currentUser != null && (currentUser.id == id || currentUser.isAdmin)) UserType.User else UserType.Guest) - ).toJson() - } - - //@PostMapping - @RequestMapping("/login", produces = ["application/json"]) - fun login( - response: HttpServletResponse, - @CookieValue(value = "TOKEN", required = false) token: String?, - @RequestParam(name = "name") name: String, - @RequestParam(name = "password") password: String - ): String { - if (this.getCurrentUser(token) != null) return ResultBuilderJson("当前已登录账户").toJson() - val user = repository.findByName(name) ?: return ResultBuilderJson("账户不存在").toJson() - if (!user.testPassword(password)) return ResultBuilderJson("密码错误").toJson() - user.updateToken() - user.updateLoginTime() - repository.save(user) - updateToken(response, user.token) - return ResultBuilderJson("success", "登录成功").toJson() - } - - @RequestMapping("/logout", produces = ["application/json"]) - fun logout(response: HttpServletResponse): String { - updateToken(response, "", age = 0) - return ResultBuilderJson("success", "注销成功").toJson() - } - - @RequestMapping("/register", produces = ["application/json"]) - fun register( - response: HttpServletResponse, - @CookieValue(value = "TOKEN", required = false) token: String?, - @RequestParam(name = "name") name: String, - @RequestParam(name = "password") password: String, - @RequestParam(name = "age", required = false) age: Int?, - @RequestParam(name = "gender", required = false) gender: String?, - @RequestParam(name = "phone", required = false) phone: String?, - @RequestParam(name = "email", required = false) email: String?, - @RequestParam(name = "address", required = false) address: String? - ): String { - if (this.getCurrentUser(token) != null) return ResultBuilderJson("当前已登录账户").toJson() - val user = repository.save(User(name, password, age, gender, phone, email, address)) - updateToken(response, user.token) - return ResultBuilderJson("success", "注册成功").toJson() - } - - @RequestMapping("/update", produces = ["application/json"]) - fun update( - response: HttpServletResponse, - @CookieValue(name = "TOKEN", required = false) token: String?, - @RequestParam(name = "name") name: String, - @RequestParam(name = "password") password: String, - @RequestParam(name = "age", required = false) age: Int?, - @RequestParam(name = "gender", required = false) gender: String?, - @RequestParam(name = "phone", required = false) phone: String?, - @RequestParam(name = "email", required = false) email: String?, - @RequestParam(name = "address", required = false) address: String? - ): String { - val user = this.getCurrentUser(token) ?: return ResultBuilderJson("账户未登录").toJson() - user.update(name, password, age, gender, phone, email, address) - repository.save(user) - updateToken(response, user.token) - return ResultBuilderJson("success", "更新账户信息成功").toJson() - } - - @GetMapping("/admin/info/{id}", produces = ["application/json"]) - fun infoAdmin( - @CookieValue(value = "TOKEN", required = false) token: String?, - @PathVariable id: Long, - ): String { - if (this.hasAdminPermissions(token)) return ResultBuilderJson("无管理员权限").toJson() - return ResultBuilderJson(repository.findById(id)).toJson() - } - - @DeleteMapping("/admin/remove/{id}", produces = ["application/json"]) - fun removeAdmin( - @CookieValue(value = "TOKEN", required = false) token: String?, - @PathVariable id: Long, - ): String { - if (this.hasAdminPermissions(token)) return ResultBuilderJson("无管理员权限").toJson() - // TODO: 完成管理员删除方法 - return ResultBuilderJson(repository.findById(id)).toJson() - } - - @PostMapping("/admin/update/{id}", produces = ["application/json"]) - fun updateAdmin( - @CookieValue(value = "TOKEN", required = false) token: String?, - @PathVariable id: Long, - @RequestParam(name = "name") name: String, - @RequestParam(name = "password") password: String, - @RequestParam(name = "age", required = false) age: Int?, - @RequestParam(name = "gender", required = false) gender: String?, - @RequestParam(name = "phone", required = false) phone: String?, - @RequestParam(name = "email", required = false) email: String?, - @RequestParam(name = "address", required = false) address: String? - ): String { - if (this.hasAdminPermissions(token)) return ResultBuilderJson("无管理员权限").toJson() - // TODO: 完成管理员更新账户数据方法 - return ResultBuilderJson(repository.findById(id)).toJson() - } -} diff --git a/src/main/kotlin/team8/fruitable/controller/api/Cart.kt b/src/main/kotlin/team8/fruitable/controller/api/Cart.kt deleted file mode 100644 index aa98d1f..0000000 --- a/src/main/kotlin/team8/fruitable/controller/api/Cart.kt +++ /dev/null @@ -1,4 +0,0 @@ -package team8.fruitable.controller.api - -class Cart { -} diff --git a/src/main/kotlin/team8/fruitable/controller/api/Item.kt b/src/main/kotlin/team8/fruitable/controller/api/Item.kt deleted file mode 100644 index b673850..0000000 --- a/src/main/kotlin/team8/fruitable/controller/api/Item.kt +++ /dev/null @@ -1,25 +0,0 @@ -package team8.fruitable.controller.api - -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.PathVariable -import org.springframework.web.bind.annotation.RestController -import team8.fruitable.datebase.entity.User -import team8.fruitable.datebase.repository.AccountRepository -import team8.fruitable.datebase.repository.ItemRepository -import team8.fruitable.util.ResultBuilderJson - -@RestController -class Item(private val itemRepository: ItemRepository, private val userRepository: AccountRepository) { - private fun getCurrentUser(token: String?): User? { - return token?.let(userRepository::findByToken) - } - - private fun hasAdminPermissions(token: String?): Boolean { - return this.getCurrentUser(token)?.isAdmin ?: false - } - - @GetMapping("/api/v1/item/info/{id}", produces = ["application/json"]) - fun info(@PathVariable id: Long): String { - return ResultBuilderJson(itemRepository.findById(id).orElse(null)).toJson() - } -} diff --git a/src/main/kotlin/team8/fruitable/controller/api/Order.kt b/src/main/kotlin/team8/fruitable/controller/api/Order.kt deleted file mode 100644 index 83b0286..0000000 --- a/src/main/kotlin/team8/fruitable/controller/api/Order.kt +++ /dev/null @@ -1,4 +0,0 @@ -package team8.fruitable.controller.api - -class Order { -} diff --git a/src/main/kotlin/team8/fruitable/controller/page/Pages.kt b/src/main/kotlin/team8/fruitable/controller/page/Pages.kt index 7b10700..dd95415 100644 --- a/src/main/kotlin/team8/fruitable/controller/page/Pages.kt +++ b/src/main/kotlin/team8/fruitable/controller/page/Pages.kt @@ -5,6 +5,8 @@ import org.springframework.ui.Model import org.springframework.ui.set import org.springframework.web.bind.annotation.CookieValue import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.servlet.mvc.support.RedirectAttributes +import team8.fruitable.controller.util.Util.Companion.error import team8.fruitable.datebase.entity.User import team8.fruitable.datebase.repository.AccountRepository @@ -47,4 +49,21 @@ class Pages(private val repository: AccountRepository) { this.getCurrentUser(token)?.let { model["user"] = it } return "register" } + + @RequestMapping("/account") + fun account( + model: Model, + attributes: RedirectAttributes, + @CookieValue("TOKEN", required = false) token: String? + ): String { + model["isAccount"] = true + val user = this.getCurrentUser(token) ?: return error(attributes, "更新", "账户未登录", "/login") + when (user.gender) { + "M"-> model["isGenderAsMale"] = true + "F" -> model["isGenderAsFemale"] = true + else -> model["isGenderAsUnknown"] = true + } + model["user"] = user + return "account" + } } diff --git a/src/main/kotlin/team8/fruitable/controller/util/Util.kt b/src/main/kotlin/team8/fruitable/controller/util/Util.kt new file mode 100644 index 0000000..4c3d8b3 --- /dev/null +++ b/src/main/kotlin/team8/fruitable/controller/util/Util.kt @@ -0,0 +1,19 @@ +package team8.fruitable.controller.util + +import org.springframework.web.servlet.mvc.support.RedirectAttributes + +class Util { + companion object { + fun error( + redirectAttributes: RedirectAttributes, + title: String, + message: String, + redirect: String = "/" + ): String { + redirectAttributes.addFlashAttribute("title", title) + redirectAttributes.addFlashAttribute("message", message) + redirectAttributes.addFlashAttribute("redirect", redirect) + return "redirect:/error" + } + } +} diff --git a/src/main/kotlin/team8/fruitable/datebase/entity/User.kt b/src/main/kotlin/team8/fruitable/datebase/entity/User.kt index 2ef6a15..c8cbf75 100644 --- a/src/main/kotlin/team8/fruitable/datebase/entity/User.kt +++ b/src/main/kotlin/team8/fruitable/datebase/entity/User.kt @@ -2,12 +2,10 @@ package team8.fruitable.datebase.entity import com.fasterxml.jackson.annotation.JsonView import jakarta.persistence.* -import team8.fruitable.constant.UserType import team8.fruitable.util.Util import java.time.LocalDateTime import java.util.* - @Entity @Table(name = "users") class User( @@ -94,28 +92,28 @@ class User( this.address = address } - final fun genPassword(password: String): String { + private final fun genPassword(password: String): String { return Util.hash(password) } fun update( - name: String, - password: String, - age: Int?, - gender: String?, - phone: String?, - email: String?, - address: String?, - isAdmin: Boolean = false + name: String? = null, + password: String? = null, + age: Int? = null, + gender: String? = null, + phone: String? = null, + email: String? = null, + address: String? = null, + isAdmin: Boolean? = null ) { - this.name = name - this.updatePassword(password) + if (!name.isNullOrBlank()) this.name = name + if (!password.isNullOrBlank()) this.updatePassword(password) this.age = age - this.gender = gender + if (!gender.isNullOrBlank()) this.gender = gender this.phone = phone this.email = email this.address = address - this.isAdmin = isAdmin + isAdmin?.let { this.isAdmin = it } this.updateToken() } @@ -134,28 +132,4 @@ class User( fun updateToken() { this.token = UUID.randomUUID().toString() } - - fun asMap(userType: UserType): Map { - val result: MutableMap = mutableMapOf( - "id" to this.id, - "name" to this.name, - "createTime" to this.createTime, - "loginTime" to this.loginTime, - "age" to this.age, - "gender" to this.gender, - "email" to this.email, - ) - if (userType == UserType.User || userType == UserType.Admin) result += mapOf( - "phone" to this.phone, - "address" to this.address, - "isAdmin" to this.isAdmin, - "carts" to this.carts, - "orders" to this.orders - ) - if (userType == UserType.Admin) result += mapOf( - "password" to this.password, - "token" to this.token, - ) - return result - } } diff --git a/src/main/kotlin/team8/fruitable/util/ResultBuilderJson.kt b/src/main/kotlin/team8/fruitable/util/ResultBuilderJson.kt deleted file mode 100644 index 5aff251..0000000 --- a/src/main/kotlin/team8/fruitable/util/ResultBuilderJson.kt +++ /dev/null @@ -1,54 +0,0 @@ -package team8.fruitable.util - -import com.alibaba.fastjson2.toJSONString -import java.time.LocalDateTime -import java.util.* - -class ResultBuilderJson { - var status: String = "auto" - var message: String = "" - val timestamp: LocalDateTime = LocalDateTime.now() - var content: T? = null - - constructor(content: T?) { - this.content = content - } - - constructor(message: String) { - this.message = message - } - - constructor(status: String, message: String) : this(message) { - this.status = status - } - - constructor(message: String, content: T?) : this(content) { - this.message = message - } - - constructor(status: String, message: String, content: T?) : this(message, content) { - this.status = status - } - - constructor(content: Optional) { - this.content = content.orElse(null) - } - - constructor(message: String, content: Optional) : this(content) { - this.message = message - } - - constructor(status: String, message: String, content: Optional) : this(message, content) { - this.status = status - } - - fun toJson(): String { - if (status == "auto") status = if (content == null) "error" - else "success" - return this.toJSONString() - } - - override fun toString(): String { - return this.toJson() - } -} diff --git a/src/main/kotlin/team8/fruitable/util/Util.kt b/src/main/kotlin/team8/fruitable/util/Util.kt index 3c73b9b..6e5c35e 100644 --- a/src/main/kotlin/team8/fruitable/util/Util.kt +++ b/src/main/kotlin/team8/fruitable/util/Util.kt @@ -6,7 +6,7 @@ class Util { companion object { fun hash(input: String, algorithm: String = "SHA-256"): String { return MessageDigest.getInstance(algorithm).digest(input.toByteArray()) - .fold("") { str, it -> str + "%02x".format(it) } + .joinToString("") { "%02x".format(it) } } } } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 3f3444f..2ceac68 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -4,7 +4,7 @@ spring: username: root password: password jpa: - show-sql: true + open-in-view: true hibernate: ddl-auto: update server: diff --git a/src/main/resources/templates/account.jsp b/src/main/resources/templates/account.jsp deleted file mode 100644 index e734688..0000000 --- a/src/main/resources/templates/account.jsp +++ /dev/null @@ -1,147 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - - - 账户 - 67购物网站 - - - - - - - - - - - - - - - - - - - - - -
-
-
账户
- - " /> - -
-
- - -
- -
- - " /> -
- -
- - -
- -
- - -
- -
- - " /> -
- -
- - " /> -
- -
- checked /> - - checked /> - - checked /> - -
-
- -
- -
-
-
- - - - - -
- -
- -
- - diff --git a/src/main/resources/templates/account.mustache b/src/main/resources/templates/account.mustache new file mode 100644 index 0000000..954228a --- /dev/null +++ b/src/main/resources/templates/account.mustache @@ -0,0 +1,101 @@ + + + + + 账户 - 67购物网站 + + + + + + + + + + + + + + + + + + +{{> header }} + + +
+
+
账户
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + + + + +
+
+ +
+ +
+
+
+ +{{> footer }} + + + diff --git a/src/main/resources/templates/activity.jsp b/src/main/resources/templates/activity.jsp deleted file mode 100644 index 409216c..0000000 --- a/src/main/resources/templates/activity.jsp +++ /dev/null @@ -1,96 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - - - 活动 - 67购物网站 - - - - - - - - - - - - - - - - - - - - - -
此处由于时间不足,不完善,请见谅
- - - - - -
- -
- -
- - diff --git a/src/main/resources/templates/edit.jsp b/src/main/resources/templates/edit.jsp deleted file mode 100644 index 45b4a00..0000000 --- a/src/main/resources/templates/edit.jsp +++ /dev/null @@ -1,163 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - - - - - - - 编辑 - 67购物网站 - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ID用户名帐户创建时间最后登录时间年龄性别邮箱管理员操作
- - -
- -
- 首页 - - - - - - ">第 - - - ">尾页 -
-
- -
- -
-
- - - - - -
- -
- -
- - diff --git a/src/main/resources/templates/error.mustache b/src/main/resources/templates/error.mustache index 463af09..9981c11 100644 --- a/src/main/resources/templates/error.mustache +++ b/src/main/resources/templates/error.mustache @@ -21,6 +21,10 @@ + + {{# redirect }} + + {{/ redirect }} diff --git a/src/main/resources/templates/login.mustache b/src/main/resources/templates/login.mustache index 2fbb38b..e2ab24b 100644 --- a/src/main/resources/templates/login.mustache +++ b/src/main/resources/templates/login.mustache @@ -30,7 +30,7 @@
-
+
登录
diff --git a/src/main/resources/templates/register.mustache b/src/main/resources/templates/register.mustache index 4e5f38e..4c82451 100644 --- a/src/main/resources/templates/register.mustache +++ b/src/main/resources/templates/register.mustache @@ -30,13 +30,13 @@
- +
注册
- +
diff --git a/src/main/resources/templates/remove.jsp b/src/main/resources/templates/remove.jsp deleted file mode 100644 index e097e2d..0000000 --- a/src/main/resources/templates/remove.jsp +++ /dev/null @@ -1,23 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - - 移除用户 - 67购物网站 - - - - - - - " /> - -

确定移除此用户?

-

用户名:

- - - - - diff --git a/src/main/resources/templates/success.jsp b/src/main/resources/templates/success.jsp deleted file mode 100644 index db5aed3..0000000 --- a/src/main/resources/templates/success.jsp +++ /dev/null @@ -1,15 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> - - - - - 成功 - 67购物网站 - - - - - -

操作已完成!

- - diff --git a/src/main/resources/templates/update.jsp b/src/main/resources/templates/update.jsp deleted file mode 100644 index 37b8225..0000000 --- a/src/main/resources/templates/update.jsp +++ /dev/null @@ -1,27 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - - 更新用户 - 67购物网站 - - - - - -

更新此用户的信息

-
-
-
-
-
-
-
-
-
- - - -