版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Struts2項目開發(fā)總結(jié)(注: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的結(jié)果集: 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)遍歷結(jié)果集:a href=newdetail2.action?nid=其中內(nèi)嵌ht
3、ml語言,除了value屬性外,還有可選屬性id= status=status,value屬性是必選的格式化日期顯示方法或者,只需要改變即可必須定義:Body體中引用:Struts2下拉菜單的使用屬性注解:name是給Struts2標簽取名字,這個也是提交到action并保存到對應(yīng)的數(shù)據(jù)庫中的字段名所必須得參數(shù);list是下拉選項數(shù)值;listKey是選項列表所對應(yīng)的id,listValue是選項列表每個字段的名稱;theme是自定義下拉框格式,headerkey是首選項的主鍵id,headerValue是首選項的字段名Struts使用日期控件:需要導(dǎo)入包:struts2-dojo-plugi
4、n-.jar在head體中加入:在body體中引用:屬性注解:name是給標簽取名,type為date日期類型,displayFormat格式化顯示日期,value是獲取時間值,value=%today是獲取當(dāng)前系統(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(, );/通過選擇復(fù)選框來實現(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(請輸入查詢關(guān)鍵字); 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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴陽職業(yè)技術(shù)學(xué)院《塑料成型工藝及模具設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025海南省安全員-B證考試題庫及答案
- 貴陽人文科技學(xué)院《汽車理論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年重慶建筑安全員考試題庫附答案
- 廣州應(yīng)用科技學(xué)院《近代材料研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學(xué)院《專業(yè)英語與文獻閱讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《材料科學(xué)基礎(chǔ)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年湖北建筑安全員知識題庫附答案
- 2025云南建筑安全員B證考試題庫
- 2025年山西省安全員《A證》考試題庫
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時用電安全技術(shù)標準
- 江西省2023-2024學(xué)年高二上學(xué)期期末教學(xué)檢測數(shù)學(xué)試題 附答案
- 2023-2024-1習(xí)思想學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 碳匯計量與監(jiān)測技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- 可用性控制程序
- GB/T 17554.1-2006識別卡測試方法第1部分:一般特性測試
- 說明書hid500系列變頻調(diào)速器使用說明書s1.1(1)
- 通達信-低位放量公式(已驗證)
- 第四章 船舶動力管路系統(tǒng)
- 太上正一天尊說鎮(zhèn)宅消災(zāi)龍虎妙經(jīng)
- 全球?qū)嶒炇覂x器耗材國際品牌簡介
評論
0/150
提交評論