效果:

直接点击注册后 :

后端验证是可靠地,前端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开发学习(五)注册界面和后端验证的更多相关文章

  1. JFinal Web开发学习(六)验证码验证和注册细节

    效果: 实现了注册界面的验证码验证.确认密码.密码md5加盐加密.C3P0插件数据库操作.读取外部配置文件. 1.在注册页面添加了确认密码输入框,修改了字段名称 <!DOCTYPE html&g ...

  2. JFinal Web开发学习(二)目录、架构、package设计

    package分类 config是JFinal的项目配置 controller是控制器 handler可以设置全局处理器,例如判断用户请求中是否直接请求 FreeMarker的模板文件ftl或者htm ...

  3. JFinal Web开发学习(七)使用layUI美化的登录功能

    效果: 验证码还是没有布局好.背景比较怀古. 1.写前端html login.jsp <!DOCTYPE html> <html> <head> <meta ...

  4. JFinal Web开发学习(一)开启HelloWorld

    初次接触JFinal框架,接触过MVC思想,接触过Spring. JFinal官网: http://www.jfinal.com/ 之前很嫌弃JavaWeb开发,主要原因是繁琐的xml配置. 官方推荐 ...

  5. JFinal Web开发学习(三)前后台路由设计

    效果图: 一.写控制器 1.在controller包中新建AdminController后台控制器,继承Controller,实现一个index方法,作为的处理方法. /admin 后面,这个控制器中 ...

  6. JFinal Web开发学习(九)后台添加前台显示博客

    效果: 发博客: 显示博客: 后台:使用hui-admin,文章编辑器是百度开源的ueditor 前台:使用layui前端框架 1.写控制器BlogController controller包中 pa ...

  7. JFinal Web开发学习(八)后台集成H-ui-admin前端框架

    h-ui-admin是一个很不错的前端框架h-ui实现的一个后台管理系统的前端. 1.在WebRoot目录下新建admin目录 2.下载h-ui-admin(当前最新是2.5版本)并解压至admin文 ...

  8. JFinal Web开发学习(四)数据库连接与自动生成model

    1.新建数据库jfinal_test,user表 /* Navicat MySQL Data Transfer Source Server : . Source Server Version : 50 ...

  9. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

随机推荐

  1. 如何使用JBDC修改数据

    1.JDBC取得数据库Connection连接对象conn, Connection conn=null;   //数据库连接对象 String strSql=null;    //sql语句对象 // ...

  2. ArcGIS案例学习笔记-查找重叠的多边形

    ArcGIS案例学习笔记-查找重叠的多边形 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于多边形图层,查找具有重叠(相互覆盖)的面 数据: 方法: 1. ...

  3. Chatbot中的填槽(Slot Filling)(转)

    以下内容是学习了@我偏笑发布在公众号hanniman文章后,加上自己观点重新输出配图的文章 原文链接:http://t.cn/RE0FkgD 跳槽,吐槽,匹诺曹都听过,这个填槽,emmmm,黑人问号脸 ...

  4. vs2017中char* str = "1234asd56";会报错,——const char*类型的值不能用于初始化char*类型的实体

    原因: "1234asd56"是常量 ,正确的写法本身就是:const char* str = "1234asd56"; 之所以之前的vs版本可以写成char* ...

  5. qt 中的基本知识

    1. 由 .ui 文件生成界面头文件: uic -o ui_dialog.h dialog.ui 2. 在工程目录下生成与平台无关的工程文件 : qmake -project 3. 生成与平台相关的  ...

  6. spring .cloud ------------java.lang.RuntimeException: com.netflix.client.ClientException,Caused by: java.lang.IllegalArgumentException: MIME type may not contain reserved characters

    1.问题的发生 Feign在默认情况下使用的是JDK原生的URLConnection发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用HTTP的persistence connect ...

  7. mysql执行流程

      https://www.jianshu.com/p/71a98f1347b9 image   image SQL示例: SELECT DISTINCT < select_list > ...

  8. powerdessigner使用教程

    https://jingyan.baidu.com/article/86fae346e089393c49121a11.html

  9. git 使用说明

    git使用的一些说明 关于新用户1. 到优居客群里下载git客户端2. 安装之后打开git bash3. 生成密钥,执行如下命令:    ssh-keygen -t rsa -C "你的邮箱 ...

  10. canvas 动画 时钟clock

    <canvas id="clock" width="500" height="500"></canvas> func ...