您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页使用map封装错误信息进行校验

使用map封装错误信息进行校验

来源:百家汽车网

就拿注册的例子来说,当注册时填写的数据不符合规范时,会在当前页面显示一些错误信息.
首先有一个User类:

package com.lm.domain;

import java.util.HashMap;
import java.util.Map;

public class User {

    private String username;
    private String password;
    private String repassword;
    private Map<String, String> errorMap;

    // 所有的校验封装到此方法
        public Map<String, String> isValidate11() {
            errorMap = new HashMap<>();
            if("".equals(username)&&username==null) {
                errorMap.put("username_msg", "用户名不能为空");
            }else if(!username.matches("^[a-z0-9A-Z]{6,}$")) {
                errorMap.put("username_msg", "用户名至少为六位的数字或者字母");
            }
            if("".equals(password)&&password==null) {
                errorMap.put("password_msg", "密码不能为空");

            }else if(!password.matches("^[0-9]{6,}$")){
                errorMap.put("password_msg", "密码至少为六位的数字或者字母");
            }
            if(!password.equals(repassword)) {
                errorMap.put("repassword_msg", "您两次输入的密码不一致");
            }


            return errorMap;
        }
        public Map<String, String> isValidate12() {
            errorMap = new HashMap<>();
            if("".equals(username)&&username==null) {
                errorMap.put("username_msg", "用户名不能为空");
            }else if(!username.matches("^[a-z0-9A-Z]{6,}$")) {
                errorMap.put("username_msg", "用户名至少为六位的数字或者字母");
            }
            if("".equals(password)&&password==null) {
                errorMap.put("password_msg", "密码不能为空");

            }else if(!password.matches("^[0-9]{6,}$")){
                errorMap.put("password_msg", "密码至少为六位的数字或者字母");
            }



            return errorMap;
        }




    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    public String getRepassword() {
        return repassword;
    }




    public void setRepassword(String repassword) {
        this.repassword = repassword;
    }




    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }






}

里面的errorMap是封装错误信息的属性.(在这里我们只看注册校验,所以isValidate12()方法不用看)
其次是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>Insert title here</title>
</head>
<body style="align:center;border:0px; margin-top: 200px;margin-left: 600px">
    <form action="RegisterServlet" method="post">
        <table>
            <tr>
                <td>用户名</td>
                <td><input type="text" name="username"></td><br>
                <td><font color="red" size=1>${register_msg.username_msg}</font></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" name="password" style="width: 149px; "></td><br>
                <td><font color="red" size=1>${register_msg.password_msg}</font></td>

            </tr>

            <tr>
                <td>确认密码</td>
                <td><input type="password" name="repassword" style="width: 154px; "></td><br>
                <td><font color="red" size=1>${register_msg.repassword_msg}</font></td>

            </tr>

            <tr>
                <td> &nbsp;</td>
                <td> <input type="submit" value="注册" style="width: 141px; "></td>

            </tr>
        </table>


    </form>


</body>
</html>

servlet:注意看错误信息是怎么封装到map里面的.

package com.lm.web;

import java.io.IOException;

import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;

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

import org.apache.commons.beanutils.BeanUtils;

import com.lm.domain.User;
import com.lm.exception.UserException;
import com.lm.service.UserService;
import com.lm.service.impl.UserServiceImpl;

/**
 * Servlet implementation class RegisterServlet
 */
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        User user = new User();
        //先进行校验 在进行seivice调用

        try {
            BeanUtils.populate(user, request.getParameterMap());
            Map<String,String> map = user.isValidate11();
            if(map!=null&&map.size()>0) {//注册信息有错误
                request.setAttribute("register_msg",map);
                request.getRequestDispatcher("register.jsp").forward(request, response);
                return;
            }

            UserService userService = new UserServiceImpl();
            userService.AddUser(user);
            System.out.println("用户插入成功");
            request.getSession().setAttribute("login_user", user);
            request.getRequestDispatcher("will_login.jsp").forward(request, response);


        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

总结上述:如果有错误就会执行跳转和return,不会执行return下面的语句.之后错误信息会在jsp页面进行显示(因为错误信息已经封装好了,只需要跳转到jsp页面,之后错误信息就会通过EL表达式进行展现出来).

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务