文章阅读
如何在javaWeb/javaEE环境中使用JDiy
文章类别: JDiy框架教程  更新日期: 2014-04-13 12:22:25.0  点击次数:10379
  WEB项目意味着高并发,  多线程的用户请求,如果我们仍然像上一篇文章(在javaSE环境中使用JDiy)那样创建JDiyContext对象, 然后再从中取出数据库连接.  这将导致程序非常频繁地进行JDiyContext上下文的初始化,并不断地打开和关闭数据库,这是极不明智的(即使通过其它优化,例如结合 AppContext应用级会话变量,使JDiyContext的创建变为单例模式,这也绝非一个好主意! )
  好了,讲了这么多,就一句话,不要像在javaSE环境中那样去使用JDiy!
  事实上,JDiy更适合用于web开发,它针对web环境做了非常多的优化,在web环境中使用JDiy,请使用下面所述的方法:
一、配置JDiy运行环境
  1. 下载得到JDiy最新版的压缩包,在压缩包根目录下有一个名为"JDiy-n.n.jar"的文件(其中n.n代表版本号),这个文件是JDiy框架的核心类库文件,请先将其放到WEB-INF/lib目录中;
  2. 将下面列出的这些JDiy框架所依赖的类库文件也一并放到WEB-INF/lib目录中。
(注:您可以从JDiy下载的压缩包的depend-jars目录中找到这些文件)
ant.jar;
dom4j-1.6.1.jar;
freemarker-2.3.17.jar;
jaxen-1.1.3.jar;
log4j-1.2.15;
mail.jar;
slf4j-api-1.5.6.jar;
slf4j-log4j12-1.5.6.jar
  3.  再看您使用的是什么数据库,从JDiy下载的压缩包的databases目录中找到对应的数据库驱动,一并添加到WEB-INF/lib目录。例如我们以MySQL为例,则将databases/MySQL/mysql-connector-java-5.1.15-bin.jar这个文件放到项目的lib目录下。
  另外值得在此提示一下,如果您有很多个WEB项目都用到了JDiy,您也可以将上述文件直接放到JSP容器(例如Tomcat)的lib库目录中去,这样您就无需在每个WEB项目的/WEB-INF/lib/目录下放置这些文件了.这将有利于后期系统的升级,同时也会节省Tomcat的内存资源.(这样做,JDiy会针对多个项目进行统一管理和优化.)
  4. 将JDiy的XML配置文件(即下载的JDiy压缩包根目录下的jdiy.xml)放到项目的WEB-INF/classes/类路径下.并修改jdiy.xml配置文件中的数据库连接信息.例如下面的配置代码段(请修改下面红色的数据库连接信息部分):
   ......前面的省略
   <databases default="def" showSql="true">
<database name="def">
<type>MYSQL</type> <!-- database type -->
<host>127.0.0.1</host> <!-- database hostname -->
<port>3306</port> <!--port number-->
<name>jdiy_db</name> <!-- database name -->
<uid>root</uid> <!--database username-->
<pwd>123456</pwd> <!--database password-->
<maxPools>32</maxPools>
<maxed>WAIT</maxed>
</database>
       ......后面的省略
  5. 配置JDiy的装载器, 修改WEB-INF/web.xml文件,在web-app节点下面新增如下代码:
<filter>
<filter-name>JDiyLoader</filter-name>
<filter-class>org.jdiy.core.JDiyLoadFilter</filter-class>
<!--下面定义JDiy配置文件位置,默认值为
jdiy.xml(相对于WEB-INF/classes/目录).
如要修改配置文件位置,请修改param-value里面的值并取消注释.-->
<!--    <init-param>
<param-name>xmlLocation</param-name>
<param-value>subdir1/subdir2/jdiy.xml</param-value>
</init-param>   -->

</filter>
<filter-mapping>
<filter-name>JDiyLoader</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  上面代码的注释部分可以去掉,从上面代码可以看出,其实JDiy的装载器,就是一个Filter而已.添加上这个Filter,就可以在您的代码中使用JDiy啦.
特别注意:如果您还使用了Servlet, 或其它的java框架(例如Struts), 要在这些Servlet或者Struts Action中使用JDiy,您必须将这个Filter置于其它框架的配置代码段之前(这一点非常重要)! 另外,上面的配置中,<url-pattern>/*</url-pattern>这一行,请保持不变,不要去修改,以使JDiy的装载器作用于整个项目.
二. 使用JDiy操作数据库
  经过上面的配置,如果不是因为您配置错误的话,您已经可以在您的WEB项目中使用JDiy了(无论是Struts-Action,  Servlet还是JSP页面中都可以使用).
  假设您有一个用于测试的数据表(表名为test, 有三个字段, id, name, age, 您可以在mysql中通过下面的DDL建表语句创建一个这样的数据表):
create table test (
   id int(11) primary key not null auto_increment,
   name varchar(50),
   age int(11)
)
  下面的代码演示了如何在JSP页面中使用JDiy操作数据库:
test.jsp 示例代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="org.jdiy.core.*" %>
<html>
<head><title>JDiy demo</title></head>
<body>
<%
//Web环境下用App类来获取JDiy上下文(它是JDiyContext的子类),注意用的是静态方法,因此无论是Servlet, 还是Struts Action中都可以这样写.
App app = App.get();
//下面获取默认的数据库操作DAO
Dao dao = app.getDao();

//下面创建一个Rs对象(即对应数据库中的记录)
Rs rs = new Rs("test");
rs.set("name", "张三");
rs.set("age", 18);
dao.save(rs);
//写入数据库
out.println(rs.get("id"));
//写入数据库后可直接从rs中取到自增的主键ID值

//再来创建一个,设置数据库字段的值时,可以连着写喔~~
Rs rs1 = new Rs("test").set("name", "李四").set("age", 27);
dao.save(rs1);
//写入数据库

//把test表中的数据全查出来
Ls ls = dao.ls(new Args("test"));
//循环输出看一下:
for (Rs item : ls.getItems()) {
out.print("姓名:" + item.get("name") + "; 年龄:" + item.get("age") + "<br/>");
//输出之后把这条记从数据库中删除:
dao.del(item);
out.print("已经删除了!<br />");
}
%>
</body>
</html>
  呵呵,是不是够简单了呀? JDiy远远不止这些功能哦, 我们会在后续文章中展示JDiy的更多魅力.让您从此可以轻松快速的编写属于您自已的jsp web站点, 从其它庞大的java web 开发框架中解脱出来,事实上,如非超大型的javaEE应用,根本没有必要使用那些庞大的开发框架,使原本很简单的东西,非要弄得那么复杂......
[ 上一篇 如何在javaSE环境中使用JDiy   下一篇 JDiy配置文件详解:如何验证配置文件的有效性 ]
鄂ICP备18006629号-1       鄂公网安备 42050302000160号


技术支持QQ:39886616 QQ群:7759217
联系JDiy作者: ziquee java/javascript WEB编程
E-mail:ziquee@abcbcd.com http://189.cn
*尊姓大名:

*电子邮箱:

*QQ号码:

*留言内容:
提交留言
取消
loading...
注:带"*"的为必填项。请如实填写您的E-mail或QQ号码以便我们能与您取得联系。