首页 > 其他分享 >JFinal使用

JFinal使用

时间:2022-11-24 17:35:15浏览次数:31  
标签:Blog void class blog ActionKey 使用 JFinal public


下面主要介绍JFinal的最简单的配置,包括路由映射,数据库配置和操作,返回结果。

1.在web.xml中做如下配置:

<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.xxh.demo.DemoConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2.新建配置文件DemoConfig,其实这里主要注意的是数据库的配置即可,虽然路由也可以在这里配置,但是一般都使用注解了。

public class DemoConfig extends JFinalConfig {

@Override
public void configConstant(Constants constants) {
constants.setDevMode(true);
}

@Override
public void configRoute(Routes routes) {

routes.add("/hello", HelloController.class);
routes.add("/blog", BlogController.class);
}

@Override
public void configEngine(Engine engine) {
// engine.addSharedFunction("/_view/common/__layout.html");
// engine.addSharedFunction("/_view/common/_paginate.html");
// engine.addSharedFunction("/_view/common/__admin_layout.html");
}

@Override
public void configPlugin(Plugins plugins) {
loadPropertyFile("config.properties");
System.out.println(getProperty("jdbcUrl") + "..." + getProperty("username") + "..." + getProperty("password"));
C3p0Plugin cp = new C3p0Plugin(getProperty("jdbcUrl")
, getProperty("username"), getProperty("password"));

plugins.add(cp);

ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
plugins.add(arp);

/**
* 必须加上这个配置,否则getModel的时候会抛出如下异常
* com.jfinal.plugin.activerecord.ActiveRecordException:
* The Table mapping of model:
* com.xxh.bean.Blog not exists or the ActiveRecordPlugin not start.
*/
arp.addMapping("blog", Blog.class);

}

@Override
public void configInterceptor(Interceptors interceptors) {

}

@Override
public void configHandler(Handlers handlers) {

}
}

3.注解路由配置和最简单的返回文本数据和页面

public class HelloController extends Controller {

public void index() {
renderText("Hello Jfinal world");
}

@ActionKey("/login")
public void login() {
renderText("login");
}

@ActionKey("/testRender")
public void testRender() {
render("testRender.html");
}

}

4.对于数据库的操作过程如下:

定义Java Bean

public class Blog extends Model {

public static final Blog me = new Blog();

}

执行数据库的增删查改

下面方法中,返回json数据使用的是​​renderJson()​​方法,添加的时候需要new对象,其他使用静态公共对象

public class BlogController extends Controller {
@ActionKey("/insertTest")
public void insertTest() {
Blog blog = new Blog();
blog.set("title", "xxh").set("content", "hjee").save();
renderJson(blog.toJson());
}

@ActionKey("/deleteTest")
public void deleteTest() {
boolean flag = Blog.me.deleteById(1);
renderText(flag+"");
}

@ActionKey("/updateTest")
public void updateTest() {
boolean flag = Blog.me.findByIdLoadColumns(2, "id,title,content").set("title", "gggg").update();
renderText(flag+"");
}

@ActionKey("/selectTest")
public void selectTest() {
List<Blog> blog = Blog.me.find("select * from blog");
for (Blog b : blog) {
System.out.println(b.getInt("userId"));
}

renderJson(blog);
}

@ActionKey("/save")
public void save() {
String title = getPara("title");
String content = getPara("content");
System.out.println(title + "...." + content);

Blog blog = getModel(Blog.class, "");

System.out.println(blog.toJson());

// renderText(blog.toString() + "----" + title + "...." + content);
renderJson(blog.toJson());
}

@Before(LoginValidator.class)
@ActionKey("/testLogin")
public void testLogin() {
renderText("testLogin");
}
}

上面代码还设计了一个验证器的东西,其实就是拦截器,用来验证字段的规则,不符合做相应的跳转之类的,定义如下:

public class LoginValidator extends Validator {
@Override
protected void validate(Controller controller) {
validateRequiredString("name", "nameMsg", "请输入用户名");
validateRequiredString("pass", "passMsg", "请输入密码");
}

@Override
protected void handleError(Controller controller) {
controller.keepPara("name");
controller.render("login.html");
}
}


标签:Blog,void,class,blog,ActionKey,使用,JFinal,public
From: https://blog.51cto.com/u_15890522/5884388

相关文章

  • nginx使用wss协议出现wss handshake: Unexpected response code: 400
    在nginx中配置好https协议之后,我以为可以使用反向代理在tomcat容器中的页面js调用websocket用wss了,但是没想到居然报了个错:handshake:Unexpectedresponsecode:400查了一......
  • C# 如何将Word、Excel、PPT转成PDF文件(使用Spire提供的组件)学习
    第一步:新建一个winform项目,下载Spire组件dll下载Spire.Doc、Spire.XLS、Spire.Presentation,路径:工具--NuGet包管理器--管理解决方案NuGet程序包1)Spire.Doc:word转成其它......
  • 服务器配置nginx和tomcat都使用https协议
    如果服务器需要配置https协议,我们很容易的在nginx上加入相应的证书配置就可以实现,但是如果我们服务器的环境有php和Java这两种的话,而Java使用的是tomcat容器,但是又想实现两......
  • jsTree使用
    jsTree可以显示一个树状视图,支持复选框选中,选中触发事件等:其中主要用到的方法有:1.设置数据:这里的data一般是ajax请求服务器返回的,必须要有id,parent,text这三个字段用于显......
  • redis基本使用
    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sortedset:有序集合)。以下是一些基本用法1.string添加获取setname"xiaoxiaohei"getname获取字串GETR......
  • ILA使用说明
    集成逻辑分析仪(IntegratedLogicAnalyzer:ILA)功能允许用户在FPGA设备上执行系统内调试后实现的设计。当设计中需要监视信号时,应使用此功能。用户还可以使用此功能在硬......
  • Vue中qrcode的使用方法(生成二维码插件) / 前端页面根据URL链接生成二维码
      1.下载npminstallqrcode--save-dev2.引入(在所需要的页面中引入)importQRCodefrom“qrcode”;//引入生成二维码插件3.生成二维码<canvasid="QRCode_head......
  • 在使用百度地图的SDK时,出现.LocationDemo has leaked ServiceConnection 异常并且无法
    Activitycom.example.diarysytsem.LocationDemohasleakedServiceConnectioncom.baidu.location.c@4247e170thatwasoriginallyboundhere这个是因为在配置文件中没......
  • Jenkin安装及使用说明
    介绍Jenkins是基于Java开发的一种持续集成及交付工具,可用于自动打包部署项目内容下载安装官网镜像地址:https://mirrors.jenkins.io/下载地址:https://jenkins.io/......
  • ubuntu 使用入门
    我使用的版本是20.04.1,经验与大家分享:1.安装时subnet设置:192.168.x.0/24   x为你的网关对应值,这只是最常见设置,其它情况未知2.安装完成后需要设置root密码......