首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 留言板項目:註冊與退出登錄頁面實現

     編輯:Java 相關知識

頁面流程概覽

留言板系統用戶認證模塊包含兩個核心頁面:

  1. 用戶註冊頁:收集用戶名、密碼、郵箱、驗證碼,提交至註冊 Servlet/Controller。
  2. 退出登錄頁:銷毀 Session、清除 Cookie、重定向至首頁或登錄頁。

註冊頁關鍵代碼 (JSP + JSTL)

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<form action="${pageContext.request.contextPath}/register.do" method="post">
    <div class="form-group">
        <label>用戶名</label>
        <input type="text" name="username" value="${param.username}" required/>
        <c:if test="${not empty errors.username}">
            <span class="error">${errors.username}</span>
        </c:if>
    </div>
    <div class="form-group">
        <label>密碼</label>
        <input type="password" name="password" required/>
    </div>
    <div class="form-group">
        <label>確認密碼</label>
        <input type="password" name="confirmPassword" required/>
    </div>
    <div class="form-group">
        <label>郵箱</label>
        <input type="email" name="email" value="${param.email}" required/>
    </div>
    <div class="form-group">
        <label>驗證碼</label>
        <input type="text" name="captcha" required/>
        <img src="${pageContext.request.contextPath}/captcha.jpg" onclick="this.src=this.src+'?t='+Math.random()"/>
    </div>
    <button type="submit">註冊</button>
</form>

Controller 處理邏輯

@Controller
public class AuthController {
    @PostMapping("/register.do")
    public String register(@Valid RegisterForm form, BindingResult result, HttpSession session) {
        if (result.hasErrors()) return "register"; // 回顯錯誤
        if (!captchaService.validate(form.getCaptcha(), session)) {
            result.rejectValue("captcha", "error.captcha", "驗證碼錯誤");
            return "register";
        }
        if (userService.existsByUsername(form.getUsername())) {
            result.rejectValue("username", "error.exists", "用戶名已存在");
            return "register";
        }
        userService.register(form.getUsername(), form.getPassword(), form.getEmail());
        return "redirect:/login.jsp?registered=true";
    }

    @GetMapping("/logout.do")
    public String logout(HttpSession session, HttpServletRequest request, HttpServletResponse response) {
        session.invalidate(); // 銷毀 Session
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie c : cookies) {
                c.setMaxAge(0);
                c.setPath("/");
                response.addCookie(c);
            }
        }
        return "redirect:/index.jsp";
    }
}

安全性加固

  • 密碼加密:使用 BCrypt/SCrypt/Argon2 哈希,嚴禁明文/MD5/SHA1 存儲。
  • CSRF 保護:表單隱藏 _csrf Token,Spring Security 自動校驗。
  • 防暴力破解:註冊/登錄接口限流(IP+用戶名雙維度)。
  • 郵箱驗證:註冊後發送激活鏈接,未激活前禁止登錄。

前端體驗優化

  • 即時用戶名可用性檢查(AJAX 遠程驗證)。
  • 密碼強度提示條(長度、大小寫、數字、特殊字符)。
  • 響應式佈局適配移動端。
  • 註冊成功頁引導用戶完善個人資料、發布第一條留言。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved