لقد كنت على اتصال بتطوير الويب المتعلق بـ .NET ، لكنني الآن ما زلت غير مرتاح للغاية باستخدام Javaweb.
1. تحدث عن هندسة المشروع <br /> لقد تلامس أولاً مع التطوير المتعلق .NET ، لذلك أنا على دراية بالتطوير المتعلق .NET ، لكنني تعلمت Java في المدرسة ، وأخطط للجمع بين هذين المنصتين. احصل على ما يصل ، واستخدم Java كواجهة خلفية ، أي مزود الخدمة ، أكمل جميع منطق الأعمال على منصة Java واستخدام .NET الذي أنا أكثر دراية بتطوير الويب. وبهذه الطريقة ، سيكون هناك تطبيقات Android وجوانب الويب. يتصل العميل بالخدمة بشكل موحد من خلال إطار موزع. بعد البحث لفترة طويلة ، اخترت أخيرًا HPROSE ، وهي مكتبة محرك استدعاء منصة خفيفة الوزن ، عبر المنصات ، غير الغازية ، عالية الأداء. السبب في أنني اخترت ذلك هو بسبب انخفاض تكلفة التعلم ، ومن ناحية أخرى ، فإن مكالماتها عبر الأنظمة الأساسية سهلة للغاية وفعالة ، لأننا بحاجة إلى استخدام .NET للقيام بالاتصال بالخدمات التي نشرتها Java! بعد النظر تقريبًا إلى وثائق HPROSE ، وجدت أن استخدام خدمة إصدار HProsevlet المدمجة أسرع وأبسط ، لذلك أخطط لاستخدام هذه الطريقة لنشر الخدمة. لكن المشكلة هي أن بنية SSH التقليدية تشعر بالثقيلة بعض الشيء ، وسأستخدم .NET لتطوير جانب الويب ، لذلك أشعر أنه لا توجد حاجة لدمج الدعامات ، لذلك فهي بنية زبدية+HPROSE .
2. تصميم قاعدة البيانات
إنها مكتبة صغيرة عبر الإنترنت ، لذلك لا يزال التصميم غير موجود ، وهو عملي بشكل أساسي ، يمارس بشكل أساسي تطوير Java ~~. لذلك استخدمت Navicat لتصميمه لفترة وجيزة ، ولكن لم يكن هناك علاقة تصميم.
في الواقع ، يمكنك رؤية ارتباط الجدول بنظرة ~~ ، التالي هو السبات بعض التعيينات ، وكذلك استخدام المكونات الإضافية لإنشاء النماذج ورسم الخرائط.
إنه مثل هذا مع تعديل بسيط-
3. تكوين SPRING3+Hibernate4 <BR /> يتم إنشاء ملفات الرسم البياني تلقائيًا ، فمن الأفضل تكوينها قليلاً. نموذج مركب. على سبيل المثال ، نوع المفتاح الأساسي المركب لجدول مراجعة المنتج :
Package com.book.model ؛ // تم إنشاؤه 2015-11-2 9:07:06 بواسطة أدوات Hibernate 4.0.0.finalimport java.util.date ؛/** * التعليقات التي تم إنشاؤها بواسطة HBM2Java */publi c classpk commentpk java . io.Serializable { private Book book; private User user; private Date commentsDate; public CommentsPk() { } public CommentsPk(Book book, User user, Date c omentsDate) { this.book = book; this.user = user; this .CommentsDate = CommentsDate ؛ المستخدم) {this.user = user ؛ ==) castother.getbook () ||. ) == CASTOTHER.GETUSER ()) | .getcom mentsdate () == CASTOTHER.GETCOMMENTSDATE ()) || (this.getCommentsDate () ؛ == NULL؟ نموذج جدول مراجعة المنتج :
package com.book.model ؛ // تم إنشاؤها 2015-10-30 14:56:21 بواسطة أدوات Hibernate 4.0.0.finalimport java.sql.date ؛/** * التعليقات التي تم إنشاؤها بواسطة HBM2Java */تعليقات الفئة العامة تنفذ Java. io.serializable {private string contract } السلسلة العامة () {return pic ؛ ؛ المحتوى = هذا. ملف رسم خرائط السبات المقابل:
<؟ . "تعليقات" catalog = "bookstore"> <composite-id name = "id"> <key-many-to-one name = "book"> <column name = "bookid" /> < /key-many-to- One> <key-many-to-one name = "user"> <column name = "userId" /> < /key-many-to-one> <key-property name = "commentDate" type = "timestamp"> <column name = "commentdate" length = "19"/> </key-property> </sposited-id> <property name = "content" type = "string" " /> < /property> <property name =" pic "type =" string "> <column name =" pic "length =" 65535 " /> </spleneration> <property name =" client "type =" java. lan g .Integer "> <column name =" client "/> </spleneration> </slass> </mibernate mapping>
نظرًا لوجود مفتاحان أجنبيان في جدول مراجعة المنتج ، يتم استخدام علامة المفتاح إلى واحد.
منذ استخدام spring3.2+hibernate4
<bean id = "TransactionManager"> <property name = "sessionfactory" ref = "sessionfactory" /> </bean> <!-خصائص انتشار المعاملات-> <tx: expl "TransactionManager"> <tx: entributes> <tx: method name = "add*" spection = "required" /> <tx: method name = "delete*" spection = "required" /> <tx: method name = " تعديل*"الانتشار =" مطلوب " /> <!-يجب تكوين hibernate4 لتمكين المعاملات ، وإلا لا يمكن الحصول على getCurrentsession ()-> <tx: method name ="*"spection =" مطلوب "read-on ly = "true"/> </tx: attributes> </tx: نصيحة>
ما سبق هي المشكلات التي حدثت عند تكوينها. هنا ملف تكوين الربيع:
<؟ /2001/xmlschema-instance "xmlns: aop =" http://www.springframework.org/schema/aop "xmlns: context =" http://www.springframework.org/schema/ context: xmlns: tx = " http://www.springframework.org/schema/tx " 3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http: //www.springframewor السياق -TX-3.2.XSD "> <!-تمكين دعم شرح الربيع-> <السياق: التعليق التوضيحي /> <bean id =" dataSource "تدمير method =" close "> <property =" driverclassnam e " value = "com.mysql.jdbc.driver"/> <property name = "url" value = "jdbc: mysql: //127.0.0.1/bookstore؟ useUnicode = true & directionDing = utf-8"/> <property name = " اسم المستخدم "value =" root " /> <property name =" password "value =" yangyang " /> </bean> <!-يمكنك إضافة تكوين ذاكرة التخزين المؤقت الثانوية-> <bean id =" sessionfactory " > <property name = "dataSource" ref = "datasource"/> <property name = "mappingDirectoryLocations"> <list> <value> classpath: config </value> </list> </sprement> <property name = "HibernateProperties "> <bors> <prop key =" hibernate.dialect "> org.hibernate.dialect.mysqldialect </prop> <prop key =" hibernate.show_sql "> true </prop> <prop> key =" hibernate.show_sql " > true </prop> <prop key = "hibernat </prop> </props> </propertion> </bean> <!-مدير معاملات التكوين-> <bean id = "TransactionManager"> <property name = "sessionfactory" ref = "sessionfactory"/> </ Bean> <!-خصائص انتشار المعاملات-> <tx: exply id = "txAdvice" المعاملات-manager = "TransactionManager"> <tx: attributes> <tx: method name = "add*" spectation = "is" مطلوب " /> <tx: method name = "delet e*" spection = "required" /> <tx: method name = "modify*" spection = "requiret لا يمكن الحصول على getCurrentsession ()-> <tx: method name = "*" spection = "مطلوب" read-only = "true"/> </tx: attributes> </tx: exploy> <!-تلك الفئات والطرق تستخدم المعاملات-> <aop: config> <!-يتم تنفيذ المعاملات فقط لطبقة منطق العمل-> <aop: pointcut id = "allmanagermethod" expression = "execution (* com.book.test.** . "Orderdao" /> </bans>
بعد أن يكون كل شيء جاهزًا ، نستخدم اختبار Servlet:
<Srevlet> <Servlet-Name> اختبار </servlet-name> <Servlet-Class> com.book.test.test </servlet-class> </stervlet> <Servlet Mapping> <Servlet-Name> اختبار </ servlet-name> <url-pattern>/index </url-pattern> </revlet mapping>
DOGED VOID DOGER (طلب httpservletrequest ، استجابة httpservletponse) servletexception ، ioException {// todo method method tuto stlude anfactory = webapplicationContextIls.getRequiredWeblicationContext (request.getsession (). Orderdao.نظرًا لأننا لا نستخدم الهياكل ، نحتاج إلى العثور على Beanfactory في الربيع للحصول على Dao Bean.
نتائج التشغيل:
جدول الطلب الذي تم تحميله بنجاح 1 كمية ترتيب العنصر.
بعد كل شيء ، هذه هي المرة الأولى التي تستخدم فيها Java لتطوير مثل هذه المشاريع.