源码位置:http://svn.w18.net/svn/bookma
访问账号:book/book
请下载:  myhibernate.rar文件准备环境:
安装jdk1.5
安装myeclipse6.0
安装tomcat5.5
安装mysql5.0(推荐)或sql server1. 在d盘建立目录myjava,该目录下存放自己的java工程2. 开始建立我的工程,工程名称取为mytest(随意)。在myjava目录下建立工程的同名目录mytest,此目录即为自己的工程目录。3. 工程目录mytest下建立目录src、web,建立文件 .project、.classpath(注意:只有文件名后缀没有文件名)4. .project文件内容,注意:其中name属性值填写工程名mytest                                                     <?xml version="1.0" encoding="UTF-8"?><projectDescription><name>mytest</name><comment></comment><projects></projects><buildSpec><buildCommand><name>com.genuitec.eclipse.j2eedt.core.WebClasspathBuilder</name><arguments></arguments></buildCommand><buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand><buildCommand><name>com.genuitec.eclipse.j2eedt.core.J2EEProjectValidator</name><arguments></arguments></buildCommand><buildCommand><name>com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator</name><arguments></arguments></buildCommand><buildCommand><name>com.ibm.etools.validation.validationbuilder</name><arguments></arguments></buildCommand><buildCommand><name>com.ibm.sse.model.structuredbuilder</name><arguments></arguments></buildCommand></buildSpec><natures><nature>com.genuitec.eclipse.j2eedt.core.webnature</nature><nature>org.eclipse.jdt.core.javanature</nature></natures></projectDescription>5. .classpath文件内容:其中src属性定义java类所在目录,通常定义为src;con属性定义工程需要的类库;lib属性定义工程的jar包;output属性定义工程java类的编译目录,我们定义为web/WEB-INF/classes。<?xml version="1.0" encoding="UTF-8"?><classpath><classpathentry kind="src" path="src"/><classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/><classpathentry kind="con" path="com.genuitec.eclipse.j2eedt.core.J2EE14_CONTAINER"/><classpathentry kind="lib" path="web/WEB-INF/lib/hibernate3.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/mysql-connector-java-5.1.6-bin.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/dom4j-1.6.1.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/jta.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/antlr-2.7.6.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/cglib-nodep-2.1_3.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/commons-beanutils.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/commons-digester.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/jstl.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/standard.jar"/><classpathentry kind="lib" path="web/WEB-INF/lib/struts.jar"/><classpathentry kind="output" path="web/WEB-INF/classes"/></classpath> 6. 把工程导入myeclipse,打开myeclipse工具,选择File/Import/Existing Projects into Workspace命令,点击Next,点击Select root directory右边的Browse按钮,从弹出“浏览文件夹”窗口选择我们的工程目录mytest,然后点击“确定”按钮关闭此弹出窗口,返回Import窗口,点击Finish按钮,完成导入工程。7. 把工程部署到Tomcat上,在Tomcat安装目录\conf\Catalina\localhost 目录下增加文件mytest.xml文件。注意其中三处mytest值的意义:docBase表示工程发布目录位置,path是从浏览器访问工程的别名,workDir是该工程在Tomcat里的临时工作目录,为了简单我们可都取工程目录mytest,内容如下:<?xml    version='1.0'    encoding='utf-8'?>    <Context   docBase="D:\myjava\mytest\web"path="/mytest" workDir="work\Catalina\localhost\mytest"> </Context>8. 建立测试工程的jsp文件:在web目录下建立first.jsp文件,显示当前时间,内容:Now Date:<% out.print(new java.util.Date()); %>9. 测试工程:启动Tomcat,在IE输入http://localhost:8080/mytest/first.jsp,按回车,如果出现当前时间就恭喜你,成功了!不成功也没关系,到www.nlld.net发个帖子,本人必将回复,人格担保。10. 在web/WEB-INF目录(导入工程时自动构建的,如没有请手工建此目录)下增加lib目录,在lib目录增加必要的jar包(请到snv上下载工程myhibernate.rar压缩包,解压后复制其lib目录下的全部jar包)。11. 在web/WEB-INF目录增加struts-html.tld、c.tld文件,这是struts需要的标签格式定义文件。此文件获取方法同上。12. 在web/WEB-INF目录增加struts-config.xml、web.xml文件,这是struts架构最重要的两个文件,其中前者是需要我们经常配置的文件。

解决方案 »

  1.   

    13. web.xml文件说明,filter定义字符处理器,用于处理汉字乱码问题。servlet定义struts的控制器,内容如下:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <filter>        <filter-name>Set Character Encoding</filter-name>        <filter-class>filters.SetCharacterEncodingFilter</filter-class>        <init-param>            <param-name>encoding</param-name>            <param-value>GB2312</param-value>        </init-param>  </filter>  <filter-mapping>        <filter-name>Set Character Encoding</filter-name>        <url-pattern>/*</url-pattern>  </filter-mapping>  <servlet>    <servlet-name>action</servlet-name>    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>    <init-param>      <param-name>config</param-name>      <param-value>/WEB-INF/struts-config.xml</param-value>    </init-param>    <init-param>      <param-name>debug</param-name>      <param-value>3</param-value>    </init-param>    <init-param>      <param-name>detail</param-name>      <param-value>3</param-value>    </init-param>    <load-on-startup>0</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>*.do</url-pattern>  </servlet-mapping></web-app>14. struts-config.xml文件说明,这是struts框架的配置文件,用来配置请求路径、Action、Form和jsp的对应关系,内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config>   <form-beans >      </form-beans>   <action-mappings >
       </action-mappings></struts-config>15. 建立数据库,数据库名称为book,在mysq命令行窗口输入脚本:create database book;16. 配置hibernate数据源,在src目录下建立文件hibernate.cfg.xml(hibernate框架默认在此位置寻找此配置文件)。注意url字串中的数据库名称改成你的数据库book,也要注意访问数据库的用户名、密码改成你自己设置的用户名、密码。内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    <session-factory>
    <property name="show_sql">true</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/book</property><property name="connection.username">root</property><property name="connection.password">root</property><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.autocommit">true</property></session-factory></hibernate-configuration>17. 业务需求:开发一个图书维护模块,能向用户展现图书列表,用户能向系统增加、修改、删除、查看图书。要求图书属性有编号、书名、作者、价格、内容描述。18. 需求分析:这是一个简单的针对一个事物(图书)的增、删、改业务功能,页面展示上就是做一个记录列表页面,页面上有增加按钮,每条记录后面的修改、删除、查看按钮以实现用户的要求。19. 确实数据模型与建表:针对图书这个事务实体建个物理表,表名为bookifno(随意,一般用英语或拼音),根据用户要求图书属性建立相应字段,建表脚本:(当然要在book数据库下执行此脚本)create table bookinfo (    id                   int                            not null,    name                 varchar(100),    author               varchar(50),    price                float,    ms                   varchar(1000),    constraint PK_BOOKINFO primary key (id));20. 根据表生成hibernate映射文件,在myeclipse中src目录下建立com目录,com目录下建立obj目录,该目录下专门放置hibernate映射文件(放在这个目录下不是必须的,但要有个规划,易于管理)。在myeclispe的MyEclipse Database Explorer窗口连接上你的mysql数据库,选择你的表bookinfo,右击选择Create Hibernate Mapping命令,Location填写你要放置映射文件的位置:mytest/src/com/obj,然后点击Finish按钮,如有错误直接点击OK忽略即可,然后就会发现在你的obj目录下生成了映射文件。21. 修改映射文件,myeclipse工具针对一个表会生成三个文件,一个xml配置文件、一个抽象类和一个实现类,本表生成文件即AbstractBookinfo.java、Bookinfo.java和Bookinfo.hbm.xml。一般在应用中直接把Bookinfo.java文件删除,而把AbstractBookinfo.java由抽象类改具体类,即去掉abstract类修饰字,AbstractBookinfo.java类名则改为Bookinfo.java,这样更简单实用。Bookinfo.hbm.xml主键策略通常改为外部维护这种方式,这样不受制于具体数据库,移植性好,即:<generator class="assigned"/>  Bookinfo.hbm.xml延迟加载策略加上lazy="false",即取消延迟策略策略,即时加载:                                <class name="Bookinfo" table="bookinfo" lazy="false">22. 在hibernate.cfg.xml文件增加这个表的配置,即在session-factory元素之间增加:    <mapping resource="com/obj/Bookinfo.hbm.xml" />23. 模块目录和文件命名规则:一般和模块对应表同名(复杂的模块与模块功能名称同名),这里模块相关目录就用表名book,模块相关文件名称也包含book字串内容。24. 建立java类目录和空类。在src/com目录下建立图书模块的目录book。book目录下建立struts目录,struts目录下建立目录action、form、dao,这3个目录下分别建立以下3个类BookAction、BookForm、BookDAO。BookAction是业务处理层,用于处理请求,进行业务处理,它调用数据层组件访问数据库。BookDAO就是数据层,它是通过调用hibernate对象实现对数据库访问的。BookForm是数据模型,用于在jsp页面和Action之间传递数据。25. 建立jsp目录和空白jsp文件。在web目录下建立图书模块的目录book。book目录下建立booklist.jsp、addbook.jsp、updbook.jsp、viewbook.jsp文件,分别实现展示图书列表、增加图书、修改图书、删除图书和查询图书信息的功能。26. 配置struts-config.xml文件,增加图书模块配置内容   form-beans之间增加图书模块的数据模型定义form-bean元素,name属性即在jsp页面引用form对象的别名:   <form-beans >    <form-bean name="bookForm" type="com.book.struts.form.BookForm" />   </form-beans>      action-mappings之间增加图书模块的业务处理层组件定义action元素,name定义关联的form组件别名,input定义出错的默认定位页面(一般和下面的某个forwad属性定义相同),path是此Action的请求路径,type是Action的类路径,forward定义jsp文件的别名(以便于在Action里引用jsp文件):   <action-mappings >   <action      name="bookForm"      input="/book/booklist.jsp"       path="/book" parameter="method"      scope="request"      type="com.book.struts.action.BookAction"      validate="false">      <forward name="booklist" path="/book/booklist.jsp" />      <forward name="addbook" path="/book/addbook.jsp" />      <forward name="updbook" path="/book/updbook.jsp" />      <forward name="viewbook" path="/book/viewbook.jsp" />   </action>  </action-mappings>27. 编写java类代码。参考工程例子myhibernate,先写DAO组件,根据要实现的功能,分别写查询列表、增加、修改、删除、查询记录详细信息的方法。再写Form组件,最后再写Action组件的方法。28. 编写jsp文件。参考工程例子,做些简单的名称、属性、路径修改就行了。29. 把filters目录从例子工程复制你的src目录下,用来处理汉字乱码。30. 测试。在IE中输入http://localhost:8080/mytest/book.do?method=booklist进行测试。
    让我们记住本文档的提供者吧:对话Java程序员社区(www.nlld.net),要声明的一点是,本文档不是死的,该社区所有技术文档作者都在世,您花一分钱就可得到回复。
      

  2.   

    楼上如此SO FAST,回复太快了
      

  3.   

    不知什么时候才能跟东方不败挑战?
    因为我现在还在学J2se啊