最全 jfinal 访问数据库(idea+tomcat+jfinal版)

不多说,直接开始----》

一、idea创建web项目

1、File-New-Project


2、选择模版


(注意:jdk要选择)

3、填写名称


4、这步不用动,直接Next


扫描二维码关注公众号,回复: 3068229 查看本文章

5、填写项目名称,Finish


6、创建项目基本结构包括java文件夹、resource文件夹个人习惯创建即可


7、设置源代码位置


按照官方解释:

By assigning a folder to this category, you tell IntelliJ IDEA that this folder and its subfolders contain source code that should be compiled as part of the build process.

即:通过为这个类别分配一个文件夹,您可以告诉IntelliJ IDEA,这个文件夹和它的子文件夹包含了应该作为构建过程的一部分编译的源代码。

(通过这一步才能新建java类)

8、最后项目结构如下


以上idea创建web项目基本成功。下面开始搭建jfinal访问数据的基本步骤

二、jfinal访问数据库

1、先从pom.xml导包和web.xml配置开始

1)、pom需要导入的jar,我使用的是jfinal 3.1和mysql

<dependency>
  <groupId>com.jfinal</groupId>
  <artifactId>jfinal</artifactId>
  <version>3.1</version>
</dependency>

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.0.29</version>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.34</version>
</dependency>

注意:保存后还需要导入,点击右下角的Import Changes稍等片刻即可


2)、web.xml添加jfinal基本映射

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <filter>
    <filter-name>jfinal</filter-name>
    <filter-class>com.jfinal.core.JFinalFilter</filter-class>
    <init-param>
      <param-name>configClass</param-name>
      <param-value>controller.DemoConfig</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>jfinal</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

完成

2、resource文件夹添加资源文件config.properties


可能会有小伙伴会问idea怎么创建.properties文件,最简单的办法就是外部写好一个txt文件,然后修改文件名,复制粘贴即可

3、编辑代码

1)、创建User实体类

package bean;

import com.jfinal.plugin.activerecord.Model;

/**
 * User 实体类
 */
public class User extends Model<User> {
    public static final User dao = new User();
}

不用怀疑,这就是实体类,继承Model即可(有兴趣可自行扒源码查看具体实现)

2)、创建HelloControllerl类,抛个异常方便查找错误

package controller;

import bean.User;
import com.jfinal.core.Controller;

import java.util.List;

public class HelloController extends Controller {
    public void index(){
        renderText("hello world!");
    }
    public void getData(){
        try {
            List<User> users = User.dao.find("SELECT * FROM USER");
            renderJson(users);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

3)、创建DemoConfig类

package controller;

import bean.User;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.util.JdbcConstants;
import com.alibaba.druid.wall.WallFilter;
import com.jfinal.config.*;
import com.jfinal.core.JFinal;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;

import javax.jws.soap.SOAPBinding;

public class DemoConfig extends JFinalConfig {
    @Override
    public void configConstant(Constants constants) {
        //读取文件
        PropKit.use("config.properties");
    }

    @Override
    public void configRoute(Routes routes) {
        //设置项目启动默认访问页,此不设置无需在web中设置了。不过好像web设置了访问页也无效照样报404 -.-
        routes.add("/", HelloController.class);
        //
        routes.add("/hello", HelloController.class, "/");
    }

    @Override
    public void configEngine(Engine engine) {

    }

    @Override
    public void configPlugin(Plugins plugins) {
        DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("db.app.url"), PropKit.get("db.app.user"), PropKit.get("db.app.password"), PropKit.get("db.app.driver"));
        // StatFilter提供JDBC层的统计信息
        druidPlugin.addFilter(new StatFilter());
        // WallFilter的功能是防御SQL注入攻击
        WallFilter wallFilter = new WallFilter();
        wallFilter.setDbType(JdbcConstants.MYSQL);

        druidPlugin.addFilter(wallFilter);

        druidPlugin.setInitialSize(PropKit.getInt("db.app.poolInitialSize"));
        druidPlugin.setMaxPoolPreparedStatementPerConnectionSize(PropKit.getInt("db.app.poolMaxSize"));
        druidPlugin.setTimeBetweenConnectErrorMillis(PropKit.getInt("db.app.connectionTimeoutMillis"));
        plugins.add(druidPlugin);

        ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(druidPlugin);
        //添加与表的映射关系 *******
        activeRecordPlugin.addMapping("user", User.class);
        plugins.add(activeRecordPlugin);

    }

    @Override
    public void configInterceptor(Interceptors interceptors) {

    }

    @Override
    public void configHandler(Handlers handlers) {

    }

    public static void main(String[] args) {
        //idea必须要加start
        JFinal.start("src/main/webapp", 8081, "/", 5);
    }
}

项目结构:


以上具体代码编辑完成,下面说说tomcat的基本配置

三、tomcat基本配置

图文说明,不做具体解释,可借鉴

1、选择Edit Configurations


2、见图






此步需注意:设置资源文件夹,不然编译后不会出来资源文件,会报找不到文件异常


当然,以下这种方法一开始设置也是可以的


完成

四、启动项目


结果:


访问方法


数据库:


(另外,关于idea项目的jdk、编码、输出路径等等..一类问题,推荐先看看https://my.oschina.net/chixn/blog/471755  此篇文章详细介绍,本文主要只做jfinal访问数据库)

文章如有问题或建议,请留言不吝赐教!谢谢


更新--------》:

昨天发现是可以直接通过render方法来设置默认的访问页的,如下:

public class HelloController extends Controller {
    public void index(){
        //renderText("hello world!");
        render("page/test.html");
    }
    public void getData(){
        try {
            List<User> users = User.dao.find("SELECT * FROM USER");
            renderJson(users);
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}


效果


猜你喜欢

转载自blog.csdn.net/qq_29473881/article/details/80512536