JFinal Web开发学习注册界面和后端验证

Posted wyhluckydog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于JFinal Web开发学习注册界面和后端验证的主要内容,如果未能解决你的问题,请参考以下文章

web前端和后端的不同点是啥呢?

网站啥的要分前端和后端的?是啥意思?

前端开发和后端开发的区别?

JFinal Web开发学习使用layUI美化的登录功能

前端和后端开发有啥区别吗

前端和后端开发有啥区别吗?