版权申明:允许非盈利性引用,如有转载,请注明来源:“编译:brickhan;转载自http://www.javapub.com ”字样, 版权归原作/译者所有。
按照下面的步骤进行:
1. 下载 eclipse. 2.1 m2 版本
2. 下载resin. 2.1.7
3. 下载resin plug-in for eclipse. 0.5.2 版本
4. 安装并设置上面的软件,如果jdbc driver不在系统的classpath内,则需要把它复制到resin的 "lib" 目录里面.
5. 下载 hibernate. 1.2b2 .
6. 下载webwork. version 1.2.1.
7. 下载log4j. version 1.2.7
8. 用eclipse 创建一个 resin 的java project.
9. 右击 "web-inf/src" 后从下拉菜单选择 "import...".
10. 浏览文件系统找到 webwork´s skeleton example, 导入 "webwork.properties", "webwork.vm", "log4j.properties", 和 "views.properties".
11. 用同样的方法导入 webwork的 "web.xml" 到 "web-inf" .
12. 从 webwork´s "lib" 文件夹中导入 "webwork.jar" 和所有其他支持的.jar文件,除开 "saxon.jar" 文件,到 "web-inf/lib".
13. 导入 webwork´s "template" 文件夹到你 resin project的根目录.
14. 从 hibernate´s 根目录导入 "cache.ccf" 和 "hibernate.properties" 到 "web-inf/src".
15. 注意这儿另外也有一个note that there´s also another "log4j.properties" 文件file. 用编辑器打开,将其中的内容复制,然后追加到你已经导入到"web-inf/src"目录的"log4j.properties"中。
16. 从hibernate´s 根目录中导入 "hibernate.jar" 到 "web-inf/lib"中.
17. 从hibernate的 "lib" 目录导入所有jar文件到"web-inf/lib",除开 "j2ee.jar," "junit.jar," "xerces.jar," 和 "xml-apis.jar" 文件.
18. 导入log4j .jar 文件到 "web-inf/lib".
19. 使用 hibernate工具来建立持久层的类和映射.
20. 编辑 "web-inf/web.xml".增加如下的节点:
12: <servlet>
13: <servlet-name>initializer</servlet-name>
14: <servlet-class>skeleton.servlet.skeletoninitializer</servlet-class>
15: <load-on-startup>1</load-on-startup>
16: </servlet>
17:
18: <resource-ref>
19: <res-ref-name>jdbc/skeleton</res-ref-name>
20: <res-type>javax.sql.datasource</res-type>
21: <init-param driver-name="org.postgresql.driver"/>
22: <init-param url="jdbc:postgresql://localhost/skeleton"/>
23: </resource-ref>
编写类似下面的初始化 servlet.:
1:package skeleton.servlet;
2:
3:import java.io.ioexception;
4:
5:import javax.servlet.genericservlet;
6:import javax.servlet.servletconfig;
7:import javax.servlet.servletcontext;
8:import javax.servlet.servletexception;
9:import javax.servlet.servletrequest;
10:import javax.servlet.servletresponse;
11:
12:import javax.naming.context;
13:import javax.naming.initialcontext;
14:import javax.naming.namingexception;
15:
16:import java.sql.connection;
17:import java.sql.sqlexception;
18:import javax.sql.datasource;
19:
20:import cirrus.hibernate.datastore;
21:import cirrus.hibernate.hibernate;
22:import cirrus.hibernate.hibernateexception;
23:import cirrus.hibernate.sessionfactory;
24:import cirrus.hibernate.session;
25:
26:public class skeletoninitializer extends genericservlet
27:{
28: public void init(servletconfig config) throws servletexception
29: {
30: super.init(config);
31: datastore ds = hibernate.createdatastore()
32: .storeclass(skeleton.persistent.customer.class)
33: .storeclass(skeleton.persistent.purchase.class);
34:
35: try
36: {
37: sessionfactory factory = ds.buildsessionfactory();
38:
39: context ctx = (context)new initialcontext().lookup("java:comp/env");
40: datasource db = (datasource)ctx.lookup("jdbc/skeleton");
41: connection conn = db.getconnection();
42: session sess = factory.opensession(conn);
43: sess.disconnect();
44:
45: servletcontext app = getservletcontext();
46: app.setattribute("hibernate.factory", factory);
47: app.setattribute("hibernate.session", sess);
48: }
49: catch (hibernateexception he)
50: {
51: he.printstacktrace();
52: }
53: catch (namingexception ne)
54: {
55: ne.printstacktrace();
56: }
57: catch (sqlexception se)
58: {
59: se.printstacktrace();
60: }
61: }
62:
63: public void service(servletrequest req, servletresponse res) throws ioexception, servletexception
64: {
65: // this space intentionally left blank
66: }
67:}
当然你需要使用真实的持久类的名称,最好,对这段代码再进行加工。.
编写类似下面的 webwork action classes:
1:package skeleton.action;
2:
3:import webwork.action.action;
4:import webwork.action.actioncontext;
5:import webwork.action.actionsupport;
6:
7:import cirrus.hibernate.hibernate;
8:import cirrus.hibernate.hibernateexception;
9:import cirrus.hibernate.session;
10:
11:import java.sql.sqlexception;
12:
13:import java.util.list;
14:
15:import skeleton.persistent.customer;
16:
17:public class skeletonaction extends actionsupport
18:{
19: private string incominga;
20: private string incomingb;
21: private customer customer;
22:
23: public void setincominga(string value)
24: {
25: incominga = value;
26: }
27:
28: public void setincomingb(string value)
29: {
30: incomingb = value;
31: }
32:
33: public void setcustomer(customer value)
34: {
35: customer = value;
36: }
37:
38: public string getincominga()
39: {
40: return incominga;
41: }
42:
43: public string getincomingb()
44: {
45: return incomingb;
46: }
47:
48: public customer getcustomer()
49: {
50: return customer;
51: }
52:
53: public string execute()
54: {
55: session sess = (session)actioncontext.getcontext().getapplication.().get("hibernate.session");
56: try
57: {
58: sess.reconnect();
59: list results = sess.find("your query here", new object[]{incominga, incomingb}, new object[]{hibernate.string, hibernate.string});
60: // do something to discriminate among the results; for now snag the first one
61: customer = (customer)results.iterator().next();
62: }
63: catch (hibernateexception he)
64: {
65: he.printstacktrace();
66: return action.error;
67: }
68: catch (sqlexception se)
69: {
70: se.printstacktrace();
71: return action.error;
72: }
73: finally
74: {
75: try
76: {
77: sess.disconnect();
78: }
79: catch (hibernateexception he)
80: {
81: he.printstacktrace();
82: }
83: catch (sqlexception se)
84: {
85: se.printstacktrace();
86: }
87: }
88: return action.success;
89: }
90:}
使用webwork´s <property> tag 开发你的views,:
1:<ww:property value="customer">
2: <ww:property value="name"/><br>
3: <ww:property value="address"/><br>
4: ...
5:</ww:property>
在不同的项目上,步骤19-23是需要对action的代码进行一些工作。
闽公网安备 35060202000074号