如何使用JFinal开发javaweb
介绍开始:
编辑器: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的更多相关文章
- Eclipse开发JavaWeb程序报Server Tomcat v7.0 at localhost was unable to start
出处:http://www.javaweb1024.com/info/582.jspx 原因重现: Eclipse开发JavaWeb程序,启动Servers的Tomcat服务器,突然跳出弹出框,内容显 ...
- JFinal开发web项目出现故障小记
导读 作为中国优秀的开源项目之中的一个JFinal有着极速开发的优点,是中小型应用开发的首选.在导师的建议下.我使用了JFinal来开发一个Java服务端应用,官方教程非常easy.就几十页(当然是中 ...
- 关于jFinal开发中遇到的中文乱码问题解决办法
关于jFinal开发中遇到的中文乱码问题解决办法 设置tomcat的编码,修改 <Connector port="8080" protocol="HTTP/1.1& ...
- MyEclipse配置Tomcat开发JavaWeb程序JSP以及Servlet
1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2).下载Tomcat 官网:http://tomcat.apache.org/ 我们选择8.0: http://tomca ...
- JFinal开发环境搭建,JFinal开发案例
JFinal 是基于 Java 语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java 语言所 ...
- MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet(转载)
转载地址:http://blog.csdn.net/21aspnet/article/details/21867241 1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2) ...
- (转)MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet
1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2).下载Tomcat 官网:http://tomcat.apache.org/ 我们选择8.0: http://tomca ...
- JavaWeb核心编程之使用Eclipse开发JavaWEB项目
文章目录 1.eclipse切换到javaee项目 2.创建服务器(如果没有server选项, 怎么做) 3.定制新建面板内容 4.创建动态web工程 1.eclipse切换到javaee项目 如图 ...
- JFinal开发8个常见问题
下面是8个最常见的问题总结. 1.Can not create instance of class: demo.DemoConfig. 觉得应该是你的路径有问题, 打开你项目的java build p ...
随机推荐
- 20145215刘俊谦实验五 Java网络编程及安全
实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验由两人组队完成,20145321曾子誉是我本次实验的搭档,链接为:http://www.cnblog ...
- 20145328 《Java程序设计》第6周学习总结
20145328 <Java程序设计>第6周学习总结 教材学习内容总结 输入/输出 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出,可以使用输 ...
- CNN笔记:通俗理解卷积神经网络【转】
本文转载自:https://blog.csdn.net/v_july_v/article/details/51812459 通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012 ...
- [BZOJ4552]排序
Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...
- 【Network Architecture】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning(转)
文章来源: https://www.cnblogs.com/shouhuxianjian/p/7786760.html Feature Extractor[Inception v4] 0. 背景 随着 ...
- detectron——test 错误集锦
一.测试错误,运行如下代码 python2 tools/test_net.py --cfg experiments/e2e_faster_rcnn_resnet--FPN_pascal2007.yam ...
- LaTeX模板 - FORMCM
LaTex 模板 - FORMCM \documentclass{mcmthesis} \mcmsetup{CTeX = true, % 使用 CTeX 套装时,设置为 true tcn = 8989 ...
- 【异常记录(五)】C# 无法发送具有此谓词类型的内容正文错误
今天请求接口直接调了以前写好的方法,结果报了(405)不支持方法的错误,一看是GET写成POST了,改成GET之后,又报了无法发送具有此谓词类型的内容正文错误的错误 原来之前的方法里面有GetRequ ...
- 监控控制台是否运行的bat
@echo offrem set secs=5set srvname="TRS.Export.Scheduler.exe" echo.echo ================== ...
- 数据库原理及应用-数据库管理系统 DBMS
2018-02-20 14:35:34 数据库管理系统(英语:database management system,缩写:DBMS) 是一种针对对象数据库,为管理数据库而设计的大型电脑软件管理系统.具 ...