`
dujunxiaochuan
  • 浏览: 34317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Smartclient+demo+实例

阅读更多

此文为转载

 

用实例见证smartclient的厉害吧。

  1. 先貼出來圖片炫炫!很閃吧。
  2. 建表語句:
  3. createtablesupplyItem(
  4. itemIDintprimarykeyidentity(1,1),
  5. itemNamevarchar(300),
  6. unitCostdecimal(28,2),--55.23
  7. SKUvarchar(30),
  8. descriptionvarchar(5000),
  9. categoryvarchar(128),
  10. inStockvarchar(30),
  11. unitsvarchar(30),
  12. nextShipmentdatetime
  13. )
  14. --droptablesupplyCategory
  15. createtablesupplyCategory(
  16. categoryNamevarchar(128)primarykey,
  17. parentIDvarchar(255),
  18. )
  19. demoAppJS.jsp
  20. Jsp代碼:
  21. <!--------------------------------------------------------------------
  22. 整合人:舒婷*_*
  23. ---------------------------------------------------------------------->
  24. <HTML>
  25. <HEAD>
  26. <TITLE>SmartClientDemoApplication</TITLE>
  27. <metahttp-equiv="pragma"content="no-cache">
  28. <metahttp-equiv="cache-control"content="no-cache">
  29. <metahttp-equiv="expires"content="0">
  30. <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
  31. <metahttp-equiv="description"content="Thisismypage">
  32. <SCRIPT>varisomorphicDir="isomorphic/";</SCRIPT>
  33. <SCRIPTSRC=smartclient/modules/ISC_History.js></SCRIPT>
  34. <SCRIPTSRC=smartclient/modules/ISC_Core.js></SCRIPT>
  35. <SCRIPTSRC=smartclient/modules/ISC_Foundation.js></SCRIPT>
  36. <SCRIPTSRC=smartclient/modules/ISC_Containers.js></SCRIPT>
  37. <SCRIPTSRC=smartclient/modules/ISC_Grids.js></SCRIPT>
  38. <SCRIPTSRC=smartclient/modules/ISC_Forms.js></SCRIPT>
  39. <SCRIPTSRC=smartclient/modules/ISC_DataBinding.js></SCRIPT>
  40. <SCRIPTSRC=smartclient/modules/load_skin.js></SCRIPT>
  41. </HEAD>
  42. <BODYCLASS="pageBackground"STYLE="overflow:hidden">
  43. <scriptsrc="demoAppJS.js"></script>
  44. </BODY>
  45. </HTML>
  46. demoAppJS.js
  47. isc.setAutoDraw(false);
  48. //<isomorphic:loadDSname="supplyItem"/>
  49. //<isomorphic:loadDSname="supplyCategory"/>
  50. isc.DataSource.create({
  51. ID:"supplyCategory",
  52. dataFormat:"xml",
  53. recordXPath:"//country",
  54. fields:[
  55. {name:"categoryName",primaryKey:true},
  56. {foreignKey:"supplyCategory.categoryName",//这一步不懂、??
  57. hidden:true,
  58. name:"parentID",
  59. required:true,
  60. rootValue:"root",//初始化加载parentID为root记录如果没有设置rootValue会出现死循环式的树
  61. type:"text"
  62. }
  63. ],
  64. operationBindings:[
  65. {
  66. operationType:"fetch",
  67. dataURL:"demoApp/findTreeAll.action"
  68. }
  69. ]
  70. });
  71. isc.DataSource.create({
  72. ID:"supplyItem",
  73. dataFormat:"xml",//数据格式xml格式
  74. recordXPath:"//country",//--<country></country>
  75. fields:[
  76. //{name:"itemId",primaryKey:true},//countryCode設置為主鍵
  77. {name:"itemName",title:"itemName"},
  78. {name:"unitCost",title:"unitCost"},
  79. {name:"SKU",title:"SKU"},
  80. {name:"description",title:"description"},
  81. {name:"category",title:"category"},
  82. {name:"inStock",title:"inStock"},
  83. {name:"nextShipment",title:"nextShipment"}
  84. ],
  85. operationBindings:[
  86. {operationType:"fetch",
  87. dataURL:"demoApp/findAll.action"
  88. },
  89. {operationType:"add"
  90. //dataURL:"country/insertInfo.action"
  91. },
  92. {operationType:"update"
  93. //dataURL:"country/updateInfo.action"
  94. },
  95. {operationType:"remove"
  96. //dataURL:"country/deleteInfo.action"
  97. }
  98. ]
  99. });
  100. isc.Page.setAppImgDir(isc.Page.getIsomorphicDocsDir()+"exampleImages/");//设置img文件路径
  101. isc.TreeGrid.create({
  102. ID:"categoryTree",
  103. dataSource:"supplyCategory",
  104. nodeClick:"findForm.findItems(node.categoryName)",
  105. showHeader:false,
  106. leaveScrollbarGap:false,
  107. animateFolders:true,
  108. canAcceptDroppedRecords:true,
  109. canReparentNodes:false,
  110. selectionType:"single",
  111. animateRowsMaxTime:750
  112. });
  113. isc.HTMLPane.create({
  114. ID:"helpCanvas",
  115. contentsURL:"demoApp_helpText.html",
  116. overflow:"auto",
  117. styleName:"defaultBorder",
  118. padding:10
  119. });
  120. isc.IButton.create({
  121. ID:"findButton",
  122. title:"Find",
  123. left:25,
  124. top:16,
  125. width:80,
  126. click:"findForm.findItems()",
  127. icon:"demoApp/icon_find.png",
  128. iconWidth:24
  129. });
  130. isc.SearchForm.create({
  131. ID:"findForm",
  132. dataSource:supplyItem,
  133. left:130,
  134. top:10,
  135. cellPadding:4,
  136. numCols:6,
  137. fields:[
  138. {name:"SKU"},
  139. {name:"itemName",editorType:"comboBox",optionDataSource:"supplyItem",
  140. pickListWidth:250},
  141. {name:"findInCategory",editorType:"checkbox",
  142. title:"Usecategory",defaultValue:true,shouldSaveValue:false}
  143. ],
  144. //Functiontoactuallyfinditems
  145. findItems:function(categoryName){
  146. varfindValues;
  147. if(this.getValue('findInCategory')&&categoryTree.selection.anySelected()){
  148. //usetreecategoryandformvalues
  149. if(categoryName==null)categoryName=categoryTree.getSelectedRecord().categoryName;
  150. findValues={category:categoryName};
  151. isc.addProperties(findValues,this.getValues());
  152. }elseif(categoryName==null){
  153. //useformvaluesonly
  154. findValues=this.getValues();
  155. }else{
  156. //usetreecategoryonly
  157. findValues={category:categoryName};
  158. }
  159. itemList.filterData(findValues);
  160. itemDetailTabs.clearDetails();
  161. }
  162. });
  163. isc.ListGrid.create({
  164. ID:"itemList",
  165. dataSource:supplyItem,
  166. useAllDataSourceFields:true,
  167. fields:[
  168. {name:"itemName",title:"Name",showHover:true},
  169. {name:"unitCost",
  170. formatCellValue:"returnisc.Format.toCurrencyString(parseFloat(value))",
  171. editorType:"spinner",editorProperties:{step:0.01}},
  172. {name:"SKU",canEdit:false},
  173. {name:"description",showHover:true},
  174. {name:"category",canEdit:false},
  175. {name:"inStock",width:55,align:"center",
  176. formatCellValue:function(value,record,field,rowNum,colNum){
  177. if(value)returnisc.Canvas.imgHTML("demoApp/checked.png",13,13);
  178. elsereturnisc.Canvas.imgHTML("demoApp/unchecked.png",13,13)
  179. }},
  180. {name:"nextShipment",showIf:"false"}
  181. ],
  182. recordClick:"this.updateDetails()",
  183. canEdit:true,
  184. modalEditing:true,
  185. cellChanged:"this.updateDetails()",
  186. alternateRecordStyles:true,
  187. canDragRecordsOut:true,
  188. hoverWidth:200,
  189. hoverHeight:20,
  190. selectionType:"single",
  191. cellContextClick:"returnitemListMenu.showContextMenu()",
  192. updateDetails:function(){
  193. varrecord=this.getSelectedRecord();
  194. if(record==null)returnitemDetailTabs.clearDetails();
  195. if(itemDetailTabs.getSelectedTabNumber()==0){itemViewer.setData(record)
  196. }else{
  197. itemDetailTabs.updateTab("editTab",editForm);
  198. editForm.editRecord(record);
  199. }
  200. }
  201. });
  202. isc.Menu.create({
  203. ID:"itemListMenu",
  204. cellHeight:22,
  205. data:[
  206. {title:"AddNewItem",
  207. icon:"demoApp/icon_add.png",
  208. click:function(){
  209. itemList.selection.deselectAll();
  210. itemDetailTabs.selectTab(1);
  211. itemList.updateDetails();
  212. }
  213. },
  214. {isSeparator:true},
  215. {title:"ShowDetails",
  216. icon:"demoApp/icon_view.png",
  217. click:"itemDetailTabs.selectTab(0);itemList.updateDetails()"},
  218. {title:"EditItem",
  219. icon:"demoApp/icon_edit.png",
  220. click:"itemDetailTabs.selectTab(1);itemList.updateDetails()"},
  221. {title:"DeleteItem",
  222. icon:"demoApp/icon_delete.png",
  223. click:"itemList.removeSelectedData();itemDetailTabs.clearDetails()"}
  224. ]
  225. });
  226. isc.DetailViewer.create({
  227. ID:"itemViewer",
  228. dataSource:supplyItem,
  229. width:"100%",
  230. margin:"25",
  231. emptyMessage:"Selectanitemtoviewitsdetails"
  232. });
  233. isc.DynamicForm.create({
  234. ID:"editForm",
  235. dataSource:supplyItem,
  236. useAllDataSourceFields:true,
  237. fields:[
  238. {name:"SKU"},
  239. {name:"description",editorType:"textArea",rowSpan:3,width:200},
  240. {name:"category",editorType:"pickTree",dataSource:supplyCategory,//无法显示editform
  241. emptyMenuMessage:"NoSubCategories",canSelectParentItems:true},
  242. {name:"unitCost",editorType:"spinner",step:0.01},
  243. {name:"inStock"},
  244. {name:"nextShipment",useTextField:true,editorType:"date"},
  245. {name:"savebtn",editorType:"button",align:"center",
  246. width:100,colSpan:4,title:"SaveItem",click:"editForm.saveData()"}
  247. ],
  248. width:650,
  249. numCols:4,
  250. colWidths:[100,200,100,200],
  251. margin:25,
  252. cellPadding:5,
  253. autoFocus:false
  254. });
  255. isc.Label.create({
  256. ID:"editorMessage",
  257. autoDraw:false,
  258. width:"100%",
  259. height:"100%",
  260. align:"center",
  261. contents:"Selectarecordtoedit,oracategorytoinsertanewrecordinto"
  262. });
  263. isc.TabSet.create({
  264. ID:"itemDetailTabs",
  265. tabs:[
  266. {title:"View",pane:itemViewer,ID:"viewTab",width:70,icon:"demoApp/icon_view.png"},
  267. {title:"Edit",pane:editForm,ID:"editTab",width:70,icon:"demoApp/icon_edit.png"}
  268. ],
  269. tabSelected:"itemList.updateDetails()",
  270. clearDetails:function(){
  271. varselectedTab=this.getSelectedTabNumber();
  272. if(selectedTab==0){
  273. itemViewer.setData();
  274. }elseif(selectedTab==1){
  275. if(categoryTree.getSelectedRecord()!=null){
  276. this.updateTab("editTab",editForm);
  277. editForm.editNewRecord({category:categoryTree.getSelectedRecord().categoryName});
  278. }else{
  279. this.updateTab("editTab",editorMessage);
  280. }
  281. }
  282. }
  283. });
  284. //Defineapplicationlayout
  285. //---------------------------------------------------------------------
  286. isc.HLayout.create({
  287. ID:"pageLayout",
  288. width:"100%",
  289. height:"100%",
  290. layoutMargin:20,
  291. members:[
  292. isc.SectionStack.create({
  293. ID:"leftSideLayout",
  294. width:280,
  295. showResizeBar:true,
  296. visibilityMode:"multiple",
  297. animateSections:true,
  298. sections:[
  299. {title:"OfficeSupplyCategories",autoShow:true,items:[categoryTree]},
  300. {title:"Instructions",autoShow:true,items:[helpCanvas]}
  301. ]
  302. }),
  303. isc.SectionStack.create({
  304. ID:"rightSideLayout",
  305. visibilityMode:"multiple",
  306. animateSections:true,
  307. sections:[
  308. {title:"FindItems",autoShow:true,items:[
  309. isc.Canvas.create({
  310. ID:"findPane",
  311. height:60,
  312. overflow:"auto",
  313. styleName:"defaultBorder",
  314. children:[findForm,findButton]
  315. })
  316. ]},
  317. {title:"OfficeSupplyItems",autoShow:true,items:[itemList]},
  318. {title:"ItemDetails",autoShow:true,items:[itemDetailTabs]}
  319. ]
  320. })
  321. ]
  322. });
  323. isc.Page.setEvent("load","pageLayout.draw()");
  324. //Customlogic:
  325. //Whenshowingoptionsinthecombo-box,onlyshowtheoptionsfromtheselectedcategory
  326. //ifappropriate
  327. findForm.getItem("itemName").addProperties({
  328. getPickListFilterCriteria:function(){
  329. varcriteria=this.Super("getPickListFilterCriteria",arguments);
  330. if(this.form.getValue('findInCategory')&&categoryTree.selection.anySelected()){
  331. criteria.category=categoryTree.getSelectedRecord().categoryName;
  332. }
  333. returncriteria
  334. }
  335. });
  336. categoryTree.fetchData();
  337. java代碼
  338. DAO層
  339. packageisc.java.Dao;
  340. importisc.java.Module.supplyItem;
  341. importjava.util.List;
  342. importorg.hibernate.SessionFactory;
  343. importorg.springframework.beans.factory.annotation.Autowired;
  344. importorg.springframework.orm.hibernate3.HibernateTemplate;
  345. importorg.springframework.stereotype.Repository;
  346. @Repository
  347. publicclasssupplyItem_Dao{
  348. privateHibernateTemplatehibernateTemplate;
  349. @SuppressWarnings("unused")
  350. @Autowired
  351. privatevoidsetHibernateTemplate(SessionFactorysessionFactory){
  352. this.hibernateTemplate=newHibernateTemplate(sessionFactory);
  353. }
  354. /*
  355. *functionfindAll
  356. *查询supplyItem表中所有记录
  357. *并以list形式返回
  358. *
  359. **/
  360. @SuppressWarnings("unchecked")
  361. publicList<supplyItem>findAll(Stringcategory){
  362. Stringhql="fromsupplyItemwherecategory='"+category+"'";
  363. Listlist=this.hibernateTemplate.find(hql);
  364. returnlist;
  365. }
  366. /*
  367. *根据category返回对应的记录
  368. **/
  369. @SuppressWarnings("unchecked")
  370. publicsupplyItemfindInfoByID(intitemID){
  371. supplyItemsupp=(supplyItem)this.hibernateTemplate.get(supplyItem.class,itemID);
  372. returnsupp;
  373. }
  374. /*
  375. *删除指定记录
  376. *
  377. **/
  378. publicvoiddeleteInfo(supplyItemsupp){
  379. this.hibernateTemplate.delete(supp);
  380. }
  381. /*
  382. *更新修改后的记录
  383. **/
  384. publicvoidupdateInfo(supplyItemsupp){
  385. this.hibernateTemplate.update(supp);
  386. }
  387. /*
  388. *增加记录
  389. **/
  390. publicvoidinsertInfo(supplyItemsupp){
  391. this.hibernateTemplate.save(supp);
  392. }
  393. }
  394. packageisc.java.Dao;
  395. importisc.java.Module.supplyCategory;
  396. importjava.util.List;
  397. importorg.hibernate.SessionFactory;
  398. importorg.springframework.beans.factory.annotation.Autowired;
  399. importorg.springframework.orm.hibernate3.HibernateTemplate;
  400. importorg.springframework.stereotype.Repository;
  401. @Repository
  402. publicclasssupplyCategory_Dao{
  403. privateHibernateTemplatehibernateTemplate;
  404. @SuppressWarnings("unused")
  405. @Autowired
  406. privatevoidsetHibernateTemplate(SessionFactorysessionFactory){
  407. this.hibernateTemplate=newHibernateTemplate(sessionFactory);
  408. }
  409. @SuppressWarnings("unchecked")
  410. publicList<supplyCategory>findAll(StringparentId){
  411. Stringhql="fromsupplyCategorywhereparentId='"+parentId+"'";
  412. Listlist=this.hibernateTemplate.find(hql);
  413. returnlist;
  414. }
  415. }
  416. ENTITY層
  417. packageisc.java.Module;
  418. importjavax.persistence.Column;
  419. importjavax.persistence.Entity;
  420. importjavax.persistence.Id;
  421. importjavax.persistence.Table;
  422. @Entity
  423. @Table(name="supplyCategory")
  424. publicclasssupplyCategory{
  425. privateStringcategoryName;
  426. privateStringparentId;
  427. @Id
  428. @Column(name="categoryName")
  429. publicStringgetCategoryName(){
  430. returncategoryName;
  431. }
  432. publicvoidsetCategoryName(StringcategoryName){
  433. this.categoryName=categoryName;
  434. }
  435. @Column(name="parentId")
  436. publicStringgetParentId(){
  437. returnparentId;
  438. }
  439. publicvoidsetParentId(StringparentId){
  440. this.parentId=parentId;
  441. }
  442. }
  443. packageisc.java.Module;
  444. importjavax.persistence.Column;
  445. importjavax.persistence.Entity;
  446. importjavax.persistence.GeneratedValue;
  447. importjavax.persistence.Id;
  448. importjavax.persistence.Table;
  449. @Entity
  450. @Table(name="supplyItem")
  451. publicclasssupplyItem{
  452. privateintitemID;
  453. privateStringitemName;
  454. privatedoubleunitCost;
  455. privateStringSKU;
  456. privateStringdescription;
  457. privateStringcategory;
  458. privateStringinStock;
  459. privateStringnextShipment;
  460. @Id
  461. @GeneratedValue
  462. @Column(name="itemID")
  463. publicintgetItemID(){
  464. returnitemID;
  465. }
  466. publicvoidsetItemID(intitemID){
  467. this.itemID=itemID;
  468. }
  469. @Column(name="itemName")
  470. publicStringgetItemName(){
  471. returnitemName;
  472. }
  473. publicvoidsetItemName(StringitemName){
  474. this.itemName=itemName;
  475. }
  476. @Column(name="unitCost")
  477. publicdoublegetUnitCost(){
  478. returnunitCost;
  479. }
  480. publicvoidsetUnitCost(doubleunitCost){
  481. this.unitCost=unitCost;
  482. }
  483. @Column(name="SKU")
  484. publicStringgetSKU(){
  485. returnSKU;
  486. }
  487. publicvoidsetSKU(Stringsku){
  488. SKU=sku;
  489. }
  490. @Column(name="description")
  491. publicStringgetDescription(){
  492. returndescription;
  493. }
  494. publicvoidsetDescription(Stringdescription){
  495. this.description=description;
  496. }
  497. @Column(name="category")
  498. publicStringgetCategory(){
  499. returncategory;
  500. }
  501. publicvoidsetCategory(Stringcategory){
  502. this.category=category;
  503. }
  504. @Column(name="instock")
  505. publicStringgetInStock(){
  506. returninStock;
  507. }
  508. publicvoidsetInStock(StringinStock){
  509. this.inStock=inStock;
  510. }
  511. @Column(name="nextShipment")
  512. publicStringgetNextShipment(){
  513. returnnextShipment;
  514. }
  515. publicvoidsetNextShipment(StringnextShipment){
  516. this.nextShipment=nextShipment;
  517. }
  518. }
  519. Service層
  520. packageisc.java.Service;
  521. importisc.java.Dao.supplyCategory_Dao;
  522. importisc.java.Module.supplyCategory;
  523. importjava.util.List;
  524. importorg.springframework.beans.factory.annotation.Autowired;
  525. importorg.springframework.stereotype.Service;
  526. importorg.springframework.transaction.annotation.Transactional;
  527. @Service
  528. publicclasssupplyCategory_Service{
  529. privatesupplyCategory_DaosupplyCategory_dao;
  530. @Autowired
  531. publicvoidsetSupplyCategory_dao(supplyCategory_DaosupplyCategory_dao){
  532. this.supplyCategory_dao=supplyCategory_dao;
  533. }
  534. @Transactional("demoApp")
  535. publicList<supplyCategory>findAll(StringparentId){
  536. returnthis.supplyCategory_dao.findAll(parentId);
  537. }
  538. }
  539. packageisc.java.Service;
  540. importisc.java.Dao.supplyItem_Dao;
  541. importisc.java.Module.supplyItem;
  542. importjava.util.List;
  543. importorg.springframework.beans.factory.annotation.Autowired;
  544. importorg.springframework.stereotype.Service;
  545. importorg.springframework.transaction.annotation.Transactional;
  546. @Service
  547. publicclasssupplyItem_Service{
  548. privatesupplyItem_DaosupplyItem_dao;
  549. @Autowired
  550. publicvoidsetSupplyItem_dao(supplyItem_DaosupplyItem_dao){
  551. this.supplyItem_dao=supplyItem_dao;
  552. }
  553. /*
  554. *使用声明式事物管理
  555. *在业务方法上进行@Transactional注解
  556. *将事物规则应用到业务逻辑中
  557. *demoApp为限定词*_*
  558. **/
  559. @Transactional("demoApp")
  560. publicList<supplyItem>findAll(Stringcategory){
  561. returnthis.supplyItem_dao.findAll(category);
  562. }
  563. @Transactional("demoApp")
  564. publicsupplyItemfindInfoByID(intitemID){
  565. returnthis.supplyItem_dao.findInfoByID(itemID);
  566. }
  567. @Transactional("demoApp")
  568. publicvoiddeleteInfo(intitemID){
  569. supplyItemsupp=this.supplyItem_dao.findInfoByID(itemID);
  570. this.supplyItem_dao.deleteInfo(supp);
  571. }
  572. @Transactional("demoApp")
  573. publicvoidupdateInfo(supplyItemsupp){
  574. this.supplyItem_dao.updateInfo(supp);
  575. }
  576. @Transactional("demoApp")
  577. publicvoidinsertInfo(supplyItemsupp){
  578. this.supplyItem_dao.insertInfo(supp);
  579. }
  580. }
  581. Web層
  582. packageisc.java.Web;
  583. importisc.java.Module.supplyCategory;
  584. importisc.java.Service.supplyCategory_Service;
  585. importjava.io.IOException;
  586. importjava.util.Enumeration;
  587. importjava.util.Iterator;
  588. importjava.util.List;
  589. importjavax.servlet.ServletOutputStream;
  590. importjavax.servlet.http.HttpServletRequest;
  591. importjavax.servlet.http.HttpServletResponse;
  592. importorg.springframework.beans.factory.annotation.Autowired;
  593. importorg.springframework.stereotype.Controller;
  594. importorg.springframework.web.bind.annotation.RequestMapping;
  595. @Controller
  596. publicclasssupplyCategory_Controller{
  597. privatesupplyCategory_ServicesupplyCategory_service;
  598. @Autowired
  599. publicvoidsetSupplyCategory_service(
  600. supplyCategory_ServicesupplyCategory_service){
  601. this.supplyCategory_service=supplyCategory_service;
  602. }
  603. @SuppressWarnings("unchecked")
  604. @RequestMapping(value="demoApp/findTreeAll.action")
  605. publicvoidfindAll(HttpServletResponseresponse,HttpServletRequestrequest){
  606. StringparentId=request.getParameter("parentID");
  607. List<supplyCategory>list=this.supplyCategory_service.findAll(parentId);
  608. ServletOutputStreamsos=null;
  609. try{
  610. sos=response.getOutputStream();
  611. }catch(IOExceptione){
  612. //TODOAuto-generatedcatchblock
  613. e.printStackTrace();
  614. }
  615. StringBuffersbu=newStringBuffer();
  616. Iteratorita=(Iterator)list.iterator();
  617. while(ita.hasNext()){
  618. supplyCategorysupplycategory=(supplyCategory)ita.next();
  619. sbu.append("<country>");
  620. sbu.append("<categoryName>"+supplycategory.getCategoryName()+"</categoryName>");
  621. sbu.append("<parentId>"+supplycategory.getParentId()+"</parentId>");
  622. sbu.append("</country>");
  623. }
  624. try{
  625. sos.print("<?xmlversion='1.0'encoding='UTF-8'?><records>"+sbu.toString()+"</records>");
  626. }catch(IOExceptione){
  627. //TODOAuto-generatedcatchblock
  628. e.printStackTrace();
  629. }
  630. }
  631. }
  632. packageisc.java.Web;
  633. importisc.java.Module.supplyItem;
  634. importisc.java.Service.supplyItem_Service;
  635. importjava.io.IOException;
  636. importjava.util.Iterator;
  637. importjava.util.List;
  638. importjavax.servlet.ServletOutputStream;
  639. importjavax.servlet.http.HttpServletRequest;
  640. importjavax.servlet.http.HttpServletResponse;
  641. importorg.springframework.beans.factory.annotation.Autowired;
  642. importorg.springframework.stereotype.Controller;
  643. importorg.springframework.web.bind.annotation.RequestMapping;
  644. @Controller
  645. publicclasssupplyItem_Controller{
  646. privatesupplyItem_ServicesupplyItem_service;
  647. @Autowired
  648. publicvoidsetSupplyItem_service(supplyItem_ServicesupplyItem_service){
  649. this.supplyItem_service=supplyItem_service;
  650. }
  651. /*
  652. *从数据库中提取数据以xml格式存储
  653. *
  654. **/
  655. @SuppressWarnings("unchecked")
  656. @RequestMapping(value="demoApp/findAll.action")
  657. publicvoidfindAll(HttpServletResponseresponse,HttpServletRequestrequest){
  658. Stringcategory=request.getParameter("category");//接受前台传过来的参数
  659. List<supplyItem>list=this.supplyItem_service.findAll(category);
  660. ServletOutputStreamsos=null;
  661. try{
  662. sos=response.getOutputStream();
  663. }catch(IOExceptione){
  664. e.printStackTrace();
  665. }
  666. StringBuffersbu=newStringBuffer();
  667. Iteratorita=(Iterator)list.iterator();
  668. while(ita.hasNext()){
  669. supplyItemsupplyitem=(supplyItem)ita.next();
  670. sbu.append("<country>");
  671. sbu.append("<itemID>"+supplyitem.getItemID()+"</itemID>");
  672. sbu.append("<itemName>"+supplyitem.getItemName()+"</itemName>");
  673. sbu.append("<unitCost>"+supplyitem.getUnitCost()+"</unitCost>");
  674. sbu.append("<SKU>"+supplyitem.getSKU()+"</SKU>");
  675. sbu.append("<description>"+supplyitem.getDescription()+"</description>");
  676. sbu.append("<category>"+supplyitem.getCategory()+"</category>");
  677. sbu.append("<inStock>"+supplyitem.getInStock()+"</inStock>");
  678. sbu.append("<nextShipment>"+supplyitem.getNextShipment()+"</nextShipment>");
  679. sbu.append("</country>");
  680. }
  681. try{
  682. sos.print("<?xmlversion='1.0'encoding='UTF-8'?><records>"+sbu.toString()+"</records>");
  683. }catch(IOExceptione){
  684. e.printStackTrace();
  685. }
  686. }
  687. @RequestMapping(value="demoApp/deleteInfo.action")
  688. publicvoiddeleteInfo(HttpServletRequestrequest){
  689. intitemID=Integer.parseInt(request.getParameter("itemID"));
  690. System.out.println("test======================"+itemID);
  691. this.supplyItem_service.deleteInfo(itemID);
  692. }
  693. @RequestMapping(value="demoApp/updateInfo.action")
  694. publicvoidupdateInfo(HttpServletRequestrequest){
  695. intitemID=Integer.parseInt(request.getParameter("itemID"));
  696. supplyItemsupp=this.supplyItem_service.findInfoByID(itemID);
  697. supp.setSKU(request.getParameter("SKU"));
  698. supp.setCategory(request.getParameter("category"));
  699. supp.setDescription(request.getParameter("description"));
  700. supp.setInStock(request.getParameter("inStock"));
  701. supp.setItemName(request.getParameter("itemName"));
  702. supp.setNextShipment(request.getParameter("nextShipment"));
  703. Strings=request.getParameter("unitCost");
  704. supp.setUnitCost(Double.parseDouble(s));
  705. this.supplyItem_service.updateInfo(supp);
  706. }
  707. @RequestMapping(value="demoApp/insertInfo.action")
  708. publicvoidinsertInfo(HttpServletRequestrequest){
  709. supplyItemsupp=newsupplyItem();
  710. supp.setCategory(request.getParameter("category"));
  711. supp.setSKU(request.getParameter("SKU"));
  712. supp.setDescription(request.getParameter("description"));
  713. supp.setInStock(request.getParameter("inStock"));
  714. supp.setItemName(request.getParameter("itemName"));
  715. supp.setNextShipment(request.getParameter("nextShipment"));
  716. supp.setUnitCost(Double.parseDouble(request.getParameter("unitCost")));
  717. this.supplyItem_service.insertInfo(supp);
  718. }
  719. }
  720. Xml
  721. App-config.xml
  722. <?xmlversion="1.0"encoding="UTF-8"?>
  723. <beansxmlns="http://www.springframework.org/schema/beans"
  724. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  725. xmlns:mvc="http://www.springframework.org/schema/mvc"
  726. xmlns:context="http://www.springframework.org/schema/context"
  727. xsi:schemaLocation="
  728. http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  729. http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd
  730. http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
  731. <!--Scanstheclasspathofthisapplicationfor@Componentstodeployasbeans-->
  732. <!--規約所有進行掃描的類,以完成Bean創建和自動依賴注入功能-->
  733. <context:component-scanbase-package="isc.java.*"/>
  734. <!--<context:annotation-config/>-->
  735. <!--Configuresthe@Controllerprogrammingmodel-->
  736. <mvc:annotation-driven/>
  737. <!--misc-->
  738. <beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  739. <propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>
  740. <propertyname="suffix"value=".action"/>
  741. </bean>
  742. <!--ConfiguresHibernate-DatabaseConfig-->
  743. <importresource="db-config.xml"/>
  744. </beans>
  745. Db-config.xml
  746. <?xmlversion="1.0"encoding="UTF-8"?>
  747. <beansxmlns="http://www.springframework.org/schema/beans"
  748. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  749. xmlns:tx="http://www.springframework.org/schema/tx"
  750. xmlns:aop="http://www.springframework.org/schema/aop"
  751. xsi:schemaLocation="
  752. http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  753. http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  754. http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
  755. <beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  756. <propertyname="driverClassName"><value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value></property>
  757. <propertyname="url"><value>jdbc:sqlserver://10.1.100.215:1433;DatabaseName=email</value></property>
  758. <propertyname="username"><value>dev</value></property>
  759. <propertyname="password"><value>12345678aA</value></property>
  760. </bean>
  761. <beanid="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  762. <propertyname="dataSource"><reflocal="dataSource"/></property>
  763. <propertyname="packagesToScan"value="isc.java.*"/>
  764. <propertyname="hibernateProperties">
  765. <props>
  766. <propkey="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
  767. <propkey="hibernate.show_sql">true</prop>
  768. <!--<propkey="hibernate.hbm2ddl.auto">update</prop>-->
  769. <propkey="hibernate.format_sql">true</prop>
  770. </props>
  771. </property>
  772. </bean>
  773. <!--TransactionmanagerforasingleHibernateSessionFactory(alternativetoJTA)-->
  774. <tx:annotation-driven/>
  775. <beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  776. <propertyname="sessionFactory"><reflocal="sessionFactory"/></property>
  777. <qualifiervalue="demoApp"/><!--限定词-->
  778. </bean>
  779. </beans>

 

分享到:
评论

相关推荐

    SmartClient资料

    7. **Smartclient+demo+实例**:提供的示例和演示代码帮助开发者了解SmartClient的实际应用场景,学习如何创建和使用各种组件和功能。 8. **hsql++(the Visual Builder DataSource)**:HSQL是一个轻量级的关系型...

    Smart Client系列课程(10):在智能客户端应用程序中部署

    在IT领域,智能客户端应用程序(Smart Client Application)是一种利用现代技术构建的桌面应用,它可以提供离线功能、自适应网络连接、丰富的用户界面以及高级的更新机制。在本系列课程的第十部分,我们重点关注如何...

    C#通过S7.net与西门子S7-200smart网口通信测试程序

    简单的通信小程序,网上几乎找不到200smart通信案例,这里其实还是通过其他的方式对200smart进行通信,不过好歹能通信上,能做一些简单的应用,太复杂的估计就不行了,不过复杂的操作也用不到200smart了。

    smart-license授权管理软件 v1.0.3

    license-client 1.0.0-SNAPSHOT 2、载入License。如若License已过期,则会触发异常。 public class LicenseTest { public static void main(String[] args) throws Exception { File file=new File&#40;...

    级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均

    级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略。 (1)第一层采用电压电流双闭环pi控制,电压电流正负序分离,电压外环通过产生基波正序有功电流三相所有H桥模块直流侧平均电压恒定,电流内环采用前馈解耦控制; (2)第二层相间电压均衡控制,注入零序电压,控制通过注入零序电压维持相间电压平衡; (3)第三层相内电压均衡控制,使其所有子模块吸收的有功功率与其损耗补,从而保证所有H桥子模块直流侧电压值等于给定值。 有参考资料。 639,核心关键词: 1. 不平衡电网下的SVG无功补偿 2. 级联H桥SVG无功补偿STATCOM 3. 三层控制策略 4. 电压电流双闭环PI控制 5. 电压电流正负序分离 6. 直流侧平均电压恒定 7. 前馈解耦控制 8. 相间电压均衡控制 9. 零序电压注入 10. 相内电压均衡控制 以上十个关键词用分号分隔的格式为:不

    GTX 1080 PCB图纸

    GTX 1080 PCB图纸,内含图纸查看软件

    深度优化与应用:提升DeepSeek润色指令的有效性和灵活性指南

    内容概要:本文档详细介绍了利用 DeepSeek 进行文本润色和问答交互时提高效果的方法和技巧,涵盖了从明确需求、提供适当上下文到尝试开放式问题以及多轮对话的十个要点。每一部分内容都提供了具体的示范案例,如指定回答格式、分步骤提问等具体实例,旨在指导用户更好地理解和运用 DeepSeek 提升工作效率和交流质量。同时文中还强调了根据不同应用场景调整提示词语气和风格的重要性和方法。 适用人群:适用于希望通过优化提问技巧以获得高质量反馈的企业员工、科研人员以及一般公众。 使用场景及目标:本文针对所有期望提高 DeepSeek 使用效率的人群,帮助他们在日常工作中快速获取精准的答案或信息,特别是在撰写报告、研究材料准备和技术咨询等方面。此外还鼓励用户通过不断尝试不同形式的问题表述来进行有效沟通。 其他说明:该文档不仅关注实际操作指引,同样重视用户思维模式转变——由简单索取答案向引导 AI 辅助创造性解决问题的方向发展。

    基于FPGA与W5500实现的TCP网络通信测试平台开发-Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivad

    基于FPGA与W5500实现的TCP网络通信测试平台开发——Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivado 2019软件的扩展开发,基于FPGA和W5500的TCP网络通信 测试平台 zynq扩展口开发 软件平台 vivado2019.2,纯Verilog可移植 测试环境 压力测试 cmd命令下ping电脑ip,同时采用上位机进行10ms发包回环测试,不丢包(内部数据回环,需要时间处理) 目前实现单socket功能,多路可支持 ,基于FPGA; W5500; TCP网络通信; Zynq扩展口开发; 纯Verilog可移植; 测试平台; 压力测试; 10ms发包回环测试; 单socket功能; 多路支持。,基于FPGA与W5500的Zynq扩展口TCP通信测试:可移植Verilog实现的高效网络通信

    Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警及记录、自动实验、数据处理与查询存储,报表生成与打印一体化解决方案 ,Labview液压比例阀

    Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警及记录、自动实验、数据处理与查询存储,报表生成与打印一体化解决方案。,Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警管理及实验自动化,labview液压比例阀伺服阀试验台程序:功能包括,同PLC通讯程序,液压动画,手动控制及调试,传感器标定,报警设置及报警记录,自动实验,数据处理曲线处理,数据库存储及查询,报表自动生成及打印,扫码枪扫码及信号录入等~ ,核心关键词:PLC通讯; 液压动画; 手动控制及调试; 传感器标定; 报警设置及记录; 自动实验; 数据处理及曲线处理; 数据库存储及查询; 报表生成及打印; 扫码枪扫码。,Labview驱动的智能液压阀测试系统:多功能控制与数据处理

    华为、腾讯、万科员工职业发展体系建设与实践.pptx

    华为、腾讯、万科员工职业发展体系建设与实践.pptx

    基于遗传算法的柔性车间调度优化 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    电网不对称故障下VSG峰值电流限制的柔性控制策略:实现电流平衡与功率容量的优化利用,电网不对称故障下VSG峰值电流限制的柔性控制策略:兼顾平衡电流与功率控制切换的动态管理,电网不对称故障下VSG峰值电

    电网不对称故障下VSG峰值电流限制的柔性控制策略:实现电流平衡与功率容量的优化利用,电网不对称故障下VSG峰值电流限制的柔性控制策略:兼顾平衡电流与功率控制切换的动态管理,电网不对称故障下VSG峰值电流限制的柔性不平衡控制(文章完全复现)。 提出一种在不平衡运行条件下具有峰值电流限制的可变不平衡电流控制方法,可灵活地满足不同操作需求,包括电流平衡、有功或无功恒定运行(即电流控制、有功控制或无功控制之间的相互切),注入电流保持在安全值内,以更好的利用VSG功率容量。 关键词:VSG、平衡电流控制、有功功率控制、无功功率控制。 ,VSG; 峰值电流限制; 柔性不平衡控制; 电流平衡控制; 有功功率控制; 无功功率控制。,VSG柔性控制:在电网不对称故障下的峰值电流限制与平衡管理

    libpinyin-tools-0.9.93-4.el7.x64-86.rpm.tar.gz

    1、文件内容:libpinyin-tools-0.9.93-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libpinyin-tools-0.9.93-4.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    机器学习(预测模型):动漫《龙珠》相关的数据集

    数据集是一个以经典动漫《龙珠》为主题的多维度数据集,广泛应用于数据分析、机器学习和图像识别等领域。该数据集由多个来源整合而成,涵盖了角色信息、战斗力、剧情片段、台词以及角色图像等多个方面。数据集的核心内容包括: 角色信息:包含《龙珠》系列中的主要角色及其属性,如名称、种族、所属系列(如《龙珠》《龙珠Z》《龙珠超》等)、战斗力等级等。 图像数据:提供角色的图像资源,可用于图像分类和角色识别任务。这些图像来自动画剧集、漫画和相关衍生作品。 剧情与台词:部分数据集还包含角色在不同故事中的台词和剧情片段,可用于文本分析和自然语言处理任务。 战斗数据:记录角色在不同剧情中的战斗力变化和战斗历史,为研究角色成长和剧情发展提供支持。 数据集特点 多样性:数据集整合了角色、图像、文本等多种类型的数据,适用于多种研究场景。 深度:不仅包含角色的基本信息,还涵盖了角色的成长历程、技能描述和与其他角色的互动关系。 实用性:支持多种编程语言(如Python、R)的数据处理和分析,提供了详细的文档和示例代码。

    基于protues仿真的多功公交站播报系统设计(仿真图、源代码)

    基于protues仿真的多功公交站播报系统设计(仿真图、源代码) 该设计为基于protues仿真的多功公交站播报系统,实现温度显示、时间显示、和系统公交站播报功能; 具体功能如下: 1、系统使用51单片机为核心设计; 2、时钟芯片进行时间和日期显示; 3、温度传感器进行温度读取; 4、LCD12864液晶屏进行相关显示; 5、按键设置调节时间; 6、按键设置报站; 7、仿真图、源代码; 操作说明: 1、下行控制报站:首先按下(下行设置按键),(下行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 2、上行控制报站:首先按上(上行设置按键),(上行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 3、按下关闭播报按键,则关闭播报功能和清除显示

    基于微信小程序的琴房管理系统的设计与实现.zip

    采用Java后台技术和MySQL数据库,在前台界面为提升用户体验,使用Jquery、Ajax、CSS等技术进行布局。 系统包括两类用户:学生、管理员。 学生用户 学生用户只要实现了前台信息的查看,打开首页,查看网站介绍、琴房信息、在线留言、轮播图信息公告等,通过点击首页的菜单跳转到对应的功能页面菜单,包括网站首页、琴房信息、注册登录、个人中心、后台登录。 学生用户通过账户账号登录,登录后具有所有的操作权限,如果没有登录,不能在线预约。学生用户退出系统将注销个人的登录信息。 管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括轮播公告管理、老师学生信息管理和信息审核管理,管理员管理后点击退出,注销登录信息。 管理员用户具有在线交流的管理,琴房信息管理、琴房预约管理。 在线交流是对前台用户留言内容进行管理,删除留言信息,查看留言信息。

    界面GUI设计MATLAB教室人数统计.zip

    MATLAB可以用于开发人脸识别考勤系统。下面是一个简单的示例流程: 1. 数据采集:首先收集员工的人脸图像作为训练数据集。可以要求员工提供多张照片以获得更好的训练效果。 2. 图像预处理:使用MATLAB的图像处理工具对采集到的人脸图像进行预处理,例如灰度化、裁剪、缩放等操作。 3. 特征提取:利用MATLAB的人脸识别工具包,如Face Recognition Toolbox,对处理后的图像提取人脸特征,常用的方法包括主成分分析(PCA)和线性判别分析(LDA)等。 4. 训练模型:使用已提取的人脸特征数据集训练人脸识别模型,可以选择支持向量机(SVM)、卷积神经网络(CNN)等算法。 5. 考勤系统:在员工打卡时,将摄像头捕获的人脸图像输入到训练好的模型中进行识别,匹配员工信息并记录考勤数据。 6. 结果反馈:根据识别结果,可以自动生成考勤报表或者实时显示员工打卡情况。 以上只是一个简单的步骤,实际开发过程中需根据具体需求和系统规模进行定制和优化。MATLAB提供了丰富的图像处理和机器学习工具,是开发人脸识别考勤系统的一个很好选择。

    hjbvbnvhjhjg

    hjbvbnvhjhjg

    HCIP、软考相关学习PPT

    HCIP、软考相关学习PPT提供下载

    绿豆BOX UI8版:反编译版六个全新UI+最新后台直播管理源码

    绿豆BOX UI8版:反编译版六个全新UI+最新后台直播管理源码 最新绿豆BOX反编译版六个UI全新绿豆盒子UI8版本 最新后台支持直播管理 作为UI6的升级版,UI8不仅修复了前一版本中存在的一些BUG,还提供了6套不同的UI界面供用户选择,该版本有以下特色功能: 在线管理TVBOX解析 在线自定义TVBOX 首页布局批量添加会员信息 并支持导出批量生成卡密 并支持导出直播列表管理功能

Global site tag (gtag.js) - Google Analytics