JFinal上手demo(2)

简介: JFinal上手demo

2.IndexController.java


/**
 * IndexController
 */
public class IndexController extends Controller {
    public void index() {
        render("index.jsp");
    }
}

注意:jfianl在经过1.InitConfig.java中的me.add("/", IndexController.class, "/index");路由后,你在地址栏输入


http://localhost:8080/ymeng/


就会访问到IndexController 的index方法(这是jfianl的一种默认写法)中,当然,这与IndexController.class, "/index")中的第三个参数是无关的,第三个参数指定的是前端的路径,

然后index()方法指定你访问到的页面内容是index.jsp。


3.MembersController.java


public class MembersController extends Controller {
    public void index() {
        setAttr("memPage", Members.me.paginate(getParaToInt(0, 1), 10));
        render("memlist.jsp");
    }
}

注意:我们只需要知道,这个方法就是将数据库中的数据指定到memlist.jsp中的memPage属性中。


4.Members.java


public class Members  extends Model<Members>{
    private static final long serialVersionUID = 4460796361065191809L;
    public static final Members me = new Members();// 创建模型
    /**
     * @param pageNumber 第几页
     * @param pageSize 每页大小
     * @return
     */
    public Page<Members> paginate(int pageNumber, int pageSize) {
        return paginate(pageNumber, pageSize, "select *", "from members order by realname");
    }
}

注意:名如其意,paginate方法看起来就是来处理分页问题的。至于第三、第四、更多的参数则是sql语句拼接。


那么后端我们需要开发的内容就完结了,目录结构如下:

image.png



添加前端文件

image.png



1.constants.js


var common = {
    ctx : "/ymeng"
};


把项目的根路径记录下来,在js中可能要用到,本例子中暂时没有用到。


2.taglib.jsp


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />


导入常用的jstl,以及设置项目路径,这个很重要!!!!


3._paginate.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ include file="/common/jsp/taglib.jsp"%>
<c:if test="${urlParas == null}">
    <c:set var="urlParas" value="" />
</c:if>
<c:if test="${(totalPage > 0) && (currentPage <= totalPage)}">
    <c:set var="startPage" value="${currentPage - 4}" />
    <c:if test="${startPage < 1}" >
        <c:set var="startPage" value="1" />
    </c:if>
    <c:set var="endPage" value="${currentPage + 4}" />
    <c:if test="${endPage > totalPage}" >
        <c:set var="endPage" value="totalPage" />
    </c:if>
    <div class="pagination">
        <c:if test="${currentPage <= 8}">
            <c:set var="startPage" value="1" />
        </c:if>
        <c:if test="${(totalPage - currentPage) < 8}">
            <c:set var="endPage" value="${totalPage}" />
        </c:if>
        <c:choose>
            <c:when test="${currentPage == 1}">
                <span class="disabled prev_page">上页</span>
            </c:when>
            <c:otherwise>
                <a href="${ctx}${actionUrl}${currentPage - 1}${urlParas}" class="prev_page">上页</a>
            </c:otherwise>
        </c:choose>
        <c:if test="${currentPage > 8}">
            <a href="${ctx}${actionUrl}${1}${urlParas}">${1}</a>
            <a href="${ctx}${actionUrl}${2}${urlParas}">${2}</a>
            <span class="gap">…</span>
        </c:if>
        <c:forEach begin="${startPage}" end="${endPage}" var="i">
            <c:choose>
                <c:when test="${currentPage == i}">
                    <span class="current">${i}</span>
                </c:when>
                <c:otherwise>
                    <a href="${ctx}${actionUrl}${i}${urlParas}">${i}</a>
                </c:otherwise>
            </c:choose>
        </c:forEach>
        <c:if test="${(totalPage - currentPage) >= 8}">
            <span class="gap">…</span>
            <a href="${ctx}${actionUrl}${totalPage - 1}${urlParas}">${totalPage - 1}</a>
            <a href="${ctx}${actionUrl}${totalPage}${urlParas}">${totalPage}</a>
        </c:if>
        <c:choose>
            <c:when test="${currentPage == totalPage}">
                <span class="disabled next_page">下页</span>
            </c:when>
            <c:otherwise>
                <a href="${ctx}${actionUrl}${currentPage + 1}${urlParas}" class="next_page" rel="next">下页</a>
            </c:otherwise>
        </c:choose>
    </div>
</c:if>

这里面我加入了“${ctx}”,否则会访问路径错误!

相关文章
|
XML 前端开发 Java
JFinal上手demo(1)
JFinal上手demo
148 0
JFinal上手demo(1)
|
Web App开发 前端开发 Java
JFinal上手demo
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/48286709 jfinal初上手,搭建demo小项目。
1198 0
|
2月前
|
前端开发 JavaScript UED
JFinal框架中防止表单重复提交的方法
每种方法都有其优势和局限性。Token机制能提供较为稳定可靠的保护,但增加了服务器端的处理负担。锁定机制在处理并发请求时更有效,但可能导致用户体验的下降。JavaScript客户端控制提供了良好的用户体验,但依赖于客户端的执行环境。在实际应用中,可以根据具体的场景和需求,选择最适合的方法,或者将多种方法组合使用,以达到最佳的效果。
26 10
|
JavaScript 前端开发 Java
JFinal框架单文件、多文件上传详解
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/79386540 简介  ...
2784 0
|
Java PHP Spring
从今天开始,要入jfinal的坑了,试试这破框架好不好用。
公司要用jfinal,所以我要入坑了。 听说时去年很火的java框架,不知好不好,试试水吧。 看官网就想吐槽 看个文档吧,还要注册。。。现在是2017年吗?? 好吧,注册完了,接着就。
2017 0
|
Java 调度 Maven
JFinal框架_定时触发程序
JFinal框架进行作业调度,使用JFinal-ext2与quartzf进行配置。 maven说明: com.jfinal jfinal 3.2 com.jfinal jfinal-ext2 2.
1698 0
|
Java 数据格式 XML
jfinal框架文件下载功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72779838 一. 前言   上一篇博客我们了解了struts2框架的文件下载功能代码,我们可以从中总结到,struts2主要是通过其xml的配置来处理文件下载的,也就是将普通io流文件下载的页面响应方式的这部分代码分离出来,使用xml配置来处理,这也是struts2的特性。
1754 0
下一篇
无影云桌面