jfinal与bootstrap的登录跳转实战(1)

简介: jfinal与bootstrap的登录跳转实战

前言:终于来了一篇有质量的文章,我个人感觉非常不错,《jfinal与bootstrap之间的登录跳转实战》。具体内容包含有点击登录弹出模态框、点击登录确认按钮后的validate、jfinal的validate、jfinal的session管理、ajax请求与返回信息处理、页面间智能跳转。


弹出模态框以及jquery validate可以参照jquery weebox总结、弹出窗口不居中显示?、jquery validate初上手系列文章。


从jfinal的validate说起


当然你可以参考jfinal提供的帮助文档,我当然也必须是参照了官方文档,当然对于这种开源技术每个人在使用的过程中肯定有千奇百态的问题,那么依据我的实战结果,我想再赘述一遍也是非常有必要的。


1.指定config中的路由


me.add("/login", MembersController.class, "/pages/login");


2.编写conroller类

public class MembersController extends BaseController {
    @Before(MembersValidator.class)
    @ActionKey("/login")
    public void login() {
        // 获取用户名
        String name = getPara("username");
        // 获取密码
        String password = getPara("password");
        Members mem = Members.me.getMemByNamePasswd(name, CipherUtils.generatePassword(password));
        if (mem != null) {
            // 保存session
            getSession().setAttribute("username", name);
            // 最后登录ip
            mem.set("lastip", getRequest().getRemoteHost());
            mem.set("lastvisit", DateUtils.getCurrentTime());
            mem.update();
            ajaxDoneSuccess("登录成功!");
        } else {
            ajaxDoneError("用户不存在!");
        }
        // 跳转到前台发起请求的路径
        renderJson();
    }
}


注意:


使用before绑定validate

使用actionkey绑定前端请求action名

使用getSession().setAttribute来操作session,同时前端稍后介绍如何使用

封装ajaxDone系列方法进行数据格式绑定,前端稍后介绍

使用renderJson方法对ajax请求返回结果数据进行json格式输出

接下来你需要看看我封装的baseController

3.BaseController

package com.hc.jf.controller;
import com.jfinal.core.Controller;
public class BaseController extends Controller {
    protected void ajaxDone(int statusCode, String message) {
        setAttr("statusCode", statusCode);
        setAttr("message", message);
        // 跳转路径
        String forwardUrl = getPara("forwardUrl");
        if (forwardUrl == null || forwardUrl.equals("")) {
            forwardUrl = getRequest().getRequestURL().toString();
        }
        setAttr("forwardUrl", forwardUrl);
        setAttr("callbackType", getPara("callbackType"));
    }
    protected void ajaxDoneSuccess(String message) {
        ajaxDone(200, message);
    }
    protected void ajaxDoneInfo(String message) {
        ajaxDone(201, message);
    }
    protected void ajaxDoneSuccess(String message, String forwarUrl) {
        ajaxDone(200, message);
    }
    protected void ajaxDoneError(String message) {
        ajaxDone(300, message);
    }
    protected void ajaxDoneError(String message, String forwarUrl) {
        ajaxDone(300, message);
    }
}

注意:


分别封装成功、错误、info级别的信息

增加了statusCode、message、forwardUrl、callbackType四个属性。

以上两个属性和前端也有对应,稍后介绍。


4.MembersValidator

package com.hc.jf.validator;
import com.hc.jf.entity.Members;
import com.jfinal.core.Controller;
import com.jfinal.validate.Validator;
public class MembersValidator extends Validator {
    @Override
    protected void validate(Controller controller) {
        validateRequiredString("username", "usernameMsg", "请输入用户名!");
        validateRequiredString("password", "passwordMsg", "请输入密码!");
    }
    @Override
    protected void handleError(Controller controller) {
        controller.keepModel(Members.class);
        controller.render("login.jsp");
    }
}

注意:


这个validate确实没什么屌用,因为前端已经使用jquery validate进行了check,然而请注意,如果你没有使用jquery的或者为了网络安全等等,有这个也不错。

好吧,我其实不想加入这个validate,但是我觉得可以我还没有想到用处,但是心有戚戚焉,觉得它还是有用的。


相关文章
|
3月前
|
前端开发 JavaScript Python
Web实战:基于Django与Bootstrap的在线计算器
Web实战:基于Django与Bootstrap的在线计算器
79 0
|
7月前
|
编解码 前端开发 JavaScript
Web进阶:Day7 响应式、BootStrap、实战演练
Web进阶:Day7 响应式、BootStrap、实战演练
57 0
Web进阶:Day7 响应式、BootStrap、实战演练
|
前端开发 JavaScript 容器
Bootstrap实战 - 单页面网站
单页面结构简单、布局清晰,常常用来做手机 App 或者某个产品的下载介绍页面。现在,展示型网页整体趋向于单页网站设计,这样一次性把核心信息展现出来,对于用户来说更加直观和简单,能够快速了解一个产品。
260 0
Bootstrap实战 - 单页面网站
|
前端开发 容器
Bootstrap实战 - 评论列表
Bootstrap 是当前很受欢迎的前端框架,如何用 Bootstrap 快速完成一个网站?社交媒体网站盛行,人们常常会使用评论表达自己的观点,评论功能已然成为网站的一部分。一个基础的媒体对象由四个部分组成...
279 0
|
前端开发 数据安全/隐私保护 容器
Bootstrap实战 - 注册和登录
注册和登录在社交和商业网站中是必不可少的一个部分。
192 0
Bootstrap实战 - 注册和登录
|
移动开发 前端开发 JavaScript
Bootstrap实战 - 响应式布局
响应式布局就是一个网站能够兼容多个终端,而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的。导航栏与轮播在大部分网站的头部占很高的比重,特别是导航栏,扮演着网站地图的角色。在响应式布局中,要求导航栏能够根据终端屏幕大小显示不同的样式。
142 0
Bootstrap实战 - 响应式布局
|
前端开发 JavaScript
jfinal与bootstrap的登出实战
jfinal与bootstrap的登出实战
108 0
jfinal与bootstrap的登出实战
|
前端开发 JavaScript
jfinal与bootstrap的登录跳转实战(2)
jfinal与bootstrap的登录跳转实战
243 0
jfinal与bootstrap的登录跳转实战(2)
N..
|
29天前
|
开发框架 前端开发 UED
Bootstrap的CSS组件
Bootstrap的CSS组件
N..
13 0
|
6月前
|
前端开发 容器