1:新建一个maven项目,file->new->project->maven,输入组名包名项目名。
2:右键项目名,加入web application。
3:添加pom.xml,依赖包
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jfinal_demo</groupId> <artifactId>jfinal_demo</artifactId> <version>1.0-SNAPSHOT</version> <!-- 集中定义依赖版本号 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jfinal.version>3.2</jfinal.version> <junit.version>4.12</junit.version> </properties> <!--集中声明依赖--> <dependencies> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <!--jfinal依赖--> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>${jfinal.version}</version> </dependency> <!--数据库需要包start--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.27</version> <scope>runtime</scope> </dependency> <!--数据库需要包end--> <!--链接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.5</version> </dependency> <!--链接池--> <!--jetty--> <dependency> <groupId>com.jfinal</groupId> <artifactId>jetty-server</artifactId> <version>8.1.8</version> <!-- 此处的 scope 值为 compile 仅为支持 IDEA 下启动项目 打 war 包时需要改成 provided,以免将一些无用的 jar 打进去 --> <scope>compile</scope> </dependency> <!--jetty--> <!--log4j--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.9.1</version> </dependency> <!--log4j--> </dependencies> <!--定义编译相关内容--> <build> <!--定义编译后的包名--> <finalName>${project.artifactId}</finalName> <!--此标签下的是将要加载的插件--> <plugins> <!-- 资源文件拷贝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.7</version> <configuration> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> </plugins> <!--此标签用于声明插件版本以便统一管理--> <pluginManagement> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!--配置端口号--> <port>80</port> <!--配置访问路径,此处配置为根目录,即http://localhost/--> <path>/</path> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
注意:如果要用jetty,jetty别用新包9.*,会报缺少文件错误。
4:在config报下建DemoConfig。这里的代码我直接copy官网配置。
package config; 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 controller.BlogController; import controller.IndexController; import entity._MappingKit; /** * api 引导配置 */ public class DemoConfig extends JFinalConfig { /** * 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此 * * 使用本方法启动过第一次以后,会在开发工具的 debug、run config 中自动生成 * 一条启动配置,可对该自动生成的配置再添加额外的配置项,例如 VM argument 可配置为: * -XX:PermSize=64M -XX:MaxPermSize=256M */ public static void main(String[] args) { /** * 特别注意:Eclipse 之下建议的启动方式 */ // JFinal.start("WebRoot", 80, "/", 5); /** * 特别注意:IDEA 之下建议的启动方式,仅比 eclipse 之下少了最后一个参数 */ JFinal.start("web", 8080, "/"); } /** * 配置常量 */ public void configConstant(Constants me) { // 加载少量必要配置,随后可用PropKit.get(...)获取值 PropKit.use("config.properties"); me.setDevMode(PropKit.getBoolean("devMode", false)); } /** * 配置路由 */ public void configRoute(Routes me) { me.add("/", IndexController.class, "/index"); // 第三个参数为该Controller的视图存放路径 me.add("/blog", BlogController.class); // 第三个参数省略时默认与第一个参数值相同,在此即为 "/blog" } public void configEngine(Engine me) { me.addSharedFunction("/common/_layout.html"); me.addSharedFunction("/common/_paginate.html"); } public static DruidPlugin createDruidPlugin() { return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim()); } /** * 配置插件 */ public void configPlugin(Plugins me) { // 配置C3p0数据库连接池插件 DruidPlugin druidPlugin = createDruidPlugin(); me.add(druidPlugin); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin); // 所有映射在 MappingKit 中自动化搞定 _MappingKit.mapping(arp); me.add(arp); } /** * 配置全局拦截器 */ public void configInterceptor(Interceptors me) { } /** * 配置处理器 */ public void configHandler(Handlers me) { } }
注意:如果你用tomcat,那么不用考虑main中的方法。如果你用右键DEBUG运行那么要注意把demo中的webRoot改为web,更改view层的路径。重点关注,加载静态配置文件和数据库插件配置、配置控制器路由,用的比较多。
5:新建控制器,这点要鄙视一下,外面很多团队用这个框架的时候完全赶速度,不分层,把后面维护的朋友坑苦了。
package controller; import com.jfinal.aop.Before; import com.jfinal.core.Controller; import entity.Blog; /** * 本 demo 仅表达最为粗浅的 jfinal 用法,更为有价值的实用的企业级用法 * 详见 JFinal 俱乐部: http://jfinal.com/club * * BlogController * 所有 sql 与业务逻辑写在 Model 或 Service 中,不要写在 Controller 中,养成好习惯,有利于大型项目的开发与维护 */ @Before(BlogInterceptor.class) public class BlogController extends Controller { static BlogService service = new BlogService(); public void index() { setAttr("blogPage", service.paginate(getParaToInt(0, 1), 10)); render("blog.html"); } public void add() { } /** * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中, * 并要对数据进正确性进行验证,在此仅为了偷懒 */ @Before(BlogValidator.class) public void save() { getModel(Blog.class).save(); redirect("/blog"); } public void edit() { setAttr("blog", service.findById(getParaToInt())); } /** * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中, * 并要对数据进正确性进行验证,在此仅为了偷懒 */ @Before(BlogValidator.class) public void update() { getModel(Blog.class).update(); redirect("/blog"); } public void delete() { service.deleteById(getParaToInt()); redirect("/blog"); } }
总结:在此感谢框架创建者提供的DEMO。很全crud和分页,验证都有。这里主要是用model+activeRecord的方式来交互数据库。还有一种是DB+record的方式,如下图。
// 创建name属性为James,age属性为25的record对象并添加到数据库 Record user = new Record().set("name", "James").set("age", 25); Db.save("user", user); // 删除id值为25的user表中的记录 Db.deleteById("user", 25); // 查询id值为25的Record将其name属性改为James并更新到数据库 user = Db.findById("user", 25).set("name", "James"); Db.update("user", user); // 查询id值为25的user user = Db.findById("user", 25); // 获取user的name属性 String userName = user.getStr("name"); // 获取user的age属性 Integer userAge = user.getInt("age"); // 查询所有年龄大于18岁的user,并输出其name属性 List<Record> users = Db.find("select * from user where age > 18"); // 分页查询性别为1并且年龄大于18的user,当前页号为1,每页10个user Page<Record> userPage = Db.paginate(1, 10, "select *", "from user where sex=? and age>?", 1, 18);
6:加入视图控制,demo上给的是jfinal-view默认模板引擎,这个大家看个人喜好
这里就不多说们基本上就是显示,模板定义和引用定义模板等
7:在web.xml中加入jfinal过滤器,配置DemoConfig.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>jfinal-demo</display-name> <!--配置jfinal过滤器--> <filter> <filter-name>jfinal</filter-name> <filter-class>com.jfinal.core.JFinalFilter</filter-class> <init-param> <param-name>configClass</param-name> <param-value>config.DemoConfig</param-value> </init-param> </filter> <filter-mapping> <filter-name>jfinal</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
8:启动运行,有2中方式
1:jetty
2:tomcat
总结:mysql包如果不能正常下来,可以百度找到,demo压缩包如附件,如果大家出现maven中的包无法发布到发布文件中,可以右键项目名,打开open module setting。如下图操作即可
打完手工。
感想:优点是做企业网站或者erp、cms之类用jfinal的确能提升开发效率,入手简单。不足吧,个人觉得,面向切面这块,如果出现问题,可查找资料比较少,性能这块,因为主要是反射和静态类,比传统的IOC容器来说性能上差点。具体数字要看专业测试部门。
JFinal官方网址: http://www.jfinal.com
相关推荐
首先,我们要理解`jfinal3.2 demo maven idea`这个标题所包含的信息。"jfinal3.2"指的是我们使用的JFinal框架的特定版本,即3.2。"demo"表明这是一个示例项目,通常用于展示框架的基本用法和特性。"maven"表示项目...
在 IntelliJ IDEA 中开发 JFinal 项目时,可以直接利用 IDEA 的 Maven 集成功能来管理 JFinal 依赖,并通过内置的 Tomcat 服务器进行调试。 **1.9 特别声明** 作者特别指出了一些关于 JFinal 使用上的注意事项,...
在Maven中,可以通过添加JFinal依赖到pom.xml文件中来集成JFinal,而在IDEA中,则可以通过创建一个新的项目,并按照文档指导进行配置。 ### 第二部分:JFinalConfig #### 配置核心组件 这部分主要讲解了如何配置...
### JFinal 3.2 手册核心知识点详解 #### 第一章 快速上手上手 ##### 1.1 创建项目 - **步骤**:首先需要创建一个新的Java Web项目。 - **工具**:可以使用Eclipse、IntelliJ IDEA等开发工具进行创建。 - **环境**...
- 如果使用 Maven 或 IDEA 进行项目管理,还需要进行额外的配置。 - Maven 用户可以通过 pom.xml 文件引入 JFinal 的依赖。 - IDEA 用户可以利用 IDEA 自带的功能进行项目配置。 **8. 特别声明** - JFinal 提供了...
- **依赖管理**:可以通过Maven或Gradle来管理JFinal库文件。也可以手动下载jar包并将其添加到项目的lib目录中。 - **版本兼容性**:确保所使用的JFinal版本与其他依赖库兼容。 **1.3 修改web.xml** - **配置...