??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
好了Q现在具体来说说q个单的例子?/span>
首先Q需要具备以下条Ӟ
1Q?/span>eclipse 3.2或者其它版本。此文所采用的是3.2英文版?/span>
2Q?/span>Mysql 数据库以及驱动程?/span>.jar文g?/span>
3Q?/span>hibernate Synchronizer插g。可?/span>sourcefourge上下载?/span>
4Q?/span>hibernate文g包,里面包括所有的jar文g?/span>
W二Q在MYSQL中徏立一个测试数据库Q名?/span>test。ƈ建立一个数据表person:
use test;
create table person(
ID int auto_increment primary key,
Name char(10),
Sex char(1),
Address char(20));
W三Q在eclipse中新Z?/span>java project。命名ؓhibernateTest。ƈ导入JRE文g.W四Q右键单dl徏立好?/span>JAVA工程Q将hibernate?/span>mysql?/span>.jar文g导入到工E中。具体操作:右键单击工程->Build path->Configure build path->add external JARS 导入hibernate?/span>mysql的相?/span>jar文g。至此我们已l搭建好了开发环境,下一步开始进行实际开发?/span>
W五Q右键单dE,选择new-->other-->hibernate-->hibernate configure file,在弹出窗口中填入相应内容Q?/span>eclipse会自动生成hibernate?/span>configure 文g。在弹出的窗口中也可以选择数据源配|方式,Ҏ只要在窗口在connection中选择database便可。有兴趣的可以自p试看?/span>
注意Q请保证configure文g是处于工E的根目录下面,否则在编译的时候会因ؓ找不到該文g而出错?/span>
W六Q在工程中新Z个包Q名字随你喜Ƣ,主要是用来存放一?/span>JAVA文g。右键单dE?/span>hibernateTestànewàpackageà写入包名Q这里我所用的包名?/span>src。完成以后,单击所建立的包Q?/span>newàotheràhibernateàhibernate mapping file,出现配置H口Q如果前面步骤正的话,会看到如图的画面,点击tables对应?/span>refresh按键Q将会出C所建数据库中的表,此时选择我们所建立?/span>person表,点击finishQ会看到src目录中出C一?/span>person.hbm.xml文gQ利?/span>hibernate Synchronizer Editer打开q个文gQ方法:右键单击該文?/span>àopenwithàhibernate Synchronizer Editer。查看其?/span>ID?/span><generator class>属性,认該属性配|ؓidentity,自动增长型?/span>配置完成?/span>
l过上一步后Q因为我们采?/span>hibernate SynchronizerQ?/span>eclipse会ؓ我们自动生成一?/span>person.java文g和一?/span>BasePerson.java文gQ?/span>BasePerson.java位于一个独立包中,主要是提供对数据库表person的相应字D늚get?/span>setҎQ它实现Serializable接口。ƈ重写了其中的equals(),hashCode()?/span>toString()Ҏ。我理解为实际上是一?/span>POJOQ没有什么其它特D的。?/span>person.java只是l承?/span>BasePerson.javaQ这样做的好处就是实现程序更好的装?/span>
上面的步骤都完成以后Q我们需要将person.hbm.xml文g映射?/span>hibernate.cfg.xml文g中去Q这h能程序找?/span>personq个cR方法:依次执行1?/span>2。(1Q右键单?/span>person.hbm.xmlàhibernate Synchronizerà Synchronizefiles 。(2Q?/span>右键单击person.hbm.xmlàhibernate SynchronizeràAdd mapping reference?/span>
l过以上所有操作,我们完成了所有需要配|的文gQ现在来~写一个测试文Ӟ试我们的上q配|是否成功。新Z?/span>JAVA文g。放?/span>src 目录下,在下输入以内容:
package src;
import java.util.Date;
import java.util.Iterator;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Hello {
/**
*
*
*/
public Hello(){
}
public static void main(String[] args) throws Exception{
Configuration cfg = new Configuration().configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Person person = new Person();
person.setName("hejian22");
person.setSex("F");
person.setAddress("http://test.com.cn");
session.save(person);
session.flush();
session.close();
}
}
完成后,q行該文Ӟ会出现错误,l过多番查找资料Q才发现hibernate Synchronizer插g有一?/span>BUGQ当我们通过add mapping file?/span>hibernate.cfg.xm.d映射文g的时候,它会自动?/span>hibernate.cfg.xm.的标题部份去掉。这时只要把标题部䆾写上便可以成功执行?/span>
在这里我只写Z向数据库中添加记录这一功能,其它功能可以p己去试验。都是最基础的东西,q得l箋努力?/span>
ȝQ经q这ơ教训,自己意识C个问题,我们不能L从网上找到的代码q接拿去运行調试,而应该弄清楚它的基本l构Q因为可能其中存在许多问题,要想把一D代码真正变成自qQ还是要l过一定的探烦?/span>
Java的Web开发环境布|向来很烦琐Q这可不得不怪B/Sl构?#8220;苦了开发者,方便千万用户”舍己Zh_Q以及各U工L本纷杂带来的不便与不不负责ȝ友的胡ؕ指引。下面把我自q成功l验向大家汇报,希望有需要的朋友能少走弯路。具体步骤如下:
1.安装Java开发环境Eclipse3.2.2Q安装Oracle10g数据?/strong>
首先安装SUN JDK1.6以上版本的Java基础开发环境,配置Javapȝ变量Q这个太基础Q不具体展开了)。接着下蝲解压安装Eclipse3.2开发环境,Ҏ个h需要安装语a包、MyEclipse{插件扩充功能(也可以先不安装)?br>
安装Oracle10g数据库,创徏试数据库:TDBASE与DBAQZHAOBZ/11111Q徏立表I间QZHAOBZ和测试表QUSER_INF。其中USER_INF表具有USER_ID、USER_NAME、USER_TEL字段属性,q添如若q测试记录?br>
2.安装Tomcat及其插g
下蝲q解压Tomcat启动插gtomcatPluginV32beta3.zip(http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-120.html)Q将其下目录文g拷入eclipse\plugins目录下(q步若成功执行,eclipseq行后将发现多了Tomcat菜单及其启动、停止、重启等快捷按钮。若看不刎ͼ可能通过删除eclipse\configuration目录下除config.ini外所有文Ӟ再重启eclipse来解冻I?br>
下蝲Tomcat标准E序apache-tomcat-6.0.10.zipQ?/font>http://tomcat.apache.org/Q?br>
配置pȝ变量“TOMCAT_HOME”Q其gؓ兌到apache-tomcat-6.0.10目录的\径。打开apache-tomcat-6.0.10\conf\tomcat-users.xml 文gQ在Qtomcat-usersQ</tomcat-usersQ?/font>标记元素中加入:Quser username="zhaobz" password="12345" roles="admin,manager"/Q?/font>Q即加入角色w䆾为admin和manager的管理员zhaobzQ我们之后需要以manager角色上传Web应用E序和以admin角色配置数据员。再打开apache-tomcat-6.0.10\conf目录?font color=#339966>server.xml文gQ将QConnector元素后port="8080"的属性改为port="8000"Q注意:׃Oracle已占用了Tomcat默认?080讉K端口Q必L改其它未被占用的I闲端口Q此处假设ؓ8000Q?br>
接下来运行eclipseE序Q配|Tomcat属性。打开菜单“H口/首选项”Q打开“Java/已安装的JRE”选项Q将q行环境参数位置定位于JDK目录下的JRE目录。打开“Tomcat”选项QTomcat Version选择6.xQTomcat Home定位到apache-tomcat-6.0.10目录Q其余默认关联即可。打开“Tomcat/JVM Settings”?#8220;Tomcat/Source Path”选项QJRE选择刚配|的已安装的JREQAutomatcially compute source path打勾。再打开“Tomcat Manager App”选项Qurl输入http://localhost:8000/managerQusername和password填Tomcat中新加入的zhaobz?2345Q这步可以保证将Web应用E序发布到TomcatQ项目Reload也不会出错)?br>
3.获取Oracle10g相应的JDBC驱动E序Q配|Data Sources和Context
拯Oracle10g安装目录下oracl10/jdbc/lib/classes12.jar驱动文g到Tomcat目录下common/lib公共文g夹下?br>
然后在eclipse中启动TomcatQ点击那个猫的图标即可)Q以zhaobz/12345w䆾登陆http://localhost:8000/admin后新建数据源。其中JNDI NameQjdbc/OracleQ此数据源JNDI名字可以随意取,但不可重复)QData Source URLQjdbc:oracle:thin:@localhost:1521:TDBASEQ?521为Oracle讉K端口QNBZJU讉K的数据库名称Q,JDBC Driver ClassQoracle.jdbc.driver.OracleDriverQ可打开classes12.jar文g查看到相应的路径Q否则驱动有误)QUsernameQzhaobz和PasswordQ?1111Q填TDBASE数据库有讉K权限的用户即可)Q其余选项默认卛_。数据源保存及递交后,conf目录下server.xml文g的全局命名资源GlobalNamingResources元素内将多一Resource属性:
QResource name="jdbc/Oracle" type="javax.sql.DataSource" password="11111" driverClassName="oracle.jdbc.driver.OracleDriver" maxIdle="2" maxWait="5000" username="zhaobz" url="jdbc:oracle:thin:@localhost:1521:TDBASE" maxActive="4"/Q?/font> |
QResourceLink global="jdbc/Oracle" name="jdbc/Oracle" type="javax.sql.DataSource"/Q?/font> |
QHost appBase="webapps" name="localhost"Q<Context path="/quickstart" reloadable="true" docBase="E:\zhaobz\workspace\quickstart" workDir="E:\luhao\workspace\quickstart\work" /Q?br> Q?HostQ?/font> |
Q?@ page contentType="text/html; charset=gb2312" %Q?br>Q?@ page import="javax.naming.*" %Q?br>Q?@ page import="javax.sql.*" %Q?br>Q?@ page import="java.sql.*" %Q?br>QhtmlQ<headQ<titleQOracle JDBC TestQ?titleQ</headQ?br>QbodyQ?br>Q? Connection conn=null; Statement stmt=null; ResultSet rs=null; ResultSetMetaData md=null; try{ Context initCtx=new InitialContext(); //获得JNDI初始化上下文信息Q即获取目录上下文的引用 DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/Oracle"); //定位数据源jdbc/Oracle if(ds!=null){ out.println("已经获得DataSource"); out.println(ds.toString()); conn=ds.getConnection(); if(conn!=null){ out.println("create connection sucess!"); stmt=conn.createStatement(); out.println("createStatement Success!"); rs=stmt.executeQuery("select * from LUHAO.USER_INF"); md=rs.getMetaData(); out.println("Qtable border=1Q?); out.println("QtrQ?); for(int i=0;iQmd.getColumnCount();i++){ out.println("QtdQ?+md.getColumnName(i+1)+"Q?tdQ?); } while(rs.next()){ out.println("QtrQ?); out.println("QtdQ?+rs.getString(1)+"Q?tdQ?); out.println("QtdQ?+rs.getString(2)+"Q?tdQ?); out.println("QtdQ?+rs.getString(3)+"Q?tdQ?); out.println("QtdQ?); } out.println("Q?tableQ?); conn.close(); } } }catch(Exception e){ out.println(e.toString()); System.out.println(e.toString()); } %Q?br>Q?bodyQ?br>Q?htmlQ?/font> |
开发环境:
jdk5.0
eclipse3.1M7
myeclipse3.84
tomcat5.0.28
介:
文本主要介绍用myeclipse的struts designerQ图形化开发环境)开发一个简单的用户dE序片段?br /> 主要包括2个jsp文g、一个ActionForm、一个Action{其?br /> userLogin.jsp(用户d及错误提C页? userLoginSuccess.jsp(提示d成功面)
UserLoginForm.java(ActionForm,存放用户提交信息)
UserLoginAction.java(Action,单的处理用户d事g)
开始吧
首先我们先徏立一个j2ee的web project.如图1:
点击next,Project name输入LoginDemo,其余保持默认,点击finish.
在package explorer?可以看到我们的目?然后l这个项目添加Struts框架必要的文?在我们项目名上点d?选择MyEclipes --> Add Struts Capabilities...弹出对话框图2Q?br />
其中Struts config path是我们的struts配置文gQURL pattern我们选择*.doQDefault application resource为我们默认的资源文g地方Q你可以选择它的存储位置Q我们在q里保持默认。点击Finish后,目l构cM于图3Q?br />
现在来开始我们的例子吧。首先修?WEB-INF/web.xml文g,为其d标签?在用中发现Q不d也能成功。但Z保持书上一_q是d安全些。hoho~~)下面代码添加至 </webapp> 上面Q?br />
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
完成后,打开struts-config.xml文gQ点击这个界面左下角的Designq入可视化设计界面。有没有注意双的Palette :) 点击它,让我们来开始我们的jsp面设计。我们先建立userLoginSuccess.jsp文gQؓ啥先一个呢Q等下就知道了,在myeclipse中可以一ơ性把我们的Action,ActionForm,Jsp文g一ơ徏好(三个有兌的文件等下创建)?br /> 点击Palette面版上的创徏JSP文g图标,弹出创徏JSP文g面板。图4Q?br />
在File Name里输入userLoginSuccess.jspQTemplate to use选择2] Standard JSP using Struts 1.1,点击Finish完成?br /> 完成后,struts-config.xml文g自动被更斎ͼ可视化界在上也出C刚新建的JSP模块。新建的jsp文g也被打开了?br /> 覆盖所有的<%@ taglib ...... 为我们开始在/WEB-INF/web.xml中定义的Q?br />
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
然后?lt;body></body>中添?
Hello <bean:write name="userName" scope="request" /> .
q里request中的属性userName输出在页面上Q所以等下我们在UserLoginAction中,d成功后要讄一个相兛_性?br />
OK,下面来开始我们最后三个文件的设计吧。在Struts-config.xml的Design模式中,在画版的I白区域点右键,选择New --> New Form, Action and JSP 弹出ActionForm的选项面板Q我们按图上输入相关|?Q?br />
在Optional Details的Form Properties选项卡,点add个ActionFormd相关|在这个登录示例中Q将d两个属性userName和passwordQ图6Q?br />
在添加passwordӞ注意JSP input type 下拉框选择password.
完成q步后,我们将ActionForm设计完成?br /> 接下来选择 Optional Details的JSP选项?我们选中Create JSP form? q一步myeclipseؓ我们创徏一个简单的与用户交互的d面。保持内容和?一栗图7Q?br />
因ؓ我们q只是简单的演示一个登录片D,所以不用验证用户信息是否合法,所以将 Option Details的method选项卡的新徏ҎLQ如?Q?br />
点NextQ进入Action选项面板.Option Details的Form选项卡中Validate Form取消选择Q如?Q?br />
然后在Forwards选项卡中点addd成功和失败返回的面.如图10Q?br />
点击Finish完成。在Struts-config.xml的Design中,可以看到?1所C:
最后,单的修改一下userLogin.jsp,所?lt;%@ taglib ...%>替换为:
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
修改UserLoginAction中的execute片段为如下所C,?2Q?br />
OKQ完成。。。下面就部暑目Q测试。。?br />
像ؓ目dStruts框架一P在项目名上右击,选择MyEclipse --> Add and Remove Project development.
在弹出对话框上,单击add Q在弹出?New Deployment 对话框上QServer选Tomcat5Q点击Finish完成部vQ如?3:
在用览器上打开Qhttp://127.0.0.1:8080/LoginDemo/userLogin.jsp
输入密码123456,用户名EricHe。显C成功:
如果输错Q或不输入,则无反映又回到当前登录页面(因ؓ我们没有讄错误信息Q?br />