html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

JFinal如何配置springPlug?_编程语言综合

[ ] 已经帮助:人解决问题

jfinal 是 orm+mvc 而且有易与扩展的render plugin等机制。YRxHTML5中文学习网 - HTML5先行者学习网

JFinal框架也整合了Spring框架,下面实现JFinal怎么去配置Spring框架。在JFinal中整合Spring使用到的类是SpringPlugin和IocInterceptor类。YRxHTML5中文学习网 - HTML5先行者学习网

Eclipse IDE for Java EE Developers 中YRxHTML5中文学习网 - HTML5先行者学习网

1、创建 Dynamic Web ProjectYRxHTML5中文学习网 - HTML5先行者学习网

2、修改 Default Output Folder,推荐输入 WebRootWEB-INFclassesYRxHTML5中文学习网 - HTML5先行者学习网

JFinal如何配置springPlug? 三联YRxHTML5中文学习网 - HTML5先行者学习网

特别注意:此处的  Default out folder 必须要与  WebRootWEB-INFclasses  目录YRxHTML5中文学习网 - HTML5先行者学习网
完全一致才可以使用  JFinal  集成的  Jetty  来启动项目。YRxHTML5中文学习网 - HTML5先行者学习网

3、修改 Content directory,推荐输入 WebRootYRxHTML5中文学习网 - HTML5先行者学习网

YRxHTML5中文学习网 - HTML5先行者学习网

注 意 : 此 处 也 可 以 使 用 默 认 值 WebContent ,   但 上 一 步 中 的YRxHTML5中文学习网 - HTML5先行者学习网
WebRootWEB-INFclasses 则需要改成 WebContentWEB-INFclasses 才能对应上。 YRxHTML5中文学习网 - HTML5先行者学习网

4、去官网下载最新的jar包(我这是JFinal-lib-1.9)YRxHTML5中文学习网 - HTML5先行者学习网

YRxHTML5中文学习网 - HTML5先行者学习网

把jetty-server-8.1.8.jar 和JFinal-bin-1.4.jar放到项目 WEB-INFlib下,jetty-server-8.1.8.jar是开发时使用的运行环境,用tomact和生产环境下就不需要了YRxHTML5中文学习网 - HTML5先行者学习网

5、添加到web.xmlYRxHTML5中文学习网 - HTML5先行者学习网

YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

<filter><filter-name>jfinal</filter-name><filter-class>com.jfinal.core.JFinalFilter</filter-class><init-param><param-name>configClass</param-name><param-value>demo.DemoConfig</param-value></init-param></filter><filter-mapping><filter-name>jfinal</filter-name><url-pattern>/*</url-pattern></filter-mapping>

 YRxHTML5中文学习网 - HTML5先行者学习网

6、在项目 src 目录下创建 demo 包,并在 demo 包下创建 DemoConfig 文件,   内容如下:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

package demo;import com.jfinal.config.*;public class DemoConfig extends JFinalConfig {public void configConstant(Constants me) {me.setDevMode(true);}public void configRoute(Routes me) {me.add("/hello", HelloController.class);}public void configPlugin(Plugins me) {}public void configInterceptor(Interceptors me) {}public void configHandler(Handlers me) {}}

 YRxHTML5中文学习网 - HTML5先行者学习网

注意:DemoConfig.java 文件所在的包以及自身文件名必须与 web.xml 中的param-value 标签内的配置相一致(在本例中该配置为 demo.DemoConfig)。YRxHTML5中文学习网 - HTML5先行者学习网

在 demo 包下创建 HelloController 类文件,  内容如下:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

package demo;import com.jfinal.core.Controller;public class HelloController extends Controller {public void index() {renderText("Hello JFinal World.");}}

 YRxHTML5中文学习网 - HTML5先行者学习网

6、右击项目名YRxHTML5中文学习网 - HTML5先行者学习网

YRxHTML5中文学习网 - HTML5先行者学习网

选中com.jfinal.core.JFinal  okYRxHTML5中文学习网 - HTML5先行者学习网
7、浏览器输入http://localhost/hello输出内容为 Hello JFinal World 证明项目框架搭建完成。YRxHTML5中文学习网 - HTML5先行者学习网

注意:在 tomcat 下开发或运行项目时,需要先删除  jetty-server-xxx.jar 这个包,否则会引起冲突。YRxHTML5中文学习网 - HTML5先行者学习网

(抄袭官网api,罪过罪过....)YRxHTML5中文学习网 - HTML5先行者学习网

jfinal真的挺简单,迅速,强大的一个框架,没有ssh的N多xml配置文件,后面做个简单的学生信息管理,配合FreeMarkerYRxHTML5中文学习网 - HTML5先行者学习网

jfinal集成springYRxHTML5中文学习网 - HTML5先行者学习网

SpringIplugin类:YRxHTML5中文学习网 - HTML5先行者学习网

SpringPlugin 是作为 JFinal 的 Plugin 而存在的,所以使用时需要在 JFinalConfig 中配置SpringPlugin,以下是 Plugin 配置示例代码:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

@Override  public void configPlugin(Plugins me) {
<span style="white-space:pre">		</span>//配置Spring挂件    me.add(new SpringPlugin());  }

 YRxHTML5中文学习网 - HTML5先行者学习网

若创建 SpringPlugin 对 象 时 未 指 定 构 造 方 法 中 的 形 参 , SpringPlugin 将 自动去WebRoot/WEB-INF 目录下寻找 applicationContext.xml 作为配置文件进行初始化。您还可以通过另外两个构造方法指定配置文件或 ApplicationContext 对象。YRxHTML5中文学习网 - HTML5先行者学习网

以前学习Spring养成了习惯将Spring的配置放在src下,这里我还是放在src的spring包中,如下:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

@Override  public void configPlugin(Plugins me) {    //配置Spring挂件, 自动找spring包中所有的xml配置文件    me.add(new SpringPlugin("classpath*:spring/*.xml"));  }

 YRxHTML5中文学习网 - HTML5先行者学习网

IocInterceptor类:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

IocInterceptor 拦截 action 并对其进行依赖注入,以下是示例代码:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

package com.tenghu.core.controller;import java.util.List;import com.jfinal.aop.Before;import com.jfinal.core.Controller;import com.jfinal.plugin.spring.Inject;import com.jfinal.plugin.spring.IocInterceptor;import com.tenghu.core.model.Users;import com.tenghu.core.service.LoginService;import com.tenghu.core.validator.LoginValidator;
@Before(IocInterceptor.class)public class IndexController extends Controller{  @Inject.BY_NAME  private LoginService loginService;  public void index(){    List<Users> testList=Users.dao.find("select * from users");    setAttr("testList", testList);    render("login.html");  }    public void login(){    String username=getPara("name");    String password=getPara("password");    if(loginService.login(username, password)){      renderText("登录成功");    }else{      renderText("登录失败");    }  }}

 YRxHTML5中文学习网 - HTML5先行者学习网

上例将对 loginService 按属性名称进行注入。注解@Inject.BY_NAME 按属性名进行注入,@Inject.BY_TYPE 按类型进行注入。不指定注入类型时将不会进行注入。YRxHTML5中文学习网 - HTML5先行者学习网

登录服务接口与实现类:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

package com.tenghu.core.service;public interface LoginService {  /**   * 登录处理   */  public boolean login(String username,String password);}
package com.tenghu.core.service.impl;import com.tenghu.core.service.LoginService;public class LoginServiceImpl implements LoginService{  /**   * 登录处理   */  public boolean login(String username, String password) {    if("admin".equals(username)&&"admin".equals(password)){      return true;    }    return false;  }}

 YRxHTML5中文学习网 - HTML5先行者学习网

Spring配置文件:YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:aop="http://www.springframework.org/schema/aop"    xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd      http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-2.5.xsd      http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
<span style="white-space:pre">			default-autowire="byName"</span>>  <bean id="loginService" class="com.tenghu.core.service.impl.LoginServiceImpl"/></beans>

 YRxHTML5中文学习网 - HTML5先行者学习网

配置完成YRxHTML5中文学习网 - HTML5先行者学习网

JFinal Dao 集成到 SpringYRxHTML5中文学习网 - HTML5先行者学习网

最近公司其它部门的同事还有朋友都表示对jfinal有很大的兴趣,我发现最主要的一点是jfianl极简风格和牛x的开发效率让大家为之兴奋,尤其是jfinal的dao设计。至于没有在新项目中进行尝试,因为好多项目需要对事务尤其是多库事务上进行处理,而这点也让大家犯难了起来。公司目前的项目是基于springmvc+mybatis,所以我将jfinal dao 集成到spring上,利用spring 强大的事务抽象能力解决事务难题。YRxHTML5中文学习网 - HTML5先行者学习网

      不说了,先上代码。。YRxHTML5中文学习网 - HTML5先行者学习网

?YRxHTML5中文学习网 - HTML5先行者学习网

1YRxHTML5中文学习网 - HTML5先行者学习网
2YRxHTML5中文学习网 - HTML5先行者学习网
3YRxHTML5中文学习网 - HTML5先行者学习网
4YRxHTML5中文学习网 - HTML5先行者学习网
5YRxHTML5中文学习网 - HTML5先行者学习网
6YRxHTML5中文学习网 - HTML5先行者学习网
7YRxHTML5中文学习网 - HTML5先行者学习网
8YRxHTML5中文学习网 - HTML5先行者学习网
9YRxHTML5中文学习网 - HTML5先行者学习网
10YRxHTML5中文学习网 - HTML5先行者学习网
11YRxHTML5中文学习网 - HTML5先行者学习网
12
    <bean id="jFinalDaoConfig" class="com.jfinal.plugin.activerecord.JFinalDaoConfig" init-method="init">YRxHTML5中文学习网 - HTML5先行者学习网
        <property name="configName" value="main" />YRxHTML5中文学习网 - HTML5先行者学习网
        <property name="dataSource" ref="dataSource"/>YRxHTML5中文学习网 - HTML5先行者学习网
        <property name="dialect">YRxHTML5中文学习网 - HTML5先行者学习网
             <bean class="com.jfinal.plugin.activerecord.dialect.AnsiSqlDialect"/>YRxHTML5中文学习网 - HTML5先行者学习网
        </property>YRxHTML5中文学习网 - HTML5先行者学习网
        <property name="modelsClasses">YRxHTML5中文学习网 - HTML5先行者学习网
            <set>YRxHTML5中文学习网 - HTML5先行者学习网
                 <value>test.AAA</value>YRxHTML5中文学习网 - HTML5先行者学习网
            </set>YRxHTML5中文学习网 - HTML5先行者学习网
        </property>        YRxHTML5中文学习网 - HTML5先行者学习网
    </bean>

?YRxHTML5中文学习网 - HTML5先行者学习网

1YRxHTML5中文学习网 - HTML5先行者学习网
2YRxHTML5中文学习网 - HTML5先行者学习网
3YRxHTML5中文学习网 - HTML5先行者学习网
4YRxHTML5中文学习网 - HTML5先行者学习网
5YRxHTML5中文学习网 - HTML5先行者学习网
6YRxHTML5中文学习网 - HTML5先行者学习网
7YRxHTML5中文学习网 - HTML5先行者学习网
8YRxHTML5中文学习网 - HTML5先行者学习网
9YRxHTML5中文学习网 - HTML5先行者学习网
10YRxHTML5中文学习网 - HTML5先行者学习网
11YRxHTML5中文学习网 - HTML5先行者学习网
12YRxHTML5中文学习网 - HTML5先行者学习网
13YRxHTML5中文学习网 - HTML5先行者学习网
14YRxHTML5中文学习网 - HTML5先行者学习网
15YRxHTML5中文学习网 - HTML5先行者学习网
16YRxHTML5中文学习网 - HTML5先行者学习网
17YRxHTML5中文学习网 - HTML5先行者学习网
18YRxHTML5中文学习网 - HTML5先行者学习网
19YRxHTML5中文学习网 - HTML5先行者学习网
20YRxHTML5中文学习网 - HTML5先行者学习网
21YRxHTML5中文学习网 - HTML5先行者学习网
22YRxHTML5中文学习网 - HTML5先行者学习网
23YRxHTML5中文学习网 - HTML5先行者学习网
24YRxHTML5中文学习网 - HTML5先行者学习网
25YRxHTML5中文学习网 - HTML5先行者学习网
26YRxHTML5中文学习网 - HTML5先行者学习网
27YRxHTML5中文学习网 - HTML5先行者学习网
28YRxHTML5中文学习网 - HTML5先行者学习网
29YRxHTML5中文学习网 - HTML5先行者学习网
30YRxHTML5中文学习网 - HTML5先行者学习网
31YRxHTML5中文学习网 - HTML5先行者学习网
32YRxHTML5中文学习网 - HTML5先行者学习网
33YRxHTML5中文学习网 - HTML5先行者学习网
34YRxHTML5中文学习网 - HTML5先行者学习网
35YRxHTML5中文学习网 - HTML5先行者学习网
36YRxHTML5中文学习网 - HTML5先行者学习网
37YRxHTML5中文学习网 - HTML5先行者学习网
38YRxHTML5中文学习网 - HTML5先行者学习网
39YRxHTML5中文学习网 - HTML5先行者学习网
40YRxHTML5中文学习网 - HTML5先行者学习网
41YRxHTML5中文学习网 - HTML5先行者学习网
42YRxHTML5中文学习网 - HTML5先行者学习网
43YRxHTML5中文学习网 - HTML5先行者学习网
44YRxHTML5中文学习网 - HTML5先行者学习网
45YRxHTML5中文学习网 - HTML5先行者学习网
46YRxHTML5中文学习网 - HTML5先行者学习网
47YRxHTML5中文学习网 - HTML5先行者学习网
48YRxHTML5中文学习网 - HTML5先行者学习网
49YRxHTML5中文学习网 - HTML5先行者学习网
50YRxHTML5中文学习网 - HTML5先行者学习网
51YRxHTML5中文学习网 - HTML5先行者学习网
52YRxHTML5中文学习网 - HTML5先行者学习网
53YRxHTML5中文学习网 - HTML5先行者学习网
54YRxHTML5中文学习网 - HTML5先行者学习网
55YRxHTML5中文学习网 - HTML5先行者学习网
56YRxHTML5中文学习网 - HTML5先行者学习网
57YRxHTML5中文学习网 - HTML5先行者学习网
58YRxHTML5中文学习网 - HTML5先行者学习网
59YRxHTML5中文学习网 - HTML5先行者学习网
60YRxHTML5中文学习网 - HTML5先行者学习网
61YRxHTML5中文学习网 - HTML5先行者学习网
62YRxHTML5中文学习网 - HTML5先行者学习网
63YRxHTML5中文学习网 - HTML5先行者学习网
64YRxHTML5中文学习网 - HTML5先行者学习网
65YRxHTML5中文学习网 - HTML5先行者学习网
66YRxHTML5中文学习网 - HTML5先行者学习网
67YRxHTML5中文学习网 - HTML5先行者学习网
68YRxHTML5中文学习网 - HTML5先行者学习网
69YRxHTML5中文学习网 - HTML5先行者学习网
70YRxHTML5中文学习网 - HTML5先行者学习网
71YRxHTML5中文学习网 - HTML5先行者学习网
72YRxHTML5中文学习网 - HTML5先行者学习网
73YRxHTML5中文学习网 - HTML5先行者学习网
74
public class JFinalDaoConfig {YRxHTML5中文学习网 - HTML5先行者学习网
    protected final Logger log = Logger.getLogger(getClass());YRxHTML5中文学习网 - HTML5先行者学习网
    public void init(){YRxHTML5中文学习网 - HTML5先行者学习网
        if (null == dialect) {YRxHTML5中文学习网 - HTML5先行者学习网
            log.warn("Using mysql dialect as default.");YRxHTML5中文学习网 - HTML5先行者学习网
            dialect = new MysqlDialect();//默认mysql方言YRxHTML5中文学习网 - HTML5先行者学习网
        }YRxHTML5中文学习网 - HTML5先行者学习网
        //config与dataSource相关绑定YRxHTML5中文学习网 - HTML5先行者学习网
        Config config = new Config(configName, dataSource, dialect);YRxHTML5中文学习网 - HTML5先行者学习网
        DbKit.addConfig(config);YRxHTML5中文学习网 - HTML5先行者学习网
        Iterator<Class<Model>> iterModel = modelsClasses.iterator();YRxHTML5中文学习网 - HTML5先行者学习网
        Class modelClass = null;YRxHTML5中文学习网 - HTML5先行者学习网
        while (iterModel.hasNext()) {YRxHTML5中文学习网 - HTML5先行者学习网
            modelClass = iterModel.next();YRxHTML5中文学习网 - HTML5先行者学习网
            Class superClass = modelClass.getSuperclass();YRxHTML5中文学习网 - HTML5先行者学习网
            if (null==superClass || superClass!=Model.class) {YRxHTML5中文学习网 - HTML5先行者学习网
                log.warn(modelClass + " should extends com.jfinal.plugin.activerecord.Model");YRxHTML5中文学习网 - HTML5先行者学习网
                continue;YRxHTML5中文学习网 - HTML5先行者学习网
            }YRxHTML5中文学习网 - HTML5先行者学习网
            DbKit.addModelToConfigMapping(modelClass, config);//model与config绑定YRxHTML5中文学习网 - HTML5先行者学习网
            TableBinding tb = (TableBinding) modelClass.getAnnotation(TableBinding.class);//获取model对应的表信息YRxHTML5中文学习网 - HTML5先行者学习网
           &nbnbsp;if (tb != null) {YRxHTML5中文学习网 - HTML5先行者学习网
                Table table = null;YRxHTML5中文学习网 - HTML5先行者学习网
                if (StrKit.notBlank(tb.pkName())) {YRxHTML5中文学习网 - HTML5先行者学习网
                    table = new Table(tb.tableName(), tb.pkName(), modelClass);YRxHTML5中文学习网 - HTML5先行者学习网
                } else {YRxHTML5中文学习网 - HTML5先行者学习网
                    table = new Table(tb.tableName(), modelClass);YRxHTML5中文学习网 - HTML5先行者学习网
                }YRxHTML5中文学习网 - HTML5先行者学习网
                tableList.add(table);YRxHTML5中文学习网 - HTML5先行者学习网
            }YRxHTML5中文学习网 - HTML5先行者学习网
        }YRxHTML5中文学习网 - HTML5先行者学习网
        if (!tableList.isEmpty()){YRxHTML5中文学习网 - HTML5先行者学习网
            TableBuilder.build(tableList, config);YRxHTML5中文学习网 - HTML5先行者学习网
        }YRxHTML5中文学习网 - HTML5先行者学习网
        Db.init();YRxHTML5中文学习网 - HTML5先行者学习网
    }YRxHTML5中文学习网 - HTML5先行者学习网
    private List<Table> tableList = new ArrayList<Table>();YRxHTML5中文学习网 - HTML5先行者学习网
    private String configName;YRxHTML5中文学习网 - HTML5先行者学习网
    private DataSource dataSource;YRxHTML5中文学习网 - HTML5先行者学习网
    private Dialect dialect;YRxHTML5中文学习网 - HTML5先行者学习网
    private Set<Class<Model>> modelsClasses;YRxHTML5中文学习网 - HTML5先行者学习网
    public void setConfigName(String configName) {YRxHTML5中文学习网 - HTML5先行者学习网
        if (configName == null) {YRxHTML5中文学习网 - HTML5先行者学习网
            throw new IllegalArgumentException("Config name can not be null");YRxHTML5中文学习网 - HTML5先行者学习网
        }YRxHTML5中文学习网 - HTML5先行者学习网
        this.configName = configName;YRxHTML5中文学习网 - HTML5先行者学习网
    }YRxHTML5中文学习网 - HTML5先行者学习网
    public void setDataSource(DataSource dataSource) {YRxHTML5中文学习网 - HTML5先行者学习网
        if (dataSource == null) {YRxHTML5中文学习网 - HTML5先行者学习网
            throw new IllegalArgumentException("DataSource can not be null");YRxHTML5中文学习网 - HTML5先行者学习网
        }YRxHTML5中文学习网 - HTML5先行者学习网
        this.dataSource = dataSource;YRxHTML5中文学习网 - HTML5先行者学习网
    }YRxHTML5中文学习网 - HTML5先行者学习网
    public void setDialect(Dialect dialect) {YRxHTML5中文学习网 - HTML5先行者学习网
        this.dialect = dialect;YRxHTML5中文学习网 - HTML5先行者学习网
    }YRxHTML5中文学习网 - HTML5先行者学习网
    public void setModelsClasses(Set<Class<Model>> modelsClasses) {YRxHTML5中文学习网 - HTML5先行者学习网
        this.modelsClasses = modelsClasses;YRxHTML5中文学习网 - HTML5先行者学习网
    }YRxHTML5中文学习网 - HTML5先行者学习网
}

    JFinalDaoConfig的作用就是将config与数据库绑定,模型与config进行绑定,这个类的作用我相信大家如果对jfinal比较熟悉,应该不难理解。YRxHTML5中文学习网 - HTML5先行者学习网

    jfianl Model、DbPro 的获取和释放连接采用了spring的DataSourceUtils进行替换YRxHTML5中文学习网 - HTML5先行者学习网

    //conn = config.getConnection();YRxHTML5中文学习网 - HTML5先行者学习网
       conn = DataSourceUtils.getConnection(config.getDataSource());YRxHTML5中文学习网 - HTML5先行者学习网

        JdbcUtils.closeStatement(pst);YRxHTML5中文学习网 - HTML5先行者学习网
        DataSourceUtils.releaseConnection(conn, config.getDataSource());YRxHTML5中文学习网 - HTML5先行者学习网

    由于jfianl某些类的可见性,JFinalDaoConfig需要放到com.jfinal.plugin.activerecord下YRxHTML5中文学习网 - HTML5先行者学习网

    这样就可以利用spring的事务和jfinal dao的方便性了。YRxHTML5中文学习网 - HTML5先行者学习网

 YRxHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助