移动真的为人民服务有真烟吗了吗

JFinal官方的教程都是使用Eclipse进行开发的,而使用Intellij IDEA来做开发,不少地方和Eclipse区别还是很大的。
本文参考了网上不少,主要沿用了网友的内容,一步一步做了尝试后记录下来,感谢万能的。
分别做了两个Module,分别使用Jetty和tomcat来运行。均测试均可正常跑起来。
本文看起来虽然很长,但实际上步骤不多,为便于初学者了解Intellij IDEA,所以细节写的非常完善,每一步都有截图。
本文使用的开发环境是Intellij IDEA 14.1.4版本。JFinal是2.0版。
请大家注意:不是Intellij IDEA配置繁琐,而是我为了便于入门初学者少走弯路,写得非常细,凡是每一个出现的界面,我都截了图,而且文章里面包含了jetty和tomcat的两个。所以看起来比Eclipse好像复杂,其实不是的。简单地说,就五个步骤:建项目(类比于Eclipse的Workspace),建模块(类比于Eclipse的Project),引入Jar包,建Artifacts,写代码。就可以运行了。
一、新建项目
新建一个项目,可以是空项目,也可以是连模块一起建的项目,本文为了演示Jetty和tomcat均能运行的效果,所以先建一个空项目,再分别建两个不同的module,以便区分。
如果项目和模块一起建,可以把Web Application选上,其他的默认就行。
因为我们要分别测试jetty和tomcat的效果,要建两个模块,所以先建一个空项目。
点击“Next”进入下一步。
输入项目名称和项目所在目录,点击“Finish”即可。
二、项目参数配置
1.新建Module
如果新建一个空项目,会立即出来一个Project Structure的配置窗口。如果是连模块一起建的,请从【File】-【Project Structure】中选择,对项目参数进行配置。
首先指定项目所使用的JDK版本:
如果要单独为每个模块指定JDK版本,也可以在模块中进行配置(要在下面的新建模块步骤之后才能操作)。
下面开始新建模块。
选择Modules,准备新建Module。
2.建Jetty运行模块
(1)新建模块
我们先新建一个module,用于使用jetty来运行。
选上“Web Application”后,点击Next。
在出现的窗口中,直接在Module name中输入想要新建的module名字,下面的Content root和Module file location中会自动把路径填进去。
为了便于区分,我们把jetty运行的module命名为jf_jt。
点击“Finish”。
此时会出现如下界面;
选择“Paths”选项卡,选中“Use module compile output path”后,在“Output path”和“Test output path”中均写上类输出的路径。按照一般常规写法,我把这个目录放在module下,web\WEB-INF路径下的classes目录下。
点击“Apply”,把配置启用起来;
(2)导入类库
然后点击左侧的Libraries选项卡;
在做这一步之前,我们先要把需要的类库分别拷贝到我们建立的类库目录中。
这个模块是需要jetty来运行的,所以需要JFinal的类库和jetty的类库,事先准备好这几个类库。
Jfinal-2.0-all目录下有需要的类库文件。
“jfinal-2.0-bin.jar”或“jfinal-2.0-bin-with-src.jar”是jfinal本身的jar包,任选一个都可以,为了方便调试,可以选择“jfinal-2.0-bin-with-src.jar”。
目前这个项目是为了Jetty而建的,所以要把“jetty-server-8.1.8.jar”也要包含进去。
     在中找到项目目录,进入到Module路径中,新建;
新建一个classes目录(上文新建module时设置的输出目录)和lib目录;
把“jfinal-2.0-bin.jar”和“jetty-server-8.1.8.jar”两个文件拷贝到刚才新建的lib目录下(注意,使用jfinal-2.0-bin.jar和使用jfinal-2.0-bin-src.jar,后续界面会略有不同,但差异不大)。
回到Intellij IDEA配置界面。
选择左侧的Libraries选项卡,点击中间的“+”号,新增类库。
在弹出的窗口中,找到lib目录并选中刚才拷进去的“jfinal-2.0-bin-with-src.jar”包。
点击“OK”。
此时会让你选择这些类库将用于哪些module(如果你在项目中有多个module,在此均会列出来)在这里,我们选择这些类库用于“jf_jt”module。
此时类库就会出现在列表里。
点击“Apply”,保存配置。
再重复上述步骤,导入jetty的jar包。导入后如下图所示:
再选择左侧的“Artifacts”选项卡,此时会出现空白的Artifacts界面。
或出现已经有一个“jf_ft.war exploded”的界面(如果关闭后重新打开Project Structure界面就会出现)。建议:最好在导入类库后,点击“OK”,关闭本界面后,重新通过【File】-【Project Structure】菜单打开本界面后,选“Artifacts”选项卡进行操作,避免重复建立jf-ft.war exploded。
重新打开界面,并选择Artifacts选项卡后,界面会如下图所示:
此时窗口下部会出现一条告警信息。如上图红框部分。
此时点击“Fix…”按键,选择“Add‘jfinal-2.0-bin-with-src’to the artifact”,即可。
设置好的界面如下图所示(把Build on make选上);
点击“Apply”按钮保存设置;
再点击“+”号,添加一个“Web Application:Archive”,此时选“For ‘jfjt:war exploded’”;
建好后,界面如下图所示(如果还有告警提示,按照上面步骤,点击“Fix”按键把类库添加进Artifact中);
选中“Build on make”选项后,点“OK”按键保存并退出配置界面。
至此Jetty运行的模块已经建好。
3.建Tomcat运行模块
(1)新建模块
点击【File】-【New】-【Module】:
选上“Web Application”,并点“Next”:
填上Module的名称,这里起名为jf-tc,然后点击“Finish”:
此时的界面是这样:
(2)导入类库
现在可以直接在IDEA的界面建目录classes和lib。
鼠标右键点击[jf-tc]-[web]-[WEB-INF]目录,在出来的菜单里点击【New】-【Directory】。
输入classes和lib目录的名称:
建好目录后的模块如下所示:
点击【File】-【Project Structure】进入项目,步骤和上一个模块建立的时候一样,此时界面里已经有两个模块,选中jf-tc模块后,设置Path:
接下来再设置Libraries,在此之前,需要把jfinal-2.0-bin-with-src.jar拷贝到lib目录下。
在“Libraries”选项卡中点“+”号,选“Java”:
这里只需要导入一个jar包即可(记住,目录不要选错,要选刚才拷进去的jf-tc模块下lib目录的jfinal-2.0-bin-with-src.jar文件)。
注意:选中目标Jar包后,选模块的时候,一定不要选错。
点“OK”后,来到Artifacts选项卡:
添加一个Artifact
记住不要选错模块。
添加成功后,记住Fix掉警告信息(新加的两个Artifact都要fix)。然后都选上“Build on make”选项。
至此,两个模块都建好,可以开始真正的编写代码之旅了。
三、修改运行配置
1.创建Jetty运行配置
点击【run】-【Edit Configurations】菜单:
出现下面的界面,并点击左上角的“+”号,选“Application”选项:
设置一个名称,在这里命名为“jf-jt-jetty”。
设置Main Class(在出来的“Choose Main Class”窗口里直接输入com.jfinal……,下面会直接把class列出来,不用搜索和查找).
设好Main Class以后,设置“working directory”和“Use classpath of module”两项,如下图所示:
点击“OK”,设置完成。
2.创建tomcat运行配置
点击【run】-【Edit Configurations】菜单:
选择【Tomcat Server】-【local】菜单:
配置Tomcat参数,起一个名字,然后点击最右边的“+”号,增加一个Artifact:
在出来的窗口中,选“jf-tc:war exploded”即exploded的那个war。
点击“OK”后,就配置完成了。
注意,这个Application context里填写的路径,是你调试或运行时出现的url的后缀,比如,如果你在此设置“/”,则最后是通过“http://:8080/”运行和调试;假如你在此设置为“/test”,则最后是通过“http://localhost:8080/test”进行访问和调试。
现在可以添加源文件了。我们可以分别在两个项目下建立源文件(建源文件的过程不管上面jetty和tomcat项目都是一样的,我们以tomcat项目来举例):
我们在src路径下,添加一个名称为com.demo.
再在这个package下建三个类:
内容如下:
另外再建两个类HelloController.java和Indexcontroller.java,内容分别如下:
编辑模块下,web\WEB-INF路径下的web.xml文件,内容如下:
至此,tomcat部分已经完成,按同样的方式配置jetty部分(也可以直接把package和web.xml文件直接拷贝过去)。
五、运行项目
1.在jetty下运行
点击【Run】-【Run】菜单:
页面中间会出现让你选择运行哪个模块的选项,我们选择jetty的模块。
此时IDEA界面下半部会显示jetty的启动信息,如下:
说明jetty已经正常启动了。
此时需要手动打开页面,输入“http://localhost”,就会出现Index控制器对应的页面。(注意,如果你的电脑上装了别的Web,注意端口冲突)。
IDEA下部窗口会出现相应的调试信息。
输入http://localhost/hello,会出现hello控制器对应的页面。
2.在tomcat下运行
同样点击【Run】-【Run】菜单,在页面中心的弹出菜单选“jf-tc-tomcat”。
IDEA界面下半部分会显示启动tomcat过程中的日志,等待tomcat启动后,会自动调用本地浏览器窗口,把index页面内容显示出来。
输入http://loaclhost:8080/hello
出来hello控制器中的内容:
六、项目实际部署
Intellij IDEA打包的war文件位于项目的out目录下。
把此文件拷贝到tomcat的webapps目录下(可以改名,例如改名为test.war),无需做任何修改,启动tomcat后,直接访问:http://ip:8080/test/即可正常访问页面。
要更改输出目录,请在【File】-【Project Structure】-【Project】标签页修改即可。
大家可以加入QQ群进行交流【IntelliJ IDEA交流群 】JFinal访问路径问题
, @缪斯的情人&各位好,想请教个问题:
后台使用JFinal搭建,前端url怎么写访问路径?是绝对路径,还是相对路径?我有个小项目之前一直用jetty测试,今天部署到tomcat中后,发现所有的url路径都错了,之前(jetty)的写法是/user/login,部署到tomcat中需要改为user/login,把前面的斜线去掉,jetty调试时只需访问&,部署到tomcat后需要访问 请问这个问题怎么解决?谢谢~~
路径的问题用ContextPathHandler解决。我的经验是最好写绝对路径
/** &* Provide a context path to view if you need. &* &br& &* Example:&br& &* In JFinalFilter: handlers.add(new ContextPathHandler(&CONTEXT_PATH&));&br& &* in freemarker: &img src=&${BASE_PATH}/images/logo.png& /& &*/ public class ContextPathHandler extends Handler {
--- 共有 1 条评论 ---
用这种方式设置绝对路径简洁、方便~
tomcat 配置指定appBase=&webapps/&& &应该这样就可以了吧
String path = request.getContextPath();
String basePath = request.getScheme() + &://& + request.getServerName() + &:& + request.getServerPort() + path + &/&;
&context配置的问题
tomcat conf/server.xml
&Context path=&& docBase=&/usr/local/www/&& debug=&0& reloadable=&false& crossContext=&false& /&
引用来自“喵了个咪”的答案String path = request.getContextPath();
String basePath = request.getScheme() + &://& + request.getServerName() + &:& + request.getServerPort() + path + &/&;
改成绝对路径应该没有问题,关键是我前端使用的easyui,包含大量的这种url,我都是写的/user/login这种格式,而且jetty测试都是没有问题的,就是换成tomcat就出问题了,
有没有改动最少的方法能把这个问题解决掉呢? jetty和tomcat之间存在兼容问题?
引用来自“绝望的八皮”的答案 &context配置的问题
tomcat conf/server.xml
&Context path=&& docBase=&/usr/local/www/&& debug=&0& reloadable=&false& crossContext=&false& /&
我用myeclipse之间部署项目,myeclipse中能不能做下设置达到同样的效果呢?谢谢~~
引用来自“Singer”的答案tomcat 配置指定appBase=&webapps/&& &应该这样就可以了吧我用myeclipse之间部署项目,myeclipse中能不能做下设置达到同样的效果呢?谢谢~~
--- 共有 2 条评论 ---
: 因为第一次组内推广使用 ,每个人都让他们去修改tomcat配置,感觉他们会觉得这是JFinal的问题,第一印象就觉得不靠谱,期待更好的解决方式!!
Myeclipse的tomcat 你指定外部的tomcat 别用它自带的
外部的tomcat你自己修改配置就好了!
没其他说的,最方便的是改下tomcat的server.xml
&Context path=&& docBase=&/&& &/&
--- 共有 1 条评论 ---
谢谢,还是决定改为绝对路径了,安全可靠~Jfinal实现分页的思路。。
请教Jfinal实现分页的思路。
以下是问题补充:
:分页缓存的话好像不是很好哦
JFinal demo 项目中的WebRoot/common 下有个 _paginate.html, 可以直接用的,不用自己再写了
一般在controller这样用:
setAttr(&blogPage&, Blog.dao.paginate(1, 10, &select *&, &from blog&);
render(&list.html&);
在页面这样用:
&#include &/common/_paginate.html& /&
&@paginate currentPage = blogPage.pageNumber totalPage = blogPage.totalPage actionUrl = &/blog/list/& /&
--- 共有 4 条评论 ---
如果是用其他框架,那就。。你懂的。一堆逻辑处理,并且很难重用。而且也做得不够好。
嗯。因为我刚好也需要做一个分页功能,刚好可以参考一下你的例子。真心觉得不错。
: 代码很清爽,页面只要两行就搞定分页,并且可以重用,后端只要一行就搞定分页
嗯,这个真心不错。。。
我现在做的也是直接用jfinal demo里面的分页了。很方便。
刚上传了一个带分页的demo,需要的可以在这里下载:&
引用来自“JFinal”的答案刚上传了一个带分页的demo,需要的可以在这里下载:&谢谢。。
很好,收藏啦!
引用来自“JFinal”的评论JFinal demo 项目中的WebRoot/common 下有个 _paginate.html, 可以直接用的,不用自己再写了
一般在controller这样用:
setAttr(&blogPage&, Blog.dao.paginate(1, 10, &select *&, &from blog&);
render(&list.html&);
在页面这样用:
&#include &/common/_paginate.html& /&
&@paginate currentPage = blogPage.pageNumber totalPage = blogPage.totalPage actionUrl = &/blog/list/& /&
&如果在页面上使用你写的那两行,是不是要规定是html页面呀,我这边jsp页面写上这两行直接在页面显示代码了。工具使用(4)
JFinal官方的教程都是使用Eclipse进行开发的,而使用Intellij IDEA来做开发,不少地方和Eclipse区别还是很大的。
本文参考了网上不少文章,主要沿用了网友的内容,一步一步做了尝试后记录下来,感谢万能的互联网。
分别做了两个Module,分别使用Jetty和tomcat来运行。均测试均可正常跑起来。
本文看起来虽然很长,但实际上步骤不多,为便于初学者了解Intellij IDEA,所以细节写的非常完善,每一步都有截图。
本文使用的开发环境是Intellij IDEA 14.1.4版本。JFinal是2.0版。
请大家注意:不是Intellij IDEA配置繁琐,而是我为了便于入门初学者少走弯路,写得非常细,凡是每一个出现的界面,我都截了图,而且文章里面包含了jetty和tomcat的两个项目。所以看起来比Eclipse好像复杂,其实不是的。简单地说,就五个步骤:建项目(类比于Eclipse的Workspace),建模块(类比于Eclipse的Project),引入Jar包,建Artifacts,写代码。就可以运行了。
一、新建项目
新建一个项目,可以是空项目,也可以是连模块一起建的项目,本文为了演示Jetty和tomcat均能运行的效果,所以先建一个空项目,再分别建两个不同的module,以便区分。
如果项目和模块一起建,可以把Web Application选上,其他的默认就行。
因为我们要分别测试jetty和tomcat的效果,要建两个模块,所以先建一个空项目。
点击“Next”进入下一步。
输入项目名称和项目所在目录,点击“Finish”即可。
二、项目参数配置
1.新建Module
如果新建一个空项目,会立即出来一个Project Structure的配置窗口。如果是连模块一起建的,请从【File】-【Project Structure】中选择,对项目参数进行配置。
首先指定项目所使用的JDK版本:
如果要单独为每个模块指定JDK版本,也可以在模块中进行配置(要在下面的新建模块步骤之后才能操作)。
下面开始新建模块。
选择Modules,准备新建Module。
2.建Jetty运行模块
(1)新建模块
我们先新建一个module,用于使用jetty来运行。
选上“Web Application”后,点击Next。
在出现的窗口中,直接在Module name中输入想要新建的module名字,下面的Content root和Module file location中会自动把路径填进去。
为了便于区分,我们把jetty运行的module命名为jf_jt。
点击“Finish”。
此时会出现如下界面;
选择“Paths”选项卡,选中“Use module compile output path”后,在“Output path”和“Test output path”中均写上类输出的路径。按照一般常规写法,我把这个目录放在module下,web\WEB-INF路径下的classes目录下。
点击“Apply”,把配置启用起来;
(2)导入类库
然后点击左侧的Libraries选项卡;
在做这一步之前,我们先要把需要的类库分别拷贝到我们建立的类库目录中。
这个模块是需要jetty来运行的,所以需要JFinal的类库和jetty的类库,事先准备好这几个类库。
Jfinal-2.0-all目录下有需要的类库文件。
“jfinal-2.0-bin.jar”或“jfinal-2.0-bin-with-src.jar”是jfinal本身的jar包,任选一个都可以,为了方便调试,可以选择“jfinal-2.0-bin-with-src.jar”。
目前这个项目是为了Jetty而建的,所以要把“jetty-server-8.1.8.jar”也要包含进去。
     在电脑中找到项目目录,进入到Module路径中,新建文件夹;
新建一个classes目录(上文新建module时设置的输出目录)和lib目录;
把“jfinal-2.0-bin.jar”和“jetty-server-8.1.8.jar”两个文件拷贝到刚才新建的lib目录下(注意,使用jfinal-2.0-bin.jar和使用jfinal-2.0-bin-src.jar,后续界面会略有不同,但差异不大)。
回到Intellij IDEA配置界面。
选择左侧的Libraries选项卡,点击中间的“+”号,新增java类库。
在弹出的窗口中,找到lib目录并选中刚才拷进去的“jfinal-2.0-bin-with-src.jar”包。
点击“OK”。
此时会让你选择这些类库将用于哪些module(如果你在项目中有多个module,在此均会列出来)在这里,我们选择这些类库用于“jf_jt”module。
此时类库就会出现在列表里。
点击“Apply”,保存配置。
再重复上述步骤,导入jetty的jar包。导入后如下图所示:
再选择左侧的“Artifacts”选项卡,此时会出现空白的Artifacts界面。
或出现已经有一个“jf_ft.war exploded”的界面(如果关闭后重新打开Project Structure界面就会出现)。建议:最好在导入类库后,点击“OK”,关闭本界面后,重新通过【File】-【Project Structure】菜单打开本界面后,选“Artifacts”选项卡进行操作,避免重复建立jf-ft.war exploded。
重新打开界面,并选择Artifacts选项卡后,界面会如下图所示:
此时窗口下部会出现一条告警信息。如上图红框部分。
此时点击“Fix…”按键,选择“Add‘jfinal-2.0-bin-with-src’to the artifact”,即可。
设置好的界面如下图所示(把Build on make选上);
点击“Apply”按钮保存设置;
再点击“+”号,添加一个“Web Application:Archive”,此时选“For ‘jfjt:war exploded’”;
建好后,界面如下图所示(如果还有告警提示,按照上面步骤,点击“Fix”按键把类库添加进Artifact中);
选中“Build on make”选项后,点“OK”按键保存并退出配置界面。
至此Jetty运行的模块已经建好。
3.建Tomcat运行模块
(1)新建模块
点击【File】-【New】-【Module】:
选上“Web Application”,并点“Next”:
填上Module的名称,这里起名为jf-tc,然后点击“Finish”:
此时的界面是这样:
(2)导入类库
现在可以直接在IDEA的界面建目录classes和lib。
鼠标右键点击[jf-tc]-[web]-[WEB-INF]目录,在出来的菜单里点击【New】-【Directory】。
输入classes和lib目录的名称:
建好目录后的模块如下所示:
点击【File】-【Project Structure】进入项目,步骤和上一个模块建立的时候一样,此时界面里已经有两个模块,选中jf-tc模块后,设置Path:
接下来再设置Libraries,在此之前,需要把jfinal-2.0-bin-with-src.jar拷贝到lib目录下。
在“Libraries”选项卡中点“+”号,选“Java”:
这里只需要导入一个jar包即可(记住,目录不要选错,要选刚才拷进去的jf-tc模块下lib目录的jfinal-2.0-bin-with-src.jar文件)。
注意:选中目标Jar包后,选模块的时候,一定不要选错。
点“OK”后,来到Artifacts选项卡:
添加一个Artifact
记住不要选错模块。
添加成功后,记住Fix掉警告信息(新加的两个Artifact都要fix)。然后都选上“Build on make”选项。
至此,两个模块都建好,可以开始真正的编写代码之旅了。
三、修改运行配置
1.创建Jetty运行配置
点击【run】-【Edit Configurations】菜单:
出现下面的界面,并点击左上角的“+”号,选“Application”选项:
设置一个名称,在这里命名为“jf-jt-jetty”。
设置Main Class(在出来的“Choose Main Class”窗口里直接输入com.jfinal……,下面会直接把class列出来,不用搜索和查找).
设好Main Class以后,设置“working directory”和“Use classpath of module”两项,如下图所示:
点击“OK”,设置完成。
2.创建tomcat运行配置
点击【run】-【Edit Configurations】菜单:
选择【Tomcat Server】-【local】菜单:
配置Tomcat参数,起一个名字,然后点击最右边的“+”号,增加一个Artifact:
在出来的窗口中,选“jf-tc:war exploded”即exploded的那个war。
点击“OK”后,就配置完成了。
注意,这个Application context里填写的路径,是你调试或运行时出现的url的后缀,比如,如果你在此设置“/”,则最后是通过“http://localhost:8080/”运行和调试;假如你在此设置为“/test”,则最后是通过“http://localhost:8080/test”进行访问和调试。
四、添加源文件
现在可以添加源文件了。我们可以分别在两个项目下建立源文件(建源文件的过程不管上面jetty和tomcat项目都是一样的,我们以tomcat项目来举例):
我们在src路径下,添加一个package名称为com.demo.
再在这个package下建三个类:
内容如下:
另外再建两个类HelloController.java和Indexcontroller.java,内容分别如下:
编辑模块下,web\WEB-INF路径下的web.xml文件,内容如下:
至此,tomcat部分已经完成,按同样的方式配置jetty部分(也可以直接把package和web.xml文件直接拷贝过去)。
五、运行项目
1.在jetty下运行
点击【Run】-【Run】菜单:
页面中间会出现让你选择运行哪个模块的选项,我们选择jetty的模块。
此时IDEA界面下半部会显示jetty的启动信息,如下:
说明jetty已经正常启动了。
此时需要手动打开浏览器页面,输入“http://localhost”,就会出现Index控制器对应的页面。(注意,如果你的电脑上装了别的Web服务器,注意端口冲突)。
IDEA下部窗口会出现相应的调试信息。
输入http://localhost/hello,会出现hello控制器对应的页面。
2.在tomcat下运行
同样点击【Run】-【Run】菜单,在页面中心的弹出菜单选“jf-tc-tomcat”。
IDEA界面下半部分会显示启动tomcat过程中的日志,等待tomcat启动后,会自动调用本地浏览器窗口,把index页面内容显示出来。
输入http://loaclhost:8080/hello
出来hello控制器中的内容:
六、项目实际部署
Intellij IDEA打包的war文件位于项目根目录的out目录下。
把此文件拷贝到tomcat的webapps目录下(可以改名,例如改名为test.war),无需做任何修改,启动tomcat后,直接访问:即可正常访问页面。
要更改输出目录,请在【File】-【Project Structure】-【Project】标签页修改即可。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:73102次
积分:2294
积分:2294
排名:第13442名
原创:143篇
转载:107篇
(28)(9)(3)(6)(2)(3)(1)(2)(16)(63)(59)(35)(18)(9)谈谈 jfinal 的优缺点
jfinal是国产优秀的web框架.jfinal短小精悍强大,易于使用.不过万事有度,省的太狠也不太好.
1.框架应该尽量兼容各种场景,因为你不知道以后的场景.框架是一个持续集成和更新的过程,对公司来说这是非常重要的技术积累.(ps:多个数据库总算基本场景吧......)
2.不应该整体使用map代替普通的javabean.基本是需要记忆数据库字段了,map也不方便IDE重构和手写错误的风险,也不适合对特殊字段进行注解,因为已经没有get set 方法了.
3.应该拥有IOC容器.每次都是自己手动new对象,如果真想追求极致的性能,ioc容器也应该提供吧.
4.需要更加完善的数据库事务,隔离级别,传播特性,支持多数据库,批量操作等,事务是非常严谨的!!!
5.第三方组件兼容.框架再强,也不能完成所有的任务,需要和第三方兼容,最好是官方已经做好,spring做的比较牛啊,几乎所有的主流第三方都能和它直接兼容,就连一直嫌弃spring的jfinal也提供了一个插件......
6.持续的兼容更新和维护.在天朝生存压力还是比较大的,老外则不同.例如:spring已经持续更新10年,而且版本兼容,文档等做的都比较好.我对fireworkflow很无语了.......
7.商业原因.大部分屌丝程序员都是打工的,需要掌握主流的东西,例如spring,这样即使跳巢,也不会掉价.
最后补充一句,我在jfinal的群里说过一个问题是sql group by 分页,jfinal的处理方式有问题,作者尽快修复下吧.
我澄清几点误区:
1.spring和Guice.说Guice比spring快多少,只是在启动阶段,启动完成后,bean被load到内存,运行速度是一样的
2.spring的开发速度也是很快的,通过好的封装开发方法,和代码生成辅助,开发效率会比jfinal更好些.
3.spring mvc 虽然使用了反射,但是是单例的,性能也不会太低.
4.spring的模块化较好,我使用了11个spring的jar,5M大小.这个也不算什么重量级的东西吧.....
5.如果前期没有设计好,想着以后扩展,你的下次升级API就很难兼容了......
是骡子是马拉出来溜溜:
沙发~!!看完了,部分观点不错!
说的很好~持续关注
持续关注Spring
嗯,赞同楼主。JFinal 在这几个方面确实需要提升。 不过数据库这块是一个大坑啊。
不过JFinal框架在配置上还是比Spring出色不少。省了集成时候配置那么多 Xml。
还是喜欢map更多,觉得javabean的一堆getter和setter很繁琐,可能是有些代码洁癖,如果java这门语言可以像Python3.X那样,有个革命性的从语法本身的改变那就好了。
--- 共有 5 条评论 ---
map不怕写错的话
: 主要是限制, seter和geter 是限制到类里的不能随意的增加改变字段, 而map就很容易, jfinal里你查出来 blog 可以很灵活的在需要的地方 blog.put('comments',comments)
而且这样和json无缝衔接
map或JSON都比get set对好用简洁,最近用的是数组,定义好模版后面直接用数字,简洁到家了
: 代码里看着一堆setget方法不难受么……
get set 也不需要手写,都是自动生成的,这样使用起来应该和map没有任何区别啊
我就在用 jfinal& , 我是新手 ,完全不懂什么 Ioc& ,也不懂什么 是 javabean& 。&
spring 甚至用都没用过 ,jfinal 无疑是对新手 是友好的。很容易上手,编写辅助类也易如反掌 ,写个blog容易的很,不需要懂 复杂的概念。new 不是语言提供的吗 ? 用一下为什么不行呢, 百度了一下 Ioc ,什么 控制反转 、依赖注入 。汗 ,好高端 ,幸好 jfinal 不用这个 ,否则就悲剧了 ,搞不懂。
如果再复杂 ,又何必搞 java web ,我会 去搞 php web ,&
jfinal 事物我在用 ,目前是完美的 ,没遇到问题 ,group by 还没用到 ,不具备发言权
--- 共有 12 条评论 ---
: 还可以啦。研究jfinal的源码对新手有很大帮助!
jfinal是对新手的毒害,因为别的公司不用这个
这个看具体项目实现了,我们一般不放在controller层,
: JFinal使用renderJson实现远程通讯的功能,为什么要考虑webservices的协议规范,功能实现就OK啦~~
: 你的都到controller层了,很多时候都需要遵守webservice的协议规范的
继续观望!
jfinal欢迎任何观点和意见。
1.框架的适用场景。这个问题真的没法一言蔽之,任何一个框架不可能全部覆盖千万用户的适用场景,一千个用户有一千个哈姆雷特。所以只能说覆盖常用场景,对特殊场景提供可扩展性。
2.至于map替代bean的方式,我不敢妄加多言,只是揣测作者用意,在于借鉴动态语言像ROR,django的一些特性,奈何java语言本身限制,无法做到动态语言那般优雅。至于你说的IDE检查错误,这个是你过分依赖IDE的结果,假如你换门ruby,python试试,谁给你检查错误?
3.IOC容器,其实jfinal也有。本质上来说IOC这玩意,有人觉得是个噱头而已,有人就非常喜欢。有些时候简单的问题容易想复杂,往往很多人就忘记了还能new一下。
4.事务这一块,最初jfinal是比较弱,近期也在改进,加入了嵌套事务。隔离级别和事务传播这些都是jdbc自有的,jfinal基于jdbc,自然具备。
5.第三方组件兼容。呵呵,这个不知道网友们扩展出多少第三封组件库了,redis,shiro,cron&&&。官方不会提供这么多组件的,所谓micro core和muti plugins,这和spring是不一样的。
6.持续版本更新和兼容。这个不必担心,只要作者健在(原谅我波波)。况且社区还在,未来会有新动作(期待吧)。
7.商业原因。这个&&&&太汗了。一个只会用框架的程序员,你觉得跳几次槽会掉多少身价。况且jfinal也没说不让你学其他的了,这&&&无力吐槽了。
最后还是代表jfinal社区(其实我也是个jfinal屌丝,坐等波波大婶吧)说一句jfinal欢迎各种声音,也会积极吸取大家优秀的意见。
--- 共有 6 条评论 ---
: java也不是彻彻底底地面向对象啊
: 你估计是没有用过jfinal,jfinal支持javabean,只是一般人偷懒没直接model映射了,然后就是用get set来搞。不是不支持懂吗?
jfinal这玩意 也就只能用来做简单的增删改查项目,大型项目如sap,erp之类,更在于业务对象的封装与架构。javabean的存在不只是承载数据,对象的封装是map无法做到的。javabean的真正意义在于业务对象的封装与架构。如果用map来做,那就不要使用java语言。
记住, java之所以牛逼,就在于彻彻底底的面向对象.
: 1.多个数据库总算基本场景吧.2.java不是动态语言3.ioc容器也就是单例bean了,也方便解耦4.这是spring的发家技能5.主流的第三方插件基本都是官方,要么是spring兼容,要么主动兼容spring7.额你也赞成他要是"复杂点"就去搞php吗?
: 1.尽量覆盖常用业务场景 2.动态语言没有类型检查,比如js 3.ioc和单例没关系,ioc多半是为了解耦,不是什么技术,一种设计模式而已 4.spring事务隔离是自有的 5.主流第三方太多啦,spring的第三方插件也是社区贡献的 7.红星说的在理,jfinal门槛就是这么低,less is more
坐等波波现身说法~~

我要回帖

更多关于 为人民服务有真烟吗 的文章

 

随机推荐