04.登录注册注销案例-表单的后台校验

 

 

register.jsp

复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/RegisterServlet"  method='post'>
        <table border='1'>
            <tr>
                <td>设置用户名:</td>
                <td><input name='username' placeholder="请输入用户名" value="${uf.username}"/><font color='red'>${uf.err['username']}</font></td>
            </tr>
            <tr>
                <td>设置密码:</td>
                <td><input name='password' placeholder="请输入密码" value="${uf.password}"/><font color='red'>${uf.err['password']}</font></td>
            </tr>
            <tr>
                <td>邮箱:</td>
                <td><input type='text' name='email'  value="${uf.email}"/><font color='red'>${uf.err['email']}</font></td>
            </tr>
            <tr>
                <td>生日:</td>
                <td><input type='text' name='birthday' value="${uf.birthday}"/><font color='red'>${uf.err['birthday']}</font></td>
            </tr>
            <tr>
                <td  colspan='2'><input type='submit'  value='提交'/></td>
            </tr>
        </table>    
    </form>
</body>
</html>
复制代码

 

RegisterServlet.java

复制代码
package com.exp.web.servlet;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;

import com.exp.dao.IUserDao;
import com.exp.dao.impl.UserDaoImpl;
import com.exp.domain.User;
import com.exp.form.UserForm;
import com.exp.utils.MyDateConverter;

/*
 * BS 架构
 */

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //0.判断jsp提交的表单参数是否都合法
        UserForm uf = new UserForm();
        try {
            //把请求参数封装成表单校验对象
            BeanUtils.populate(uf, request.getParameterMap());
            //进行检验
            if(!uf.validate()){//不合法
                System.out.println(uf.getErr());
                //回到注册页面
                request.setAttribute("uf",uf);
                request.getRequestDispatcher("/register.jsp").forward(request, response);
                return;
            }
            
        } catch (IllegalAccessException | InvocationTargetException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }    
        
        //1、把请求参数封装成模型
            User user = new User();
            try {
                ConvertUtils.register(new MyDateConverter(), Date.class);
                BeanUtils.populate(user, request.getParameterMap());
                System.out.println("请求参数: "+ user);
                
                //2、调用service
                IUserDao userDao = new UserDaoImpl();
                userDao.insert(user);
            
                //3、响应客户端
                response.setHeader("content-type","text/html;charset=utf-8");
                response.getWriter().write("注册成功,三秒后进入登录页");
                response.addHeader("Refresh", "3;url=login.jsp");
                
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

}
复制代码

 

posted @   expworld  阅读(154)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示