版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Struts2項目開發(fā)總結(注:Struts2版本:Struts,數(shù)據(jù)庫:Oracle9i)所須架包:commons-logging-.jar、commons-fileupload-.jar 、freemarker-.jarognl-.jar、struts2-core-.jar 、xwork-.jar若在前臺頁面使用orgl表達式:必須定義: 使用:$requestScope.count來獲取session中的值2、在jsp頁面中顯示action中的數(shù)據(jù),不需要點擊鏈接到action再返回頁面中顯示數(shù)據(jù)第一步,寫一個action類第二步:配置struts.xml文件,如:/sort1.jsp/
2、error.jsp第三步:在sort1.jsp中遍歷action方法為sort5list的結果集: a href=sortnlist.action?ct_id= 第四步:在index.jsp中調(diào)用action為sort5list的方法Struts2超鏈接傳參方式:第一種:a href=newdetail2.action?nid=第二種:Newsquerynew最新文章第三種:直接使用即可 注意:Struts2超鏈接標簽中的href屬性是必選參數(shù),否則在項目整合中可能會出現(xiàn)不明的標簽異常。使用Struts2標簽循環(huán)遍歷結果集:a href=newdetail2.action?nid=其中內(nèi)嵌ht
3、ml語言,除了value屬性外,還有可選屬性id= status=status,value屬性是必選的格式化日期顯示方法或者,只需要改變即可必須定義:Body體中引用:Struts2下拉菜單的使用屬性注解:name是給Struts2標簽取名字,這個也是提交到action并保存到對應的數(shù)據(jù)庫中的字段名所必須得參數(shù);list是下拉選項數(shù)值;listKey是選項列表所對應的id,listValue是選項列表每個字段的名稱;theme是自定義下拉框格式,headerkey是首選項的主鍵id,headerValue是首選項的字段名Struts使用日期控件:需要導入包:struts2-dojo-plugi
4、n-.jar在head體中加入:在body體中引用:屬性注解:name是給標簽取名,type為date日期類型,displayFormat格式化顯示日期,value是獲取時間值,value=%today是獲取當前系統(tǒng)時間8、Struts2中form提交表單格式在form中加入theme=simple屬性,就不會受Struts2定義格式的影響9、使用屬性驅(qū)動取值在action中將要輸出的屬性生成get和set方法,并將返回值定義為返回對象,如:private String ntitle;/標題private String ncontent;/內(nèi)容private String ntime;/時間p
5、rivate String username;/發(fā)布人News news=ns.queryNnewsdetailsql2(nid);/返回一個對象public String getNtitle() return ntitle;public void setNtitle(String ntitle) this.ntitle = ntitle;public String getNcontent() return ncontent;public void setNcontent(String ncontent) this.ncontent = ncontent;public String getNt
6、ime() return ntime;public void setNtime(String ntime) this.ntime = ntime;public String getUsername() return username;public void setUsername(String username) this.username = username;由action直接跳轉(zhuǎn)到要顯示這些屬性詳細內(nèi)容的頁面在jsp中直接使用標簽取出即可使用模型驅(qū)動:查改新建action查詢文章類型:import javax.servlet.http.HttpServletRequest;import
7、org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.txxw.cms.news.model.Ctype;import com.txxw.cms.news.model.CtypeService;/* * author fejd E- * version 創(chuàng)建時間:May 22, 200
8、9 1:43:21 PM * 功能實現(xiàn):文章類型修改內(nèi)容查詢 */public class CtypeeditAction extends ActionSupport implements ModelDriven private Ctype ctype=new Ctype();/將封裝數(shù)據(jù)的ctype實現(xiàn)get和set方法Overridepublic String execute() throws Exception / TODO Auto-generated method stubHttpServletRequest request=ServletActionContext.getReque
9、st();int ct_id=Integer.parseInt(request.getParameter(ct_id).replace(, );/通過選擇復選框來實現(xiàn)單個文章類型修改CtypeService cs=new CtypeService();Ctype ctype=cs.editctypesql(ct_id);this.setCtype(ctype);return success;public Object getModel() / TODO Auto-generated method stubreturn null;public Ctype getCtype() return ct
10、ype;public void setCtype(Ctype ctype) this.ctype = ctype;Editctypesql()方法如下:public Ctype editctypesql(int ct_id) throws IOExceptiondbcon=new DBConnection();con=dbcon.getCon();Ctype cty=null;List ctylist=new ArrayList();try psta=con.prepareStatement(this.getEditCtypesql(ct_id);psta.setInt(1, ct_id);r
11、s=psta.executeQuery();while(rs.next()cty=new Ctype();cty.setCt_id(rs.getInt(ct_id);cty.setCt_name(rs.getString(ct_name);cty.setCt_sid(rs.getString(ct_sid);/數(shù)據(jù)類型Clob轉(zhuǎn)換String類型START/try oracle.sql.CLOB clob=(oracle.sql.CLOB)rs.getClob(ct_introduction);/數(shù)據(jù)庫中存文本的CLOB型字段名 String ct_introduction=clob.getS
12、ubString(long)1,(int)clob.length();/subString是截取字符串(從1截到length)if(clob=null|ct_introduction=null|ct_introduction=)return null;cty.setCt_introduction(ct_introduction);System.out.println(ct_introduction); /try catch(Exception e)logger.debug(數(shù)據(jù)類型Clob轉(zhuǎn)換String類型出現(xiàn)異常);(數(shù)據(jù)類型Clob轉(zhuǎn)換String類型出現(xiàn)異常);e.printStack
13、Trace(); /數(shù)據(jù)類型Clob轉(zhuǎn)換String類型END/cty.setCt_image(rs.getString(ct_image);ctylist.add(cty); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return cty;public String getEditCtypesql(int ct_id) this.editCtypesql=select *from system.ctype where ct_id=?;return editCtypesql;publi
14、c void setEditCtypesql(String editCtypesql) this.editCtypesql = editCtypesql;注明:上述方法中涉及到Oracle數(shù)據(jù)類型Clob轉(zhuǎn)換成String類型問題在jsp中使用即可取出ctype中的數(shù)據(jù)。10、Struts2+ajax實現(xiàn)批量刪除,批量更新操作全選: checkAll()不選: checkAllNo()反選: swichAll()批量刪除: deletenews()批量更新:display1news() function checkAll() var obj=document.getElementsByName
15、(nid); for(i=0;iobj.length;i+) obji.checked=true; function checkAllNo() var obj=document.getElementsByName(nid); for(i=0;iobj.length;i+) obji.checked=false; function switchAll() var obj=document.getElementsByName(nid); for(i=0;iobj.length;i+) obji.checked =! obji.checked; function vals(input1,input2
16、) var temp=; var objForm = document.formsinput1; var objLen = objForm.length; for (var iCount = 0; iCount objLen; iCount+) if (objForm.elementsiCount.type = checkbox) if(objForm.elementsiCount.checked=true&objForm.elementsiCount.nid!=allSelected&objForm.elementsiCount.nid!=allConcled) temp=temp+objF
17、orm.elementsiCount.value+,; / objForm.elementsiCount.checked = true; return temp; function deletenews() var nid=vals(form1,this) if(nid=) alert(你沒有選中內(nèi)容); return false; else if(confirm(你確定要刪除選中的內(nèi)容嗎+?+nid) var url=delete.action?nid=+nid; window.location.href=url; function display1news()var nid=vals(fo
18、rm1,this)if(nid=)alert(你沒有選中內(nèi)容);return false;elseif(confirm(你確定要顯示選中的內(nèi)容嗎+?+nid)var url=display1news.action?nid=+nid;window.location.href=url;11、控制Struts2 提交表單樣式 function sub() document.form.submit(); 12、ajax前臺驗證(一部分) function check() if(document.getElementById(ct_name).value=) alert(請輸入欄目名稱!); retur
19、n false; document.form.submit(); function check() if(document.getElementById(ntitle).value=) alert(請輸入文章標題!); return false; if(document.getElementById(nprovider).value=) alert(請輸入供稿人!); return false; if(document.getElementById(ntelephone).value=) alert(請輸入聯(lián)系電話!); return false; var partten1 = /13,5d9
20、$/; var partten2 = /0(1,2d)|(3-9d2)d8$/; if(partten1.test(document.getElementById(ntelephone).value)=false&partten2.test(document.getElementById(ntelephone).value)=false) alert(請檢查您輸入的聯(lián)系電話格式); return false; if(document.getElementById(email).value=) alert(請輸入Email!); return false; var zz=/w+(-w+)|(.w
21、+)*A-Za-z0-9+(.|-)A-Za-z0-9+)*.A-Za-z0-9+$/; if(zz.test(document.getElementById(email).value)=false) alert(請輸入正確格式的Email.); return false; document.form.submit(); function check() if(document.getElementById(nt).value=) alert(請輸入查詢關鍵字); return false; document.getElementById(form2).submit(); 按標題:查詢刪除13
22、、Struts2+Oracle9i數(shù)據(jù)庫分頁第一步:新建分頁的公共接口:FenYeDaopublic interface FenYeDao public int count(int ct_id);/帶有參數(shù)第二步:實現(xiàn)接口方法(從數(shù)據(jù)庫中獲取數(shù)據(jù)的總行數(shù)):FenYeServicepublic int count(int ct_id) int intRowCount = 0;/總行數(shù) String sql= null ; ResultSet rs = null ; dbcon=new DBConnection(); con=dbcon.getCon(); sql = select nid,nt
23、itle,ntime, ntype from system.news a where a.ntype =(select ct_id from system.ctype c where c.ct_id=?)order by nid asc;/Sql語句可自定義 try psta=con.prepareStatement(sql); psta.setInt(1, ct_id); rs =psta.executeQuery(); while( rs.next() /游標指向第一行 intRowCount+=1;/取得總行數(shù) catch(Exception e) System.out.println(
24、e) ; return intRowCount; 第三步:新建action類:SortNewsListActionimport java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensym
25、phony.xwork2.ModelDriven;import com.txxw.cms.news.model.News;import com.txxw.cms.news.model.NewsService;public class SortNewsListAction extends ActionSupport implements ModelDriven private int ct_id;/分頁需要的參數(shù)private String ntype;/文章類型private List sortclist;/文章類型列表private List sortnlist;/文章所有列表private
26、 News news;/文章對象private int pageNow = 1 ; /初始化為1,默認從第一頁開始顯示 private int pageSize = 8 ; /每頁顯示8條記錄 private int k;/儲存最大頁面數(shù) private int i;/從第i條查詢數(shù)據(jù) private int intRowCount;/總行數(shù) private int intPageCount;/總頁數(shù) private NewsService ns=new NewsService();Overridepublic String execute() throws Exception / TODO
27、Auto-generated method stubHttpServletRequest request=ServletActionContext.getRequest();if(request.getParameter(pageNow)!=null)trypageNow=Integer.parseInt(request.getParameter(pageNow);catch (Exception ex)pageNow=1;if(request.getParameter(ct_id)!=null)ct_id=Integer.parseInt(request.getParameter(ct_id
28、);sortclist=ns.sortclist(ct_id); /文章類型列表intRowCount=ns.count(ct_id); /獲取匹配條件文章的總條數(shù)k = (intRowCount+pageSize-1) / pageSize;/計算出總頁數(shù)/翻頁控制START/if(pageNow = k)pageNow = k;if(pageNow=0)pageNow=1;/翻頁控制END/i=pageNow*pageSizeSize;/每頁要顯示文章的條數(shù)sortnlist=ns.sortnlist(i, pageSize,ct_id);/獲取文章列表return success;pub
29、lic Object getModel() / TODO Auto-generated method stubreturn null;public List getSortnlist() return sortnlist;public void setSortnlist(List sortnlist) this.sortnlist = sortnlist;public int getCt_id() return ct_id;public void setCt_id(int ct_id) this.ct_id = ct_id;public String getNtype() return nty
30、pe;public void setNtype(String ntype) this.ntype = ntype;public News getNews() return news;public void setNews(News news) this.news = news;public List getSortclist() return sortclist;public void setSortclist(List sortclist) this.sortclist = sortclist;public int getPageNow() return pageNow;public voi
31、d setPageNow(int pageNow) this.pageNow = pageNow;public int getPageSize() return pageSize;public void setPageSize(int pageSize) this.pageSize = pageSize;public int getK() return k;public void setK(int k) this.k = k;public int getI() return i;public void setI(int i) this.i = i;public int getIntRowCou
32、nt() return intRowCount;public void setIntRowCount(int intRowCount) RowCount = intRowCount;public int getIntPageCount() return intPageCount;public void setIntPageCount(int intPageCount) PageCount = intPageCount;第四步:在model層中實現(xiàn)方法NewsService獲取文章類型列表方法Sortclist()public List sortclist(int ct_id)dbcon=new
33、 DBConnection();con=dbcon.getCon();List sortclist=new ArrayList();try psta=con.prepareStatement(this.getSortclistSql();psta.setInt(1, ct_id);rs=psta.executeQuery();while(rs.next()Ctype ctype=new Ctype();ctype.setCt_id(rs.getInt(ct_id);ctype.setCt_name(rs.getString(ct_name);ctype.setCt_image(rs.getSt
34、ring(ct_image);sortclist.add(ctype); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return sortclist;分類文章列表顯示方法Sortnlist()public List sortnlist(int i, int pageSize,int ct_id)dbcon=new DBConnection();con=dbcon.getCon();List sortnlist=new ArrayList();try pstac=con.prepareStatement(this.getQueryCctypesql();rsc=pstac.executeQuery();String ntype=new String1000;while(rsc.next()ntype(int)rsc.getInt(ct_id)=rsc.getString(ct_name);rsc.close();pstac.clo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版綠色建筑房地產(chǎn)轉(zhuǎn)讓合同補充協(xié)議3篇
- 二零二五年教育培訓機構教師聘用合同書3篇
- 二零二五年度特色農(nóng)產(chǎn)品黃牛養(yǎng)殖購銷合同3篇
- 二零二五年融資租賃合同規(guī)范本2篇
- 二零二五版?zhèn)€人房產(chǎn)抵押借款擔保合同3篇
- 二零二五年度食堂廚房設計咨詢與服務合同2篇
- 二零二五版LOGO知識產(chǎn)權授權與品牌戰(zhàn)略規(guī)劃合同3篇
- 二零二五版糧食進出口貿(mào)易代理合同示范文本3篇
- 二零二五版服務器租賃與數(shù)據(jù)同步服務合同3篇
- 二零二五年度高速鐵路建設用聚乙烯管材管件采購合同3篇
- 2025年度土地經(jīng)營權流轉(zhuǎn)合同補充條款范本
- 南通市2025屆高三第一次調(diào)研測試(一模)地理試卷(含答案 )
- Python試題庫(附參考答案)
- 聚酯合成副反應介紹
- DB37-T 1342-2021平原水庫工程設計規(guī)范
- 電除顫教學課件
- 廣東省藥品電子交易平臺結算門戶系統(tǒng)會員操作手冊
- DB32T 3960-2020 抗水性自修復穩(wěn)定土基層施工技術規(guī)范
- 大斷面隧道設計技術基本原理
- 41某31層框架結構住宅預算書工程概算表
- 成都市國土資源局關于加強國有建設用地土地用途變更和
評論
0/150
提交評論