• JFinal Web开发学习(五)注册界面和后端验证


    效果:

    直接点击注册后 :

    后端验证是可靠地,前端js验证是不可靠的。只需要在浏览器删除js验证代码即可突破js验证。 
    1.注册界面 
    在WebRoot下新建regist.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ page isELIgnored="false" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>注册</title>
    </head>
    <body>
        <form action="regist" method="post">
            用户名:<input name="reg.name" type="text" >${nameErrMsg}<br>
            密码:&nbsp;<input name="reg.pwd" type="password">${pwdErrMsg}<br>
            验证码:<input name="reg.yzm" type="text"><img src="/yzm"><br>${yzmErrMsg}
            <button type="submit">注册</button>
        </form>
    </body>
    </html>

    使用原生html书写,可根据自己的需求美化,使用各种优秀前端框架. 
    2.写后端验证 
    在validate包中新建RegistValidator继承JFinal的Validator 
    在重写的validate方法中加入自己需要验证的字段

    package cn.pangpython.validate;
    
    import com.jfinal.core.Controller;
    import com.jfinal.validate.Validator;
    
    /**
     * @author pangPython
     *  注册的验证器
     */
    public class RegistValidator extends Validator {
    
        @Override
        protected void handleError(Controller arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        protected void validate(Controller arg0) {
            validateRequired("reg.name", "nameErrMsg", "请填写用户名!");
            validateRequired("reg.pwd", "pwdErrMsg", "请填写密码!");
            validateRequired("reg.yzm", "yzmErrMsg", "请填写验证码!");
        }
    
    }

    3.新建公共控制器CommonController继承JFinal的Controller 
    在里边写一些前后端通用的方法,这里先写验证码生成

    package cn.pangpython.controller;
    
    import com.jfinal.core.ActionKey;
    import com.jfinal.core.Controller;
    import com.jfinal.render.CaptchaRender;
    
    /**
     * @author pangPython
     *  通用控制器,写一些通用的方法,验证码生成等
     */
    public class CommonController extends Controller {
            @ActionKey("/yzm")
            public void verifycode(){
                render(new CaptchaRender());
            }
    }

    Jfinal的验证码生成很简单,就这么几个单词….验证码校验是更简单(在JFinal2.2中) 
    要把这个控制器在路由中绑定一个url 
    FrontRoutes.java

    package cn.pangpython.routes;
    
    import com.jfinal.config.Routes;
    
    import cn.pangpython.controller.CommonController;
    import cn.pangpython.controller.IndexController;
    import cn.pangpython.controller.UserController;
    
    /**
     * @author pangPython
     * 前台路由
     */
    public class FrontRoutes extends Routes {
    
        @Override
        public void config() {
            add("/",IndexController.class);
            add("/user",UserController.class);
            add("/common",CommonController.class);
    
        }
    
    }

    4.在首页控制器中写注册方法 
    IndexController.java

    package cn.pangpython.controller;
    
    import com.jfinal.aop.Before;
    import com.jfinal.core.Controller;
    
    import cn.pangpython.validate.RegistValidator;
    
    /**
     * @author pangPython
     * 主页控制器
     */
    public class IndexController extends Controller {
        public void index(){
            renderText("index");
        }
    
        //渲染注册页面
        public void regpage(){
            render("regist.html");
        }
    
        //处理注册
        @Before(RegistValidator.class)
        public void regist(){
            renderText("注册成功!");
        }
    
    }

    5.在MyJFinalConfig中的configConstant(Constants me)函数中添加映射视图:

        @Override
        public void configConstant(Constants me) {
            // 开发模式
            me.setDevMode(true);
            //这里可以通过配置文件来读取配置参数,更灵活
            
            //指定视图
            me.setViewType(ViewType.JSP);
        }

    具体功能实现后面系列博客中会继续更新…

    : )

    参考博客:https://blog.csdn.net/u012995856/article/details/52781479

  • 相关阅读:
    删除了原有的offset之后再次启动会报错park Streaming from Kafka has error numRecords must not ...
    sparkStreaming消费kafka-1.0.1方式:direct方式(存储offset到Hbase)
    sparkStreaming消费kafka-1.0.1方式:direct方式(存储offset到zookeeper)
    进程的管理(五)-进程的实现
    进程管理(四)-进程的状态以及转换
    进程管理(三)-进程的层次
    numpy库的认识以及数组的创建
    进程管理(二)-进程的终止
    进程管理(一)-进程的概念以及进程的创建
    python爬取b站排行榜
  • 原文地址:https://www.cnblogs.com/wyhluckdog/p/10294072.html
Copyright © 2020-2023  润新知