في المستقبل القريب ، ستقوم الشركة بتطوير مشاريع جديدة واستخدام STRUTS2+MyBatis+Spring Framework. لذلك بعد تعلمه ، سأقوم بنشره على مدونتي ، على أمل مساعدتك!
يدرك بشكل أساسي عمليات المستخدم وحذفها وتعديلها وعمليات البحث
1. استيراد حزمة الجرة المقابلة
2. تكوين web.xml بشكل رئيسي يتكوين Struts2 و Spring
محتوى ملف web.xml هو كما يلي:
<؟ XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5. ] <Param-Name> contextConfigLocation </param-name> <Param-value> classpath: beans.xml </parm-value> </suctext-param> <!-تكوين struts2-> <filter> org.apache.struts2.dispatcher.ng.filter.strutsprepareexecutefilter </filter-class> </filter>
3. تكوين ملفات تكوين الربيع ، بما في ذلك تكوين مصادر البيانات ، والمعاملات ، و MyBaits ، إلخ.
ملف تكوين Beans.xml كما يلي:
<؟ xmlns: context = "http://www.springframework.org/schema/context" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframeworg http://www.springframework.org/schema/aop http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/txsd http://www.springframework.org/schema/tx/Spring-tx-3.0.xsd <!-تكوين الفاصوليا مع التعليقات-> <السياق: التعليق التوضيحي-config /> <!-قم بتكوين الحزمة المراد مسحها-> <سياق: مكون مسكك الأساس package = "com.pdsu.edu"> < /context: component-scan> <! <aop: sidej-autoproxy proxy-target-class = "true" /> <!-موقع ملف تكوين قاعدة البيانات-> <سياق: property-placeholder location = "classpath: jdbc.properties" /> <! value = "$ {jdbc.driverClassName}" /> <property name = "url" value = "$ {jdbc.url}" /> <property name = "username" value = "$ {jdbc.username}" /> <property name = "value" value = "$ {jdbc.Password} name = "minidle" value = "$ {jdbc.minidle}"> </property> <!-الحد الأقصى لوقت الانتظار في milliseconds-> <property name = "maxwait" value = "$ {jdbc.maxwait}"> </property> <! name = "initialsize" value = "$ {jdbc.initialsize}"> </property> </bean> <!-تكوين mybitassqlsessionfactorybean-> <bean id = "sqlsessionfactory"> <property name = "datasource" ref = "datasource"/> </bean> <!-تكوين sqlsessionTemplate-> <bean id = "sqlsessionTemplate"> <name-arg constructor = "sqlsessionfactory" ref = "sqlsessionfactory"/> </bean> <!-تكوين المعاملات-> <sucentmanager " <!-تكوين المعاملات باستخدام شرح التعليقات التوضيحية-> <TX: معاملة المعاملات التي تعتمد على التعليقات التوضيحية = "TransactionManager"/> </bans> 4. تفاصيل ملف تكوين JDBC
jdbc.driverClassName = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: // localhost: 3306/operationLog jdbc.userName = 1 jdbc.Apsword = jdbc.maxactive = 2 jdbc.maxidle = 5 jdbc.minidle = = 3000
5. تكوين ملف التكوين الرئيسي MyBatis:
<؟ type = "com.pdsu.edu.domain.user"/> </typeAliases> <mappers> <mapper Resource = "com/pdsu/edu/domain/sqlmappers/user.xml"/> </nybergers> </configuration>
6. تكوين ملف user.xml
<؟ <resultmap type = "com.pdsu.edu.domain.user" id = "usErresult"> <result property = "id" column = "id" jdbctype = "integer" javatype = "java.lang.integer" /> <result propert ID = "userLogin" parametertype = "user" resultMap = "usErresult"> SELECT * من المستخدم حيث username =#{username} و password =#{password} </select> <select id = "selectalluser" resultmap = "userResult" حدد * من المستخدم WHERE WHERE ID =#{id} </select> <insert id = "insertUser" parametertype = "user"> <! username =#{username} ، password =#{password} حيث id =#{id} </update> <delete id = "deleteuser" parametertype = "int" 7. كيفية كتابة كيان المستخدم
يقوم مستخدم الفئة العامة بتنفيذ Serializable {Private Static Final Long SerialVersionuid = -4415990281535582814L ؛ معرف عدد صحيح خاص ؛ اسم المستخدم الخاص بالسلسلة الخاصة ؛ كلمة مرور السلسلة الخاصة ؛ عدد صحيح عام getId () {معرف الإرجاع ؛ } public void setId (integer id) {this.id = id ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } Override public string toString () {return "user [id =" + id + "، password =" + password + "، username =" + username + "]" ؛ } Override public int hashcode () {Final int prime = 31 ؛ int النتيجة = 1 ؛ النتيجة = prime * result + ((id == null)؟ 0: id.HashCode ()) ؛ نتيجة العودة } Override Public Boolean يساوي (كائن OBJ) {if (this == obj) إرجاع true ؛ إذا (OBJ == NULL) عودة خطأ ؛ if (getClass ()! = obj.getClass ()) return false ؛ المستخدم الآخر = (المستخدم) OBJ ؛ if (id == null) {if (other.id! = null) return false ؛ } آخر إذا (! id.equals (other.id)) إرجاع خطأ ؛ العودة صحيح. }} 8. كيف تكتب userdao
الواجهة العامة userDao {public Abstract void insertuser (مستخدم المستخدم) ؛ Public Abstract Void UpdateUser (مستخدم المستخدم) ؛ DELETEUSER المجردة العامة التجريدية (userId Integer) ؛ المستخدم التجريدي العام FindUserById (Integer userId) ؛ قائمة التجريد العامة <Sether> findall () ؛ مستخدم المستخدم التجريدي العام (مستخدم المستخدم) ؛ } 9. تنفيذ userDao
repository الفئة العامة userDaoImpl تنفذ userDao {private final string insert_user = "insertuser" ؛ سلسلة نهائية خاصة update_user = "updateUser" ؛ سلسلة نهائية خاصة delete_user = "deleteuser" ؛ سلسلة نهائية خاصة find_user_byid = "findUserById" ؛ سلسلة نهائية خاصة SELECT_ALL_USER = "SelectAlluser" ؛ سلسلة نهائية خاصة user_login = "userLogin" ؛ @autowired sqlsessionTemplate sqlsessionTemplate ؛ public void insertuser (user user) {sqlsessionTemplate.insert (insert_user ، user) ؛ } public void updateUser (user user) {sqlsessionTemplate.update (update_user ، user) ؛ } public void deleteuser (integer userId) {sqlsessionTemplate.delete (delete_user ، userId) ؛ } المستخدم العام FindUserById (integer userId) {return sqlsessionTemplate.selectone (find_user_byid ، userId) ؛ } القائمة العامة <Sether> findall () {return sqlsessionTemplate.SelectList (select_all_user) ؛ } المستخدم العام userLogin (مستخدم المستخدم) {return sqlsessionTemplate.selectone (user_login ، user) ؛ }} 10. واجهة المستخدمين
الواجهة العامة sterveservice {// إضافة المستخدم التجريدي التجريدي adduser (مستخدم المستخدم) ؛ Public Abstract Void UpdateUser (مستخدم المستخدم) ؛ DELETEUSER المجردة العامة التجريدية (userId Integer) ؛ المستخدم التجريدي العام FindUserById (Integer userId) ؛ قائمة التجريد العامة <Sether> bindalluser () ؛ تسجيل الدخول إلى المستخدم التجريدي العام (مستخدم المستخدم) ؛ } 11. تنفيذ واجهة مستخدمي
serviceTransActional الفئة العامة orseverserviceImpl تنفذ uservicevice {autowired userDao userDao ؛ // إضافة المستخدم public void adduser (المستخدم) {userDao.insertUser (user) ؛ } // تحديث update updateuser updateuser (مستخدم المستخدم) {userDao.upDateuser (user) ؛ } public void deleteuser (Integer userId) {userDao.deleteuser (userId) ؛ } المستخدم العام FindUserById (integer userId) {return userDao.finduserById (userId) ؛ } القائمة العامة <Sether> findalluser () {return userDao.findall () ؛ } تسجيل الدخول للمستخدم العام (مستخدم المستخدم) {return userDao.userLogin (user) ؛ }} 12. تكوين Struts2
<؟ value = "utf-8"/> <!-حدد مجموعة الترميز الافتراضية ، والتي يتم استخدامها في setCharCterEncoding () و morearker من httpservletrequest ، وإخراج vilocity-> <name constant = "struts.configuration.xmload" value = "true" name = "struts.devmode" value = "true"/> <!-طباعة معلومات الخطأ التفصيلية في وضع التطوير-> <name constant = "struts.ui.theme" value = "xhtml"/> <package name = "user"/" type = "redirectaction"> user_queryalluser.action </result> <result name = "input">/index.jsp </sropered> <result name = "userlist">/userList.jsp </sults> <result name = "adduser">/userAdd.jsp </redress>
13. تطبيق محدد للاستخدام
ControllerScope ("OrityType") يمتد UserAction من الفئة العامة ActionSupport {autowired private uservervice uservice ؛ مستخدم خاص للمستخدم ؛ قائمة خاصة <Sether> userlist ؛ السلسلة العامة تنفيذ () رمي الاستثناء {return null ؛ } سلسلة تسجيل الدخول العامة () {if (user! = null) {user user2 = userService.login (user) ؛ if (user2! = null) {return success ؛ }} this.addfielderror ("user.username" ، "خطأ في اسم المستخدم أو كلمة المرور!") ؛ إرجاع إدخال ؛ } السلسلة العامة addui () {return "adduser" ؛ } السلسلة العامة updateui () {user = userService.finduserById (user.getId ()) ؛ إرجاع "UpdateUser" ؛ } السلسلة العامة add () {userService.adduser (user) ؛ العودة النجاح } السلسلة العامة DELETE () {userService.deleteuser (user.getID ()) ؛ العودة النجاح } update update update () {sterverservice.updateuser (user) ؛ العودة النجاح } المستخدم العام getUser () {return user ؛ } public void setUser (user user) {this.user = user ؛ } السلسلة العامة QueryAlluser () {userList = userService.findalluser () ؛ إرجاع "قائمة المستخدم" ؛ } القائمة العامة <Sether> getUserList () {return userList ؛ } public void setUserList (list <serve> userlist) {this.userList = userList ؛ }} 14. تنفيذ صفحة تسجيل الدخول
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪@ taglib prefix = "s" uri = "/struts-tags" ٪> <٪ string path. String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+path+"/" ؛ ٪> <! doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <html> <head> <base href = "<٪ = basepath> <title> تسجيل الدخول إلى المستخدم </title> <meta http-quiv =" pragma " http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = type = "text/css" href = "styles.css"> -> <s: head/> </head> <body> <center> <h1> تسجيل الدخول إلى المستخدم </h1> <s: A action = "user_addui" namespace = "/user"> إضافة مستخدم جديد </s: label = "username" name = "user.username"> </s: textfield> <s: password label = "password" name = "user.password"> </s: password> <s: إرسال value = "login"> </s: إرسال> </s: form> </center> </toda> </html>
15. أضف صفحة
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪@ taglib prefix = "s" uri = "/struts-tags" ٪> <! doctype html public "-// w3c // dtd html 4.01 المستخدم </title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0" namepace = "/user" method = "post"> <s: textfield label = "username" name = "user.username"> </s
16. قم بتعديل الصفحة
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪@ taglib prefix = "s" uri = "/struts-tags" ٪> <! doctype html public "-// w3c // dtd html 4.01 tund المستخدم </title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0"> </head> <h1> modify </h1> مساحة الاسم = "/user" method = "post"> <s: hidden name = "user.id"> </s: hidden> <s: textfield label = "username" name = "user.username"> </s: textfield> <s: password label = "password" name = "user.password" </html>
17. صفحة قائمة
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪@ taglib prefix = "s" uri = "/struts-tags" ٪> <! doctype html public "-// w3c // dtd html 4.0 <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0">/head> <body> <h2> </h2> مساحة names = "/user"> أضف مستخدمًا جديدًا </s: a> </h3> <table> <tr> <th> معرف المستخدم </th> <th> اسم المستخدم </th> <th> كلمة مرور المستخدم </th> <th> العملية </th> </tr> <s: iterator value = "قائمة المستخدمين"> <td> <td> value = "username"/> </td> <td> <s: property value = "password"/> </td> <td> <s: a action = "user_updateui" namepace = "/user"> <s: param name = "user.id"> $ {} </s: param> modify </ s: مساحة الاسم = "/user"> <s: param name = "user.id"> $ {id} </s: param> delete </s: a> </td> </tr> </s: iterator> </table> </center> </body> </html>ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.