JFinal框架从入门到精通(一)——从搭建maven项目到连接数据库并实现简单的查寻

前言废话

最近公司不忙,有时间重拾以前的java,发现struts2忘得已经差不多了,springMVC也快忘净了,唉,人生啊,先从一个简单的轻量级框架JFinal开始吧,顺便吐槽一下,从.net再转回java太痛苦了,Visual Studio写代码太舒服了,舒服到啥都不会拼写了。

从新建一个项目开始

新建一个maven项目
在这里插入图片描述
在这里插入图片描述
选中项目右键——Properties
在这里插入图片描述
在这里插入图片描述
其实我选的是8.5,截图懒得改了,哈哈
其实我选的是8.5,截图懒得改了,哈哈
修改pom.xml,下载jar包

<!-- 都做了简单说明,自己看吧 -->
  
   <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-jsp</artifactId>
            <version>8.1.8.v20121106</version>
            <!--<scope>provided</scope>-->
   			<scope>compile</scope> 
   </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
     <!-- jfinal 核心包 -->  
    <dependency>  
        <groupId>com.jfinal</groupId>  
        <artifactId>jfinal</artifactId>  
        <version>3.4</version>  
    </dependency>  
    <dependency>  
        <groupId>com.jfinal</groupId>  
        <artifactId>cos</artifactId>  
        <version>26Dec2008</version>  
    </dependency>  
<!-- 阿里巴巴druid数据连接池-->      
    <dependency>  
        <groupId>com.alibaba</groupId>  
        <artifactId>druid</artifactId>  
        <version>1.0.15</version>  
    </dependency> 
    <!-- 阿里fastjson包JSON转换-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>  
<!-- mysql驱动-->  
    <dependency>  
        <groupId>mysql</groupId>  
        <artifactId>mysql-connector-java</artifactId>  
        <version>5.1.20</version>  
    </dependency>
<!-- servlet标准-->  
    <dependency>  
        <groupId>javax.servlet</groupId>  
        <artifactId>javax.servlet-api</artifactId>  
        <version>3.1.0</version>  
    </dependency> 
    <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    <scope>provided</scope>
    </dependency>
     <!-- log4j--> 
    <dependency>  
        <groupId>log4j</groupId>  
        <artifactId>log4j</artifactId>  
        <version>1.2.16</version>  
    </dependency> 
<!-- JSP -->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>

src/main/resources下新建config-pro.properties和config.properties
config-pro.properties代码如下

# ---生产环境配置文件---

#jdbcUrl = 填写生产环境地址
#user = 填写生产环境数据库用户名
#password =填写生产环境数据库密码

#devMode =false
#engineDevMode=false

cofig.properties代码如下

# ---开发环境配置文件---

#database config
dbType=mysql

mysqljdbcUrl = jdbc:mysql://192.168.16.111/shine?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
mysqluser = root
mysqlpassword = 123456

devMode =true
engineDevMode=true

新建Myconfig.java路径如下
在这里插入图片描述
Myconfig.java内容,配置loadConfig()和creatDruidPlugins()

package com.zzkMavenJfinal.common;

import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.wall.WallFilter;
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.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.render.ViewType;
import com.jfinal.template.Engine;

public class Myconfig extends JFinalConfig{
	/**
	 * 将全局配置提出来 方便其他地方重用
	 */
	private static Prop p;
	private WallFilter wallFilter;

	public void configConstant(Constants constants) {
        constants.setDevMode(true);
        constants.setEncoding("UTF-8");
        constants.setViewType(ViewType.JSP);
    }

    public void configRoute(Routes routes) {
    	// 推荐拆分方式 如果需要就解开注释 创建对应的 Routes
    	//routes.add(new IndexRoutes());// 配置网站前台路由
    }

	// 先加载开发环境配置,再追加生产环境的少量配置覆盖掉开发环境配置
	static void loadConfig() {
		if (p == null) {
			p = PropKit.use("config.properties").appendIfExists("config-pro.properties");
		}
	}
    public void configEngine(Engine engine) {

    }

    public void configInterceptor(Interceptors interceptors) {
    }

    public void configHandler(Handlers handlers) {
    }
    /**
	 * 配置JFinal插件 数据库连接池 ActiveRecordPlugin 缓存 定时任务 自定义插件
	 */
	@Override
	public void configPlugin(Plugins me) {
		


	}
    // 系统启动完成后回调
    public void afterJFinalStart() {
    }

    // 系统关闭之前回调
    public void beforeJFinalStop() {
    }
    /**
     * 获取数据连接池
     * @return
     */
    public static DruidPlugin creatDruidPlugins(){
		loadConfig();
        return new DruidPlugin(PropKit.get("mysqljdbcUrl"),PropKit.get("mysqluser"),PropKit.get("mysqlpassword").trim());
    }
    public static void main(String[] args) {
        // 第二个参数为端口
        //JFinal.start("src/main/webapp", 8085, "/");
    }
}

配置src/main/webapp/web-inf/web.xml代码如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
	<filter>
		<filter-name>jfinal</filter-name>
		<filter-class>com.jfinal.core.JFinalFilter</filter-class>
		<init-param>
			<param-name>configClass</param-name>
			<!--此处就是上面新建的MyConfig-->
			<param-value>com.zzkMavenJfinal.common.Myconfig</param-value>
		</init-param>
	</filter>
	
	<filter-mapping>
		<filter-name>jfinal</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

model文件夹下建这两个文件
在这里插入图片描述
_MappingKit.java代码如下

package com.zzkMavenJfinal.model;

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;

import com.zzkMavenJfinal.model.SysUser;

/**
 * Generated by JFinal, do not modify this file.
 * 
 * <pre>
 * Example:
 * public void configPlugin(Plugins me) {
 *     ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
 *     _MappingKit.mapping(arp);
 *     me.add(arp);
 * }
 * </pre>
 */
public class _MappingKit {

	public static void mapping(ActiveRecordPlugin arp) {
	///此处添加表,第二项是主键,无主键可为空
		arp.addMapping("tb_vote", "Id", SysUser.class);
	}
}

SysUser.java代码如下

package com.zzkMavenJfinal.model;

import com.jfinal.plugin.activerecord.Model;

/**
 */
@SuppressWarnings("serial")
public class SysUser extends Model<SysUser> {

}

配置MyConfig.java
在这里插入图片描述
代码如下


		loadConfig();
		wallFilter = new WallFilter(); // 加强数据库安全
		DruidPlugin dbMysql = creatDruidPlugins();
		wallFilter.setDbType("mysql");
		dbMysql.addFilter(wallFilter);
		dbMysql.addFilter(new StatFilter()); // 添加 StatFilter 才会有统计数据
		me.add(dbMysql);
		ActiveRecordPlugin arpMysql = new ActiveRecordPlugin("mysql", dbMysql);
		arpMysql.setShowSql(p.getBoolean("devMode"));
		arpMysql.setDialect(new MysqlDialect());
		arpMysql.addMapping("tb_vote", "Id", SysUser.class);
		me.add(arpMysql);

controller文件夹里面建这几个文件
在这里插入图片描述
应该还有个dao,懒得写了,直接在service里面操作数据库了,正式项目一定要有dao,不然显得你很low
IndexRoutes.java路由代码

package com.zzkMavenJfinal.controller;

import com.jfinal.config.Routes;

import com.zzkMavenJfinal.controller.index.indexController;

public class IndexRoutes extends Routes {
	@Override
	public void config() {
		// TODO Auto-generated method stub
		setBaseViewPath("/index/");//这是对应的jsp文件的文件夹,根目录是src/main/webapp
		add("/", indexController.class);//这是一会要建的控制器
	}
}

indexController.java代码

package com.zzkMavenJfinal.controller.index;

import java.util.List;

import com.jfinal.core.Controller;
import com.jfinal.kit.Ret;
import com.zzkMavenJfinal.model.SysUser;


public class indexController extends Controller {
	IndexService service = IndexService.SERVICE;
	public void index1() {
	 render("index.jsp");
	}
	/**
     * 查找所有blog
     */
    public void index(){
        List<SysUser> blogs=service.queryList();
        Ret ret=Ret.create();
        ret.setOk();
        ret.set("blogs",blogs);
        setAttr("ret", ret);
        render("index.jsp");
    }
}

IndexService.java

package com.zzkMavenJfinal.controller.index;

import java.util.List;

import com.jfinal.plugin.activerecord.Db;
import com.zzkMavenJfinal.model.SysUser;


public class IndexService {
	public static final IndexService SERVICE = new IndexService();
	private SysUser blog=new SysUser().dao();


    public SysUser queryById(int id){
        return blog.findById(id);
    }

    public List<SysUser> queryList(){
        List<SysUser> blogList=blog.find("select * from tb_vote");
        return blogList;
    }


    public void delectById(int id){
        blog.deleteById(id);
    }
	/*
	 * public Integer delete() { //Db. }
	 */
}

把路由配置到MyConfig.java里面

public void configRoute(Routes routes) {
    	// 推荐拆分方式 如果需要就解开注释 创建对应的 Routes
    	routes.add(new IndexRoutes());// 配置网站前台路由
    }

前台index.jsp代码,简单查询ret就是indexController里面index()里面传的值

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%
	String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<h2>Hello World!</h2>
${ret}
</body>
</html>

启动项目,简单查询成功,下面写简单增删改
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值