• MVC案例——注册用户


    页面使用重定向可以避免表单的重复提交问题

    如果页面中需要使用域对象中的属性,必须使用转发。此外都使用重定向。

    逻辑关系:

    点击超链——>add.jsp(接收meg信息,接收参数的值)——>add.do(判断用户名是否存在)——存在(放入meg信息到request域中)——>add.jsp

                                           ——不存在(重定向)——>success.jsp

    步骤:

    1.在query.jsp中点击新建用户的超链接,跳转页面为当前目录的add.jsp

    2.add.jsp内容

    <body>
    <%
        Object meg = request.getAttribute("message");
        if (meg!=null){
            %>
            <br>
            <b style="color: red"><%=meg%></b>
    <br><br>
    <%
        }
    %>
    
    <form action="add.do" method="post">
        <table>
            <tr>
                <td>CustomerName:</td>
                <td><input type="text" name="name"  value="<%=request.getParameter("name")==null?"":request.getParameter("name")%>"></td>
            </tr>
            <tr>
                <td>CustomerPassword:</td>
                <td><input type="password" name="password" value="<%=request.getParameter("password")==null?"":request.getParameter("password")%>"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="添加" ></td>
            </tr>
        </table>
    </form>
    </body>
    

      

    3.add.do

      private void add(HttpServletRequest req, HttpServletResponse resp) {
            //1.获取表单参数:name,address,phone
            String name = req.getParameter("name");
            String password = req.getParameter("password");
    
            //2.检验name是否存在:
            //2.1调用CustomerDAO的getCountWithName(String name)获取name在数据库中是否存在
            long count  = customerDAO.getCountWithName(name);
    
            //2.2若返回值大于0,则响应add.jsp页面:
            //通过转发的方式来响应add.jsp
            if (count>0){
                //2.2.1要求在add.jsp页面显示一个错误信息:用户名name已经被占用,请重新选择
                req.setAttribute("message","用户名"+name+"已经被占用,请重新选择!");
                //2.2.2add.jsp的表单值可以回显
                //通过value="<%= request.getParameter("name")==null?"" : request.getParameter("name")%>"
                try {
                    req.getRequestDispatcher("add.jsp").forward(req,resp);
                } catch (ServletException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return;
            }
    
            Customer customer = new Customer(name,password);
            customerDAO.save(customer);
            try {
                resp.sendRedirect("success.jsp");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    

      

    4.success.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <b>ADD SUCCESS</b>
        <br><br>
        <a href="query.jsp">return</a>
    </body>
    </html>
    

      

    效果图:

  • 相关阅读:
    换装WIN10(windows)那点儿事,换装操作系统一文通,玩转安装操作系统
    Win10永久版低价购买及激活工具使用说明
    Win10系统自带软件删除和恢复工具
    微软免费AI作文打分软件升级:雅思考研四六级都能用,还能查单词给替换
    扫描全能王 v5.13.0.20190916 去水印和广告版
    Vue组件
    vue自定义过滤器的创建和使用
    vue自定义指令的创建和使用
    vue的基础使用
    vue的概述
  • 原文地址:https://www.cnblogs.com/yangHS/p/11137993.html
Copyright © 2020-2023  润新知