码迷,mamicode.com
首页 > 编程语言 > 详细

新手入门-如何使用JFinal开发javaweb(1)

时间:2016-05-12 23:32:53      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

博主本人是菜鸟。写这篇博客的原因是为了让和我一样的入门级菜鸟少走弯,还有就是加深我的理解。

JFinal框架是国产的很轻量级的开发框架。能让程序员写的代码精简很多,开发效率从而更快。

我是写了一个JFinal版的数据库验证+跳转的Demo。

介绍开始:


编辑器:MyEclipse;


数据库:MySQL;


服务器:tomcat;


1 首先新建web项目

技术分享

要强调的是Target runtime必须选择为None。然后点击两次Next,选中创建web.xml。finish~~~

2 导入支撑项目的jar包(包括JFinal、Mysql、JDBC)

技术分享

必须导入这四个jar包。其中:(1) c3p0是支撑JDBC的;(2)jfina是支撑jfinal的,jfinal默认使用freemarker作为MVC的View,所以也要导入;(3)mysql-conncetor是支撑Mysql连接的

3 写java代码

在src文件夹中创建四个package,分别为config,controller, model,service。其中config包里是全局配置文件,controller对应的就是MVC中的Control,model与service组成MVC的Model。Control就是控制前后台的交互,model对应数据库的各个表以及派生model类,service就是写sql语句的地方技术分享

config中有三个方法最重要configConstant、configPlugin、configRoute

(1)configConstant:此方法用来配置 JFinal 常量值

(2)configPlugin:此方法用来配置 JFinal 的 Plugin,比如配置 C3p0 数据库连接池插件与 ActiveRecord数据库访问插件

(3)configRoute:此方法用来配置 JFinal 访问路由,比如将”/hello”映射到 HelloController 这个控制器

说完这些我们来看代码

↓此为BaseConfig.java

package config;

import model.User;

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.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;

import controller.HelloController;

public class BaseConfig extends JFinalConfig {
	
	@Override
	public void configConstant(Constants me) {
		// TODO Auto-generated method stub
		PropKit.use("demo_config.txt");
		me.setDevMode(PropKit.getBoolean("devMode", false));
	}
	@Override
	public void configHandler(Handlers me) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void configInterceptor(Interceptors me) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void configPlugin(Plugins me) {
		// TODO Auto-generated method stub
		C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
		me.add(c3p0Plugin);
		
		ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
		me.add(arp);
		
		arp.addMapping("user", User.class);
	}
	@Override
	public void configRoute(Routes me) {
		// TODO Auto-generated method stub
		me.add("/hello", HelloController.class);
	}
}
↓此是HelloController.java

package controller;

import model.User;
import service.UserService;

import com.jfinal.core.Controller;

public class HelloController extends Controller {

	UserService userService = new UserService();
	
	public void index()
	{
		String name = getPara("name");
		String password = getPara("password");
		User user = new User();
		user = null;
		
		user = userService.findUser(name, password);
		
		if(user != null)
			render("/html/hello.html");
		
		
	}
}
↓此是User.java

package model;

import com.jfinal.plugin.activerecord.Model;

public class User extends Model<User> {
	public static final User dao = new User();
}

↓此是UserService.java

import model.User;

public class UserService {
	
	public User findUser(String name,String password)
	{
		User user = new User();
		user = null;
		
		String sql = "select * from user where name='"+name+"' and password='"+password+"';";
		
		user = User.dao.findFirst(sql);
		
		System.out.printf("sql:"+sql);
		
		return user;
	}
}

4 千万不能忘了Propkit要引用的txt文件

Propkit是JFinal自带的工具类。Propkit可以用来加载一个或多个配置文件。在该Demo中PropKit用在BaseConfig的configConstant方法中。

需要强调的是,加载的配置文件必须要放在src下。原因是:友情链接http://www.oschina.net/question/2461549_2148022?fromerr=ceMjBkEb

↓此是demo_config.txt

jdbcUrl = jdbc:mysql://127.0.0.1/jfinal_test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
user = root
password = root
devMode = true

5 写前台界面

WebRoot下创建文件夹html,在html文件夹下创建hello.html与login.html。其中hello.html里什么都不用添加,login.html设计一个表单提交。

↓此是login.html

<!DOCTYPE html>
<html>
  <head>
    <title>login.html</title>
	
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
    <form action="../hello" method="post">
    	<table>
    		<tr>
    			<td>name:</td>
    			<td><input type="text" name="name"></td>
    		</tr>
    		<tr>
    			<td>password:</td>
    			<td><input type="password" name="password"></td>
    		</tr>
    		<tr>
    			<td></td>
    			<td><input type="submit" value="Login"></td>
    		</tr>
    	</table>
    </form>
  </body>
</html>

6 修改web.xml文件

web.xml在WebRoot/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" 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">
  <display-name>JFinalDemo</display-name>
  <filter>
      <filter-name>JFinalDemo</filter-name>
      <filter-class>com.jfinal.core.JFinalFilter</filter-class>
      <init-param>
          <param-name>configClass</param-name>
          <param-value>config.BaseConfig</param-value>
      </init-param>
  </filter>
  <filter-mapping>
      <filter-name>JFinalDemo</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

7 数据库

创建数据库的语句与插入的测试数据。

CREATE DATABASE IF NOT EXISTS jfinal_test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT,name CHAR(10) NOT NULL,password CHAR(10) NOT NULL,PRIMARY KEY(id));
insert into user(name,password) values('test','test');


8 执行

技术分享

账户密码都是test,点击login后,跳转成功

技术分享

总结

由于本人并没有structs经验,MVC也只是入门级,所以刚开始阅读JFinal的文档时完全不会配置,但是认真梳理一下,从头开始一步步的导入支撑的文件,并结合自己的MVC体会,算是会用JFinal了。在后面的一段时间内,我会经常与JFinal打交道,所以以后还会写一些对JFinal的使用感悟。


新手入门-如何使用JFinal开发javaweb(1)

标签:

原文地址:http://blog.csdn.net/u011302959/article/details/51345765

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!