本篇介绍JFinal项目的搭建和简单功能实现。

JFinal项目搭建

项目搭建

新建一个Dynamic Web Project

Target runtime 为

Default Output Folder 推荐使用WebRoot\WEB-INF\classes

*此处的 Default out folder 必须要与WebRoot\WEB-INF\classes 目录完全一致才可以使用 JFinal 集成的 Jetty 来启动项目。 *

修改 Content directory,推荐输入WebRoot。

jfinal-xxx.jar 与jetty-server-8.1.8.jar 拷贝至项目 WEB-INF\lib 下即可。

Tips:这里的WEB-INF\lib 为WebRoot目录下的和上面配置的保持一致,当然你也可以使用WebContent

修改 web.xml:

jfinal

com.jfinal.core.JFinalFilter

configClass

config.DemoConfig

jfinal

/*

添加DemoConfig:

package config;

import com.jfinal.config.*;

import controller.HelloController;

public class DemoConfig extends JFinalConfig {

// 配置常量值 `如开发模式常量 devMode 的配置,默认视图类型 ViewType的配置`

public void configConstant(Constants me) {

me.setDevMode(true);

}

// 配置 JFinal 访问路由 如下代码配置了将”/hello”映射到 HelloController 这个控制器 http://localhost/hello 将 访 问 HelloController.index() 方

public void configRoute(Routes me) {

me.add("/hello", HelloController.class);

}

// 配置 JFinal 的 Plugin 如数据库访问插件

public void configPlugin(Plugins me) {

}

// 配置 JFinal 的全局拦截器

public void configInterceptor(Interceptors me) {

}

// 配置JFinal的Handler

public void configHandler(Handlers me) {

}

}

添加HelloController:

package controller;

import com.jfinal.core.Controller;

public class HelloController extends Controller {

public void index() {

renderText("Hello JFinal World.");

}

}

Run As --> Run configurations

访问http://localhost/hello

上面的启动配置也可以使用一个任意的main方法代替。在任意一个类文件中添加一个main启动集成的jetty

如在DemoConfig中:

public static void main(String[] args) {

// eclipse 下的启动方式 指定端口和路径

JFinal.start("WebRoot", 8088, "/Demo", 5);

}

连接mysql数据库

修改DemoConfig:

//加载datasource.properties 数据库配置

public void configConstant(Constants me) {

loadPropertyFile("datasource.properties");

me.setEncoding("UTF-8");

me.setDevMode(true);

}

//连接mysql数据库

public void configPlugin(Plugins me) {

C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password").trim());

me.add(c3p0Plugin);

ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);

me.add(arp);

}

//更改启动项目配置 现在就可以直接 `Run As` -->`Java Appliaction` 访问地址`http://localhost:8088/Demo/index.html`

public static void main(String[] args) throws Exception {

JFinal.start("WebRoot", 8088, "/Demo", 5);

}

添加datasource.properties:

jdbcUrl = jdbc:mysql://121.40.78.44/zhitong_test?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

user = root

password =Ne0Print1202

devMode = true

简单的增删查改功能

下面简单实现账号的增删查改。(不要太在意逻辑...)

添加一个简单的html页面,index.html

hello/addUser、hello/deleteUser、hello/findUser和hello/updateUser分别对应着HelloController的四个方法

账号

密码

添加

删除

查询

修改

$(document).ready(function(){

// 点击添加调用 HelloController中的addUser方法,路径"hello/addUser"

// 路径在 DemoConfig - configRoute 已配置好为 /hello

// 账号添加 传入参数 ”账号密码”

$("#add").click(function(){

var _userName = $("#username").val();

var _password = $("#password").val();

$.post("hello/addUser",{userName:_userName,password:_password},function(data){

alert(data);

})

});

// 账号删除 传入参数 ”账号密码”

$("#delete").click(function(){

var _userName = $("#username").val();

var _password = $("#password").val();

$.post("hello/deleteUser",{userName:_userName,password:_password},function(data){

alert(data);

})

});

// 密码查询 传入参数 ”账号” 根据账号 查找密码

$("#find").click(function(){

var _userName = $("#username").val();

$.post("hello/findUser",{userName:_userName},function(data){

alert(data);

})

});

// 密码修改 传入参数 ”账号 新密码” 根据账号 修改密码

$("#update").click(function(){

var _userName = $("#username").val();

var _password = $("#password").val();

$.post("hello/updateUser",{userName:_userName,password:_password},function(data){

alert(data);

})

});

})

在service包中添加和HelloController对应的HelloService

这里使用JFinal独创的 Db + Record 模式 ,提供了Model类之外的数据库操作功能。它充当了MVC中的Model层。

package service;

import java.util.List;

import com.jfinal.plugin.activerecord.Db;

import com.jfinal.plugin.activerecord.Record;

public class HelloService {

public static void addUser(Record record){

Db.save("zt_user", record);

}

public static void deleteUser(String userName,String password){

Db.update("delete from zt_user where name = "+userName+" and password = "+password+" ");

}

public static Record findUser(String userName){

return Db.findFirst("select password from zt_user where name = "+userName+" ");

}

public static void updateUser(String userName,String password){

Db.update("update zt_user set password = "+password+" where name = "+userName+" ");

}

}

然后修改HelloController

jfinal Controller类提供了getPara系列方法用来从请求中获取参数。

这里我们使用getPara((String string)来获取账号和密码。

import java.util.List;

import com.jfinal.core.Controller;

import com.jfinal.plugin.activerecord.Record;

import service.HelloService;

import com.jfinal.core.Controller;

public class HelloController extends Controller {

public void addUser() {

String userName = getPara("userName");

String password = getPara("password");

Record user = new Record().set("name", userName).set("password", password);

HelloService.addUser(user);

renderText("添加成功");

}

public void deleteUser() {

String userName = getPara("userName");

String password = getPara("password");

HelloService.deleteUser(userName, password);

renderText("删除成功");

}

public void findUser() {

String userName = getPara("userName");

Record record = HelloService.findUser(userName);

renderText(""+record.get("password")+"");

}

public void updateUser() {

String userName = getPara("userName");

String password = getPara("password");

HelloService.updateUser(userName, password);

renderText("修改成功");

}

}

other

同样你也可以使用Model类对应configPlugin配置 。

DemoConfig:

arp.addMapping("user", User.class);

建立数据库表名到 Model 的映射关系,然后使用继承Model的方法。

public class User extends Model {

public static final User dao = new User();

}

项目部署

1.1 Jfinal项目部署和web项目相同,将项目webroot下的文件(包括webroot)拷贝到服务器tomcat的webapps目录下面。

2.2 然后删除webroot中的jetty-server-8.1.8.jarjar包

3.3startup 运行tomcat即可

Tips: 项目JDK版本要和服务器JDK版本一致,高版本编译的项目不能跑在低版本上面。

Tips: 使用render html 404,可以使用redirect

1:redirect 是重定向,当服务端向客户端响应 redirect后,并没有提供任何view数据进行渲染,仅仅是告诉浏览器响应为 redirect,以及重定向的目标地址

2:浏览器收到服务端 redirect 过来的响应,会再次发起一个 http 请求

3:由于是浏览器再次发起了一个新的 http 请求,所以浏览器地址栏中的 url 会发生变化

4:浏览中最终得到的页面是最后这个 redirect url 请求后的页面

5:所以redirect("/user/login.html") 相当于你在浏览器中手动输入 localhost/user/login.html

jfinal java搭建_Jfinal 项目搭建相关推荐

  1. ubuntu16.04 svn搭建多项目搭建多个版本仓

    ubuntu16.04 svn搭建多项目搭建多个版本仓 需求:A.B项目代码不同,建立不同的代码仓库,开机时自动启动对应svn 创建a和b版本仓库和配置 进入/opt/workspace/svn sv ...

  2. java电商项目搭建-------分布式文件存储系统(fastDFS)

    人之所以痛苦,那是因为你在成长.--------magic_guo 微服务项目,由于访问量和系统的高可用性能,会将上传的文件图片等存放在搭建的分布式文件存储系统:现在比较流行的文件存储系统有fastD ...

  3. java实现分布式项目搭建的方法

    1 分布式 1.1 什么是分布式 分布式系统一定是由多个节点组成的系统.其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的. 这些连通的节点上部署了我们的节点,并且相互的操作会有协同 ...

  4. node安装与环境搭建 + VUE项目搭建

    一.node环境安装 1.node下载 node.js官网地址:Node.js LTS:表示稳定版  一般用于生产环境,重点在于稳定,如果你需要稳定性并拥有复杂的生产环境(例如中型或大型企业),建议使 ...

  5. java小程序例子_「小程序JAVA实战」java的聚合项目搭建(30)

    做了多年的开发,原来很多项目都是一个项目一个工程,如果用到其他的项目的依赖文件的时候的,直接手动copy过来就可以了,自从有了maven后,很多开源的项目和互联网公司都开始使用maven来构建聚合项目 ...

  6. Java Spring 后端项目搭建

    参考了几位同行的Blogs和StackOverflow上的许多问答,搭建了此后端项目,替换原来的node.js后端,和前一篇中搭建的Vue Web App项目配合使用,后端准备只提供服务,不包含后端装 ...

  7. java电商项目搭建-------商品详情页模块

    努力好了,时间会给你答案.--------magic_guo 在一个电商项目中,访问频率最高的是商品详情页页面,而且商品详情页的变化评率不会太高(除非是搞活动的时候):那么访问频率高,然后再使用数据库 ...

  8. Java Spring MVC项目搭建(三)——“Hello World”

    在Spring 的配置文件里,我们定义了一个bean ,Spring 会在启动时候会生成对象. <bean id = "helloworld" class="com ...

  9. java电商项目搭建-------订单模块

    努力好了,时间会给你答案.--------magic_guo 订单模块的流程以及用户操作如下: 1.当用户选定购物车需要结算的商品并单击结算按钮时,会跳转到订单页面,此时会将选定的购物车信息展示在订单 ...

最新文章

  1. python异常值删除_python删除有异常值
  2. 码农技术炒股之路——数据库管理器、正则表达式管理器
  3. AI寒冬论作者再发文:「深」度学习对数据的理解太「浅」了
  4. Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
  5. Boost:opencl测试的程序
  6. 更改MFC生成的程序的默认exe图标
  7. LED 将为我闪烁: 控帘 j发光二级管
  8. 沃尔玛宣布与TikTok达成直播带货合作?
  9. c语言增加动态分配的存储空间吗,C语言 关于内存动态分配问题
  10. 结构化数据上的机器学习大杀器XGBoost
  11. 李航:做本质的、严谨的、有意思的研究,纪念我的导师长尾真教授
  12. TensorFlow 和keras有什么区别?
  13. 《极客时间:代码精进之路》学习笔记
  14. 完全数(Perfect Number)
  15. 优思学院|六西格玛:如何最有效地制定目标?
  16. 初识ArrayList集合【小白学Java-学习笔记02】
  17. 基于寒武纪CNCodec 做视频编解码遇到的一些问题
  18. 莫纳什计算机硕士课程挂科率,莫纳什真的是挂科重灾区?
  19. 7XX元一线P35,华硕P5K-SE VS技嘉P35-DS3L谁超频能力更强?
  20. 华为电脑分类四个系列_华为正式推出“重新定义的个人电脑”,我们用四个问题阐述它是啥...

热门文章

  1. 浅谈发票识别方案-开篇
  2. C#pdf电子发票转图片
  3. python接入讯代理_python实现简单的TCP代理服务器
  4. 年过35岁的程序员都去哪儿了?
  5. 沙尘暴ppt计算机,沙尘暴课件.ppt
  6. 学完python写不出程序_我又不当程序员,为什么要学Python编程?
  7. linux命令进u 盘,在Linux下制作一个磁盘文件,在u-boot 阶段对emmc 烧写整个Linux系统方法...
  8. 小白兔写话_小白兔的看图写话
  9. CocosCreator之节点基本属性
  10. 使用jquery.zsign.js实现在线电子签章功能