将请求和响应从jsp发送到servlet

 凌波_薇步 发布于 2023-02-07 08:54

我正在为注册表单编写验证servlet.表单位于.jsp文件中,并具有以下布局:

        

Register

User name:

First Name:

Last Name:

Email Address:

Password:

Retype password:

验证代码应检查每个字段是否满足一组约束,如果不满足,则写回jsp错误消息.

ValidationServlet.java

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // get request parameters for username and password
        String user = request.getParameter("username");
        String firstName = request.getParameter("first_name");
        String lastName = request.getParameter("last_name");
        String email = request.getParameter("email");   
        String pwd = request.getParameter("password");
        String pwd2 = request.getParameter("password2");
        // Validate parameters and forward them to the ejb
        Map messages = new HashMap();

        if(user != null) {
            // Validate user name
            if(user.trim().isEmpty()) {
                messages.put("error", "Please enter username");
            } else if(!user.matches("^[a-zA-Z0-9]$")) {
                messages.put("error", "Invalid username.");
            } else if(user.length() > MAX_LEN){
                messages.put("error", "Invalid username");
            } else {
                // Username is valid
                messages.put("success", "good");
            }
        }
        if(firstName != null) {
            // Validate first name
            if(firstName.trim().isEmpty()) {
                messages.put("error", "Please enter your first name");
            } else if(!firstName.matches("^[a-zA-Z]$")) {
                messages.put("error", "Invalid name. Use alpha values only.");
            } else if(firstName.length() > MAX_LEN){
                messages.put("error", "Invalid name. Name should be at most " + MAX_LEN + " characters long");
            } else {
                // First name is valid
                messages.put("success", "good");
            }
        }
        if(lastName != null) {
            // Validate last name
            if(lastName.trim().isEmpty()) {
                messages.put("error", "Please enter your last name");
            } else if(!lastName.matches("^[a-zA-Z]$")) {
                messages.put("error", "Invalid name. Use alpha values only.");
            } else if(lastName.length() > MAX_LEN){
                messages.put("error", "Invalid name. Name should be at most " + MAX_LEN + " characters long");
            } else {
                // Last name is valid
                messages.put("success", "good");
            }
        }
        if (email != null) {
            // Email is specified as request parameter, do the business logic here.
            if (email.trim().isEmpty()) {
                messages.put("error", "Please enter email");
            } else if (!email.matches("([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)")) {
                messages.put("error", "Invalid email, please try again.");
            } else {
                // Email is valid
                messages.put("success", "good");
            }
        }
        if(pwd != null) {
            // Validate password
            if(pwd.trim().isEmpty()) {
                messages.put("error", "Please enter password");
            } else if(pwd.length() > MAX_LEN){
                messages.put("error", "Invalid password");
            } else {
                // Password is valid
                messages.put("success", "good");
            }
        }
        if(pwd2 != null) {
            // Validate password
            if(pwd2.trim().isEmpty()) {
                messages.put("error", "Please enter password");
            } else if(pwd2.length() > MAX_LEN){
                messages.put("error", "Invalid password");
            } else if(!pwd2.equals(pwd)) {
                messages.put("error", "Passwords do not match");
            } else {
                // Password is valid
                messages.put("success", "good");
            }
        }
        // Put messages in request scope so that it's accessible in EL by
        // ${messages}.
        request.setAttribute("messages", messages);

        // Forward request to JSP for display.
        request.getRequestDispatcher("login.jsp").forward(request,
                response);
    }

我的问题是如何从哈希映射中访问每个消息并在jsp中的相应输入字段之前相应地显示它们?

1 个回答
  • 您需要更改每个输入字段的键,
    例如错误消息

    messages.put("user", "Please enter username");  //for user
    messages.put("firstName", "Please enter your first name");  //for first_name 
    .......
    .......
    .......
    

    如果要显示成功,则可以在地图中设置成功,否则不设置.

    message在JSP上访问地图

    <form action="Register">
      <p>
         User name: <br />
           <input type="text" name="username" /><c:out value="${messages['user']}"/><br /> 
         First Name: <br />
            <input type="text" name="fist_name" /><c:out value="${messages['firstName']}"/><br /> 
         .........
         .........
         .........
    
         <input type="submit" value="Register" />
      </p>
    </form>
    

    也可以看看

    EL信息

    2023-02-07 08:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有