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

时间:2022-02-02 23:50:20

效果图:

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

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

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

一、写控制器 
1.在controller包中新建AdminController后台控制器,继承Controller,实现一个index方法,作为的处理方法.

/admin

后面,这个控制器中还可以定义管理员登录等的一些方法.

package cn.pangpython.controller;

import com.jfinal.core.Controller;

public class AdminController extends Controller {
public void index(){
renderText("后台主页");
}
}

2.在controller包中新建UserController用户控制器,继承Controller

package cn.pangpython.controller;

import com.jfinal.core.Controller;

public class UserController extends Controller {
public void index(){
renderText("用户主页");
}
}

二、定义前后端路由,并绑定控制器 
1.在routes包中新建FrontRoutes路由器,继承JFinal的Routes

package cn.pangpython.routes;

import com.jfinal.config.Routes;

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); } }

其中,将根url与IndexController首页控制器绑定,将user Url与用户控制器绑定 
2.新建AdminRoutes继承JFinal的Routes

package cn.pangpython.routes;

import com.jfinal.config.Routes;

import cn.pangpython.controller.AdminController;

/**
* @author pangPython
* 后台路由
*/
public class AdminRoutes extends Routes { @Override
public void config() {
add("/admin",AdminController.class); } }

其中,设置admin URL与后台控制器绑定 
三、将路由添加进JFinal配置文件中 
在config包中MyJFinalConfig类中重写的configRoute方法中实例化前后台路由

@Override
public void configRoute(Routes me) {
//添加前台路由
me.add(new FrontRoutes());
//添加后台路由
me.add(new AdminRoutes());
}

单独定义前后台路由这个方法是JFinal 
官方文档中建议的做法,有利于大项目的分工协同. 
MyJFinalConfig.java

package cn.pangpython.config;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal; import cn.pangpython.controller.IndexController;
import cn.pangpython.routes.AdminRoutes;
import cn.pangpython.routes.FrontRoutes; /**
* @author pangPython
* JFinal 项目配置文件
*/ public class MyJFinalConfig extends JFinalConfig { @Override
public void configConstant(Constants me) {
//开启开发模式
me.setDevMode(true);
//这里可以通过配置文件来读取配置参数,更灵活
} @Override
public void configRoute(Routes me) {
//添加前台路由
me.add(new FrontRoutes());
//添加后台路由
me.add(new AdminRoutes());
} @Override
public void configHandler(Handlers arg0) {
// 这里可以配置全局处理器 防止直接访问模板文件暴露数据库表和字段
} @Override
public void configInterceptor(Interceptors arg0) {
// 这里可以配置拦截器进项权限管理
} @Override
public void configPlugin(Plugins arg0) {
// 这里可以配置JFinal的各种插件,比如数据库插件等
} //使用JFinal内置的jetty启动项目,直接作为java application运行此文件
public static void main(String[] args) {
JFinal.start("WebRoot", 80, "/", 5);
} }

运行MyJFinalConfig文件就可以看到效果了.

参考原文:https://blog.csdn.net/u012995856/article/details/52739246