仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 554|回复: 7
打印 上一主题 下一主题

[学习教程] JAVA网站制作之使用开源项目Hibernate开辟Blog体系

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.项目  开辟工具接纳MYECLIPS3.6,起首是创建项目,导进STRUTS+HIBERNATE包,然后设置SRC跟目次下的hibernate.cfg.xml.我接纳的是MYSQL数据库,以是设置以下:
  1. <hibernate-configuration>
  2. <session-factory>
  3. <!--properties-->
  4. <propertyname="connection.username">root</property>
  5. <propertyname="connection.url">jdbc:mysql://localhost:3306/tonnyblog</property>
  6. <propertyname="dialect">net.[u]sf[/u].hibernate.dialect.MySQLDialect</property>
  7. <propertyname="connection.password"></property>
  8. <propertyname="connection.driver_class">org.gjt.mm.mysql.Driver</property>
  9. <!--mappingfiles-->
  10. <mappingresource="com/tonny/blog/bean/User.hbm.xml"/>
  11. <mappingresource="com/tonny/blog/bean/Item.hbm.xml"/>
  12. <mappingresource="com/tonny/blog/bean/Review.hbm.xml"/>
  13. </session-factory>
  14. </hibernate-configuration>
复制代码
  mapping为JAVABEAN所对应的映照。

  上面我们持续HIBERNATE程序的下步编写
  1. importnet.sf.hibernate.HibernateException;
  2. importnet.sf.hibernate.Session;
  3. importnet.sf.hibernate.SessionFactory;
  4. importnet.sf.hibernate.cfg.Configuration;
  5. /**
  6. *DescriptionoftheClass
  7. *
  8. *@authortonny
  9. *@created2004年2月6日
  10. */
  11. publicclassHibernateUtil{
  12. privatefinalstaticSessionFactorysessionFactory;
  13. static{
  14. try{
  15. sessionFactory=
  16. newConfiguration().configure().buildSessionFactory();
  17. }catch(HibernateExceptionex){
  18. thrownewRuntimeException(
  19. "ExceptionbuildingSessionFactory:"+ex.getMessage(),ex);
  20. }
  21. }
  22. privateHibernateUtil(){
  23. }
  24. /**
  25. *DescriptionoftheField
  26. */
  27. privatefinalstaticThreadLocalsession=newThreadLocal();
  28. /**
  29. *DescriptionoftheMethod
  30. *
  31. *@returnDescriptionoftheReturnValue
  32. *@exceptionHibernateExceptionDescriptionoftheException
  33. */
  34. publicstaticSessioncurrentSession()throwsHibernateException{
  35. Sessions=(Session)session.get();
  36. if(s==null){
  37. s=sessionFactory.openSession();
  38. session.set(s);
  39. }
  40. returns;
  41. }
  42. /**
  43. *DescriptionoftheMethod
  44. *
  45. *@exceptionHibernateExceptionDescriptionoftheException
  46. */
  47. publicstaticvoidcloseSession()throwsHibernateException{
  48. Sessions=(Session)session.get();
  49. session.set(null);
  50. if(s!=null){
  51. s.close();
  52. }
  53. }
  54. publicstaticvoidinit(){
  55. }
  56. }
复制代码
  创立sessionFactory
  1. importnet.sf.hibernate.HibernateException;
  2. importnet.sf.hibernate.SessionFactory;
  3. importnet.sf.hibernate.cfg.Configuration;
  4. importorg.apache.struts.action.ActionServlet;
  5. importorg.apache.struts.action.PlugIn;
  6. importorg.apache.struts.config.ModuleConfig;
  7. importcom.tonny.blog.dao.hibernate.HibernateUtil;
  8. publicclassHibernatePluginimplementsorg.apache.struts.action.PlugIn{
  9. publicvoidinit(ActionServletservlet,ModuleConfigconfig){
  10. HibernateUtil.init();
  11. }
  12. publicvoiddestroy(){
  13. try{
  14. HibernateUtil.closeSession();
  15. }
  16. catch(HibernateExceptionhex){
  17. hex.printStackTrace();
  18. }
  19. }
  20. }
复制代码
  以上为HIBERNATE基础设置,对数据库操纵接纳DAO形式,增添设置以下:
  1. importcom.tonny.blog.dao.hibernate.*;
  2. publicclassDAOFactory{
  3. privatestaticDAOFactoryinstance;
  4. publicsynchronizedstaticDAOFactorygetInstance(){
  5. if(instance==null){
  6. instance=newDAOFactory();
  7. }
  8. returninstance;
  9. }
  10. privateDAOFactory(){
  11. }
  12. publicItemDAOgetItemDAO(){
  13. returnnewItemDAOHibernate();
  14. }
  15. publicReviewDAOgetReviewDAO(){
  16. returnnewReviewDAOHibernate();
  17. }
  18. publicUserDAOgetUserDAO(){
  19. returnnewUserDAOHibernate();
  20. }
  21. }
复制代码
  struts.xml增添设置
  1. <controllercontentType="text/html"debug="3"locale="true"nocache="true"
  2. processorClass="com.tonny.blog.struts.controller.IndexRequestProcessor"/>
  3. <message-resourcesparameter="com.tonny.resource"/>
  4. <[u]plug[/u]-inclassName="com.tonny.blog.struts.plugin.HibernatePlugin"/>
  5. <plug-inclassName="org.apache.struts.tiles.TilesPlugin">
  6. <set-propertyproperty="moduleAware"value="true"/>
  7. <set-propertyproperty="definitions-debug"value="0"/>
  8. <set-propertyproperty="definitions-parser-details"value="0"/>
  9. <set-propertyproperty="definitions-parser-validate"value="false"/>
  10. <set-propertyproperty="definitions-config"value="/WEB-INF/title-def.xml"/>
  11. </plug-in>
复制代码
  上面我们界说服务层:
  1. publicclassServiceFactory{
  2. privatestaticServiceFactoryinstance;
  3. publicsynchronizedstaticServiceFactorygetInstance(){
  4. if(instance==null){
  5. instance=newServiceFactory();
  6. }
  7. returninstance;
  8. }
  9. privateServiceFactory(){
  10. }
  11. publicIServicegetService(){
  12. returnnewServiceImp();
  13. }
  14. }
复制代码
  1. importcom.tonny.blog.struts.form.*;
  2. importcom.tonny.blog.view.*;
  3. importcom.tonny.blog.bean.*;
  4. importjava.util.*;
  5. import[u]javax[/u].servlet.http.*;
  6. publicinterfaceIService{
  7. publicUserContainerlogin(UserFormuserForm);
  8. publicbooleanlogout(UserContaineruserContainer);
  9. publicbooleanaddBlog(BlogFormblogForm,StringfilePath);
  10. publicbooleanremoveBlog(Longid);
  11. publicbooleanaddReview(LongtopicId,ReviewFormreviewForm);
  12. publicbooleanupdateBlog(Longid,Stringconten,Stringtopic);
  13. publicbooleanremoveReview(Longid);
  14. public[u]List[/u]getItems();
  15. publicItemViewgetItem(Longid);
  16. publicItemViewgetEditItem(Longid);
  17. publicListsearch(SearchFormsearchForm);
  18. /**
  19. *@paramid
  20. *@paramuserForm
  21. */
  22. publicbooleanaddUser(UserFormuserForm);
  23. }
复制代码
  1. importcom.tonny.blog.struts.form.*;
  2. importcom.tonny.blog.view.*;
  3. importcom.tonny.blog.dao.*;
  4. importcom.tonny.blog.bean.*;
  5. importjava.util.*;
  6. importjavax.servlet.http.*;
  7. importcom.tonny.blog.struts.util.FileUpload;
  8. publicclassServiceImpimplementsIService{
  9. publicUserContainerlogin(UserFormuserForm){
  10. UserDAOuserDAO=DAOFactory.getInstance().getUserDAO();
  11. Useruser=userDAO.loadUser(userForm.getName());
  12. if(user==null)returnnewUserContainer("",false);
  13. if(!user.getPassword().equals(userForm.getPassword()))returnnewUserContainer("",false);
  14. returnnewUserContainer(userForm.getName(),true);
  15. }
  16. publicbooleanlogout(UserContaineruserContainer){
  17. userContainer.setLogin(false);
  18. userContainer.setName("");
  19. returntrue;
  20. }
  21. publicbooleanaddBlog(BlogFormblogForm,Stringpath){
  22. ItemDAOitemDAO=DAOFactory.getInstance().getItemDAO();
  23. Itemitem=newItem(blogForm.getTopic(),blogForm.getContent(),
  24. FileUpload.upload(blogForm.getFile(),path),newDate());
  25. itemDAO.addItem(item);
  26. returntrue;
  27. }
  28. publicbooleanremoveBlog(Longid){
  29. ReviewDAOreviewDAO=DAOFactory.getInstance().getReviewDAO();
  30. ItemDAOitemDAO=DAOFactory.getInstance().getItemDAO();
  31. itemDAO.removeItem(id);
  32. returnreviewDAO.removeReviews(id);
  33. }
  34. publicbooleanaddReview(LongtopicId,ReviewFormreviewForm){
  35. ReviewDAOreviewDAO=DAOFactory.getInstance().getReviewDAO();
  36. Reviewreview=newReview(reviewForm.getName(),reviewForm.getContent(),
  37. topicId,newDate());
  38. returnreviewDAO.addReview(review);
  39. }
  40. publicbooleanupdateBlog(Longid,Stringcontent,Stringtopic){
  41. ItemDAOitemDAO=DAOFactory.getInstance().getItemDAO();
  42. Itemitem=newItem();
  43. item.setId(id);
  44. item.setContent(content);
  45. item.setTopic(topic);
  46. returnitemDAO.updatItem(item);
  47. }
  48. publicbooleanaddUser(UserFormuserForm){
  49. UserDAOuserDAO=(UserDAO)DAOFactory.getInstance().getUserDAO();
  50. Useruser=newUser(userForm.getName(),userForm.getPassword());
  51. returnuserDAO.addUser(user);
  52. }
  53. publicbooleanremoveReview(Longid){
  54. ReviewDAOreviewDAO=DAOFactory.getInstance().getReviewDAO();
  55. returnreviewDAO.removeReview(id);
  56. }
  57. publicListgetItems(){
  58. ItemDAOitemDAO=DAOFactory.getInstance().getItemDAO();
  59. Listitems=itemDAO.loadItems();
  60. ListitemViews=newArrayList();
  61. for(Iteratorit=items.iterator();it.hasNext();){
  62. Itemitem=(Item)it.next();
  63. ItemViewitemView=newItemView();
  64. itemView.setContent(item.getContent());
  65. itemView.setDate(item.getDate());
  66. itemView.setFile(item.getFile());
  67. itemView.setId(item.getId());
  68. itemView.setTopic(item.getTopic());
  69. itemViews.add(itemView);
  70. }
  71. returnitemViews;
  72. }
  73. publicItemViewgetEditItem(Longid){
  74. ItemDAOitemDAO=DAOFactory.getInstance().getItemDAO();
  75. Itemitem=itemDAO.loadItem(id);
  76. ItemViewitemView=newItemView();
  77. itemView.setContent(item.getContent());
  78. itemView.setDate(item.getDate());
  79. itemView.setFile(item.getFile());
  80. itemView.setId(item.getId());
  81. itemView.setTopic(item.getTopic());
  82. returnitemView;
  83. }
  84. publicListsearch(SearchFormsearchForm){
  85. ItemDAOitemDAO=DAOFactory.getInstance().getItemDAO();
  86. Listitems=itemDAO.loadItems(searchForm.getKeyword());
  87. ListitemViews=newArrayList();
  88. for(Iteratorit=items.iterator();it.hasNext();){
  89. Itemitem=(Item)it.next();
  90. ItemViewitemView=newItemView();
  91. itemView.setContent(item.getContent());
  92. itemView.setDate(item.getDate());
  93. itemView.setFile(item.getFile());
  94. itemView.setId(item.getId());
  95. itemView.setTopic(item.getTopic());
  96. itemViews.add(itemView);
  97. }
  98. returnitemViews;
  99. }
  100. }
复制代码
  上面是ACTION怎样挪用以上个服务:
  1. importjava.io.*;
  2. importjavax.servlet.RequestDispatcher;
  3. importjavax.servlet.ServletException;
  4. importjavax.servlet.http.HttpServletRequest;
  5. importjavax.servlet.http.HttpSession;
  6. importjavax.servlet.http.HttpServletResponse;
  7. importorg.apache.struts.action.Action;
  8. importorg.apache.struts.action.ActionError;
  9. importorg.apache.struts.action.ActionErrors;
  10. importorg.apache.struts.action.ActionForm;
  11. importorg.apache.struts.action.ActionForward;
  12. importorg.apache.struts.action.ActionMapping;
  13. importorg.apache.struts.action.ActionServlet;
  14. importorg.apache.struts.util.MessageResources;
  15. importcom.tonny.blog.struts.form.*;
  16. publicclassAddBlogextendsBlogBaseAction{
  17. //------------------------------------------------------------LocalForwards
  18. staticfinalprivateStringFORWARD_success="success";
  19. staticfinalprivateStringFORWARD_failure="failure";
  20. //------------------------------------------------------------ActionMethods
  21. publicActionForwardexecute(ActionMappingmapping,ActionFormform,
  22. HttpServletRequestrequest,HttpServletResponseresponse)
  23. throwsException{
  24. if(!isLogin(request))returnmapping.findForward(FORWARD_failure);
  25. service.addBlog((BlogForm)form,((BlogForm)form).getFile().getFileName());
  26. returnmapping.findForward(FORWARD_success);
  27. }
  28. }
复制代码
  下一步为DAO层来操纵数据库:
  1. importcom.tonny.blog.bean.*;
  2. importjava.util.List;
  3. publicinterfaceItemDAO{
  4. publicbooleanaddItem(Itemitem);
  5. publicbooleanremoveItem(Longid);
  6. publicListloadItems();
  7. publicListloadItems(Stringtopic);
  8. publicItemloadItem(Longid);
  9. publicbooleanupdatItem(Itemitem);
  10. }
复制代码
  DAOFACTORY挪用气力化办法:
  1. importcom.tonny.blog.dao.*;
  2. importnet.sf.hibernate.cfg.Configuration;
  3. importnet.sf.hibernate.*;
  4. importjava.util.*;
  5. importcom.tonny.blog.bean.*;
  6. publicclassItemDAOHibernateextendsDAOHibernateimplementsItemDAO{
  7. publicItemDAOHibernate(){
  8. }
  9. publicbooleanaddItem(Itemitem){
  10. try{
  11. beginTransaction();
  12. session.save(item);
  13. commit();
  14. returntrue;
  15. }
  16. catch(HibernateExceptione){
  17. rollback();
  18. returnfalse;
  19. }
  20. }
  21. publicbooleanupdatItem(Itemitem){
  22. try{
  23. beginTransaction();
  24. Itemit=item;
  25. it=(Item)session.load(Item.class,(item.getId()));
  26. it.setTopic(item.getTopic());
  27. System.out.println("item.getTopic()"+item.getTopic());
  28. it.setContent(item.getContent());
  29. System.out.println("item.getContent()"+item.getContent());
  30. session.flush();
  31. commit();
  32. returntrue;
  33. }
  34. catch(HibernateExceptione){
  35. System.err.println("========>hibernateexception"+e);
  36. rollback();
  37. returnfalse;
  38. }
  39. }
  40. publicbooleanremoveItem(Longid){
  41. try{
  42. beginTransaction();
  43. session.delete("fromcom.tonny.blog.bean.Itemasitemwhereitem.id="+id);
  44. commit();
  45. returntrue;
  46. }
  47. catch(HibernateExceptione){
  48. rollback();
  49. returnfalse;
  50. }
  51. }
  52. publicListloadItems(){
  53. Listlist=null;
  54. try{
  55. beginTransaction();
  56. list=session.find("fromcom.tonny.blog.bean.Itemasitem");
  57. commit();
  58. }
  59. catch(HibernateExceptione){
  60. System.out.println("loadBlogfailed");
  61. rollback();
  62. }
  63. returnlist;
  64. }
  65. publicListloadItems(Stringtopic){
  66. Listlist=null;
  67. try{
  68. beginTransaction();
  69. Queryquery=session.createQuery("fromcom.tonny.blog.bean.Itemasitemwhereitem.topiclike%"+topic+"%");
  70. list=query.list();
  71. commit();
  72. returnlist;
  73. }
  74. catch(HibernateExceptione){
  75. System.out.println("loadblogfailed");
  76. rollback();
  77. }
  78. returnlist;
  79. }
  80. publicItemloadItem(Longid){
  81. Itemitem=null;
  82. try{
  83. beginTransaction();
  84. Queryquery=session.createQuery("fromcom.tonny.blog.bean.Itemasitemwhereitem.id=:id");
  85. query.setLong("id",id.longValue());
  86. Iteratorit=query.iterate();
  87. if(it.hasNext())returnitem=(Item)it.next();
  88. commit();
  89. }
  90. catch(HibernateExceptione){
  91. System.out.println("loadblogfailed");
  92. rollback();
  93. }
  94. returnitem;
  95. }
  96. }
复制代码
  这里完成了对数据库查询,修正,删除操纵,没有MANY-TO-MANY操纵。
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
admin 该用户已被删除
沙发
发表于 2015-1-20 15:49:00 来自手机 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
飘灵儿 该用户已被删除
板凳
发表于 2015-2-1 23:59:23 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
柔情似水 该用户已被删除
地板
发表于 2015-2-6 19:02:40 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
活着的死人 该用户已被删除
5#
发表于 2015-2-18 06:47:51 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
兰色精灵 该用户已被删除
6#
发表于 2015-3-6 01:03:09 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
若天明 该用户已被删除
7#
发表于 2015-3-12 18:02:48 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
只想知道 该用户已被删除
8#
发表于 2015-3-20 01:19:05 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:47

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表