Struts2のCRUD

1、関連の依存関係へ:ストラット、カスタムタグライブラリ

コンフィギュレーションのpom.xml

<プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0"のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" 
  のxsi:schemaLocationの= "のhttp:/ /maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> 
  <modelVersion> 4.0.0 </ modelVersion> 
  <groupIdを> COM </ groupIdを> 
  <たartifactId> strtus </たartifactId> 
  <パッケージ>戦争</梱包> 
  <バージョン> 0.0.1-SNAPSHOT </バージョン> 
  <名前> strtusのMavenのWebapp </名前> 
  <URL> http://maven.apache.org </ URL > 
   <依存性> 
        <依存性> 
            <のgroupId> JUnitの</のgroupId> 
            <たartifactId> JUnitの</たartifactId>
            <バージョン> 4.12 </バージョン> 
            <スコープ>テスト</スコープ> 
        </依存>

        <依存> 
            <groupIdを> mysqlの</ groupIdを> 
            <たartifactId>のmysql-コネクタ-javaの</たartifactId> 
            <バージョン> 5.1.44 </バージョン> 
        </依存関係> 

        <依存> 
            <groupIdを>のjavax.servlet </ groupIdを> 
            <たartifactId>のjavax.servlet-API </たartifactId> 
            <バージョン> 4.0.1 </バージョン> 
            <範囲> </スコープ>提供
        </依存> 
        <依存性> 
            <groupIdを>のjavax.servlet </のgroupId> 
            <たartifactId> javax.servlet-API </たartifactId> 
            <バージョン> 4.0.1 </バージョン> 
            <スコープ>提供</スコープ> 
        </依存> 
        <依存性> 
             <のgroupId> org.apache.struts </のgroupId> 
             <たartifactId> Struts2のコア</たartifactId> 
             <バージョン> 2.5.16 </バージョン> 
        </依存> 
        <依存性> 
            <のgroupId> JSTL </のgroupId> 
            <たartifactId> JSTL </たartifactId> 
            <バージョン> 1.2 </バージョン> 
        </依存> 
        <依存性> 
            <のgroupId>タグライブラリ</のgroupId> 
            <たartifactId>標準</たartifactId> 
            <バージョン> 1.1.2 </バージョン> 
        < /依存関係> 
        <依存>
            <のgroupId> org.apache.tomcat </のgroupId> 
            <たartifactId> Tomcatの-JSP-API </たartifactId>apache.tomcat </ groupIdを> 
            <バージョン> 8.0.47 </バージョン> 
        </依存関係>
        
    </依存関係> 
  <構築> 
   <finalName>ストラット</ finalName> 
        <プラグイン> 
            <プラグイン> 
                <groupIdを> org.apache.maven.plugins </ groupIdを> 
                <たartifactId>のmaven-コンパイラプラグイン</たartifactId> 
                <バージョン> 3.7.0 </バージョン> 
                <構成> 
                    <ソース> 1.8 </ソース> 
                    <ターゲット> 1.8 </ターゲット> 
                    <コード> UTF-8 </エンコーディング> 
                </構成> 
            </プラグイン> 
        </プラグイン> 
  </ビルド> 
</プロジェクト>

  ページング:

;パッケージcom.util 

インポートjava.util.Map; 

インポートのjavax.servlet.http.HttpServletRequest; 

publicクラスPageBean { 

	プライベートページは= INT 1; P // 
	プライベートint型の列= 10; //行数/ページ・サイズが
	プライベートint型の合計= 0; //の合計数を記録

	//デフォルトのページング;プライベートブールのページネーション=真の

	プライベート文字列のURLを; //リクエスト取り組む
	民間地図<文字列を、文字列[] >なparameterMap; リクエストの//すべてのパラメータ

	公共PageBean (){ 
		スーパー(); 
	} 

	/ ** 
	 *ページングBeanを初期化する
	 * 
	 * @paramリクエスト
	 * / 
	公共ボイドのSetRequest(HttpServletRequestの要求){ 
		//共通パラメータ
		this.setPage(request.getParameter( "ページ") );
		this.setRows(request.getParameter( "行")); 
		this.setPagination(request.getParameter( "改ページ")); 

		//请求地址和请求参数
		this.setUrl(request.getContextPath()+ request.getServletPath())。
		this.setParameterMap(request.getParameterMap())。
	} 

	パブリック文字列のgetURL(){ 
		戻り先URL。
	} 

	公共ボイドてsetURL(文字列のURL){ 
		this.url = URL。
	} 

	パブリックマップ<文字列、文字列[]> getParameterMapは(){ 
		なparameterMapを返します。
	} 

	公共ボイドsetParameterMap(MAP <文字列、文字列[]>なparameterMap){ 
		this.parameterMap =なparameterMap。
	} 

	公共INT GETPAGE(){ 
		戻りページ。
	}
 
	公共ボイドsetPageで(INTページ){ 
		this.page =ページ。 
	} 

	ます。public void setPageで(文字列のページを){ 
		場合(ヌル=ページは&& ""等しい(page.trim())!!。){ 
			this.page = Integer.parseInt(ページ)。
		} 
	} 

	パブリックINT GETROWS(){ 
		戻り行。
	} 

	(行INT)公共ボイドsetRows { 
		this.rowsの=行。
	} 

	公共ボイドsetRows(文字列){ 
		IF(ヌル=行&& ""に等しい(rows.trim())!。){ 
			this.rows = Integer.parseInt(行)。
		} 
	} 

	パブリックINT getTotal(){ 
		合計を返します。
	} 

	公共ボイドsetTotal(INT合計){ 
		this.total =総。
	}

	公共ボイドsetTotal(文字列の合計){ 
		NEXTPAGEを返します。
		this.total = Integer.parseInt(合計)。
	} 

	パブリックブールisPagination(){ 
		ページネーションを返します。
	} 

	公共ボイドsetPagination(ブールページネーション){ 
		this.pagination =ページネーション。
	} 

	公共ボイドsetPagination(文字列の改ページ){ 
		IF( "偽" .equals(ページネーション)){ 
			this.pagination = FALSE; 
		} 
	} 

	/ ** 
	 *下一页
	 * 
	 * @return 
	 * / 
	パブリックINT getNextPage(){ 
		int型NEXTPAGE =ページ+ 1。
		IF(NEXTPAGE> this.getMaxPage()){ 
			NEXTPAGE = this.getMaxPage()。
		} 
	} 

	/ ** 
	 *上一页
	 * 
	 * @return 
	 * / 
	パブリックINT getPreviousPage(){ 
		int型previousPage =ページ- 1。
		IF(previousPage <1){ 
			previousPage = 1。
		} 
		previousPageを返します。
	} 

	/ ** 
	 *最大页码
	 * 
	 * @return 
	 * / 
	パブリックINT getMaxPage(){ 
		== 0総%の行を返しますか?合計/行:合計/行+ 1。
	} 

	/ ** 
	 *起始记录的下标
	 * 
	 * @return 
	 * / 
	パブリックINT getStartIndex(){ 
		リターン(ページ- 1)*行。
	} 

	@Override 
	パブリック文字列のtoString(){ 
		"PageBean [ページ=" +ページ+ "行=" +行+ "合計=" +合計+ "ページネーション="を返します
	} 

}

  Dao层:

ClazzDao

パッケージcom.dao。

輸入はjava.util.List; 

輸入com.entity.Clazz。
輸入com.util.BaseDao。
輸入com.util.PageBean。
輸入com.util.StringUtils。

パブリッククラスClazzDaoが延びるBaseDao <Clazz> { 
	パブリックリスト<Clazz>リストは(Clazz CLZ、PageBean pageBean)ないInstantiationException、IllegalAccessExceptionがが{スロー
		文字列のSQL = "t_strtus_class SELECT * FROM"。
		文字列CNAME = clz.getCname()。
		IF(StringUtils.isNotBlank(CNAME)){ 
			" " '+ CNAME +%' %等とCNAME"" SQL + =。
		} 
	 戻りsuper.executeQuery(SQL、pageBean、Clazz.class)。
		
	}  
	 公共のint型の追加(Clazzのclazz)ないNoSuchFieldException、SecurityExceptionが、はIllegalArgumentExceptionをスローします
	        文字列のSQLは= "(????、、、)t_struts_class値挿入します"。
	        super.executeupdate(SQL、新しいString [] { "CID"、 "CNAME"、 "cteacher"、 "PIC"}、clazz)を返します。
	    } 
	    公共INTデル(Clazzのclazz)ないNoSuchFieldExceptionは、SecurityException、はIllegalArgumentException、IllegalAccessExceptionが{スロー
	        文字列のSQL = "CID = t_struts_classから削除しますか?"。
	        super.executeupdate(SQL、新しいString [] { "CID"}、clazz)を返します。
	    } 
	    パブリックINT編集(Clazzのclazz)を持たないNoSuchFieldExceptionは、SecurityException、はIllegalArgumentException、IllegalAccessExceptionをスロー{ 
	        文字列のSQLが= "アップデートはCNAME =?cteacher =?PIC =設定t_struts_class?"。
	        戻りsuper.executeupdate(SQL、新しいString []は{ "CNAME"、 "cteacher"、 "PIC"、 "CID"}、clazz)。

} 
}

  フロントデスクに戻ってデータを呼び出すウェブ層

パッケージcom.web。

輸入ます。java.sql.SQLException; 
輸入はjava.util.List; 

輸入com.dao.ClazzDao。
輸入com.entity.Clazz。
輸入com.util.BaseAction。
輸入com.util.PageBean。
輸入com.opensymphony.xwork2.ModelDriven。

パブリッククラスClazzActionが延びるBaseActionはModelDriven <Clazz> {実装

    プライベートClazzのCLZ =新しいClazz()。
    プライベートClazzDao clzDao =新しいClazzDao(); 
    パブリック文字列リスト(){ 
        PageBean pageBean =新しいPageBean()。
        pageBean.setRequest(リクエスト)。
        {試す
            一覧<Clazz>リスト= this.clzDao.list(CLZ、pageBean)。
            request.setAttribute( "clzList"、リスト)。
            request.setAttribute( "pageBean"、pageBean)。
        }キャッチ(ないInstantiationException | IllegalAccessExceptionが|のSQLException E){ 
            // TODO自動生成キャッチブロック
            e.printStackTrace(); 
        } 
        リターン「リスト」。
        
    } 
    / ** 
     *跳转编辑页面
     * @return 
     * / 
    パブリック文字列preSave(){ 
        場合(clz.getCid()!= 0){ 
            しようと{ 
                this.result = this.clzDao.list(CLZ、ヌル)に.get (0)。
                
            }キャッチ(ないInstantiationException | IllegalAccessExceptionが|のSQLException E){
    } 
                // TODO自動生成キャッチブロック
                e.printStackTrace();
            } 
        } 
        "preSave"を返します。
        
    公共の文字列の追加(){ 
        {しようと
            this.code = this.clzDao.add(CLZ)。
        }キャッチ(持たないNoSuchFieldException |に、SecurityException |はIllegalArgumentException | IllegalAccessExceptionが
                |のSQLException E){ 
            // TODO自動生成キャッチブロック
            e.printStackTrace(); 
        } 
        リターン「ToListメソッド」。
        
    } 
    パブリック文字列の編集(){ 
        試み{ 
            this.clzDao.edit(CLZ)。
        }キャッチ(持たないNoSuchFieldException |に、SecurityException |はIllegalArgumentException | IllegalAccessExceptionが
                |のSQLException E){
            // TODO自動生成されたcatchブロックの
            e.printStackTrace(); 
        } 
        リターン「ToListメソッド」。
        
    } 
    パブリック文字列デル(){ 
        {試します 
            this.clzDao.del(CLZ)。
        }キャッチ(持たないNoSuchFieldException |に、SecurityException |はIllegalArgumentException | IllegalAccessExceptionが
                |のSQLException E){ 
            // TODO自動生成キャッチブロック
            e.printStackTrace(); 
        } 
        リターン「ToListメソッド」。
        
    } 

    @Override 
    公共Clazz getModel(){ 
        // TODO自動生成方法スタブ
        戻りCLZ。
    } 
}

  strtus-sy.xmlの設定

<?xml version = "1.0"エンコード= "UTF-8"?> 
<DOCTYPEがPUBLIC支柱!
    " - // Apache Software Foundationの// DTD Strutsの設定2.5 // EN" 
    「http://struts.apache.org/ DTD /ストラット-2.5.dtd "> 
<ストラット> 
    <パッケージ名=" SY」延び= "ベース"> 
    
    <アクション名= "/ clz_ *"クラス= "com.web.ClazzAction" METHOD = "{1}" > 
      <結果名= "リスト"> / clzList.jsp </結果> 
      <結果名= "preSave"> /のedit.jsp </結果> 
      <結果名= "ToListメソッド"タイプ= "redirectAction"> / clz_list </結果> 
    </アクション> 
    </パッケージ> 
</ストラット>

  JSP

clzList.jsp

<%@ページ言語= "javaの" contentTypeの= "text / htmlの;のcharset = UTF-8" 
    pageEncodingは= "UTF-8" %> 
<%の@タグライブラリの接頭辞= "C"のuri = "のhttp://java.sun .COM / JSP / JSTL /コア"%> 
<%@ taglibの接頭辞=" Z "のuri = "/ lingerqi" %> 
<DOCTYPE用HTML PUBLIC! " - // W3C // DTD HTML 4.01移行// EN"" HTTP ://www.w3.org/TR/html4/loose.dtd "> 
<HTML> 
<HEAD> 
<META HTTP-当量=" Content-Typeの」コンテンツ= "text / htmlの;のcharset = UTF-8"> 
<タイトル>ここで挿入タイトル</ TITLE> 
</ HEAD> 
<BODY> 
    <H2>小说目录</ H2> 
    <BR> 

    <フォームアクション= "$ {pageContext.request。contextPath} /sy/clz_list.action」 
        METHOD = "POST"> 
    <a href="${pageContext.request.contextPath}/sy/clz_preSave.action">增加する</a> 
        书名:の<input type = "text"の名= "BNAME">の<input type = "提出" 
            値= "确定">
    </フォーム> 
                    HREF = "$ {pageContext.request.contextPath} / SY / clz_preSave。  アクション?CID = $ {b.cid} 「> </a>の変更
                    <A
    <テーブル境界= "1"幅= "100%"> 
        <TR> 
            <TD>编号</ TD> 
            <TD>班级名称</ TD> 
            <TD>老师</ TD> 
            <TD>班级图片</ TD > 
        </ TR> 
        <C:のforeachアイテム= "$ {clzList}" VAR = "B"> 
            <TR> 
                <TD> $ {b.cid} </ TD> 
                <TD> $ {b.cname} </ TD> 
                <TD> $ {b.cteacher} </ TD> 
                <TD> $ {b.pic} </ TD> 
                <TD> <
                    <a画像アップロードする</a> 
                    HREF = "$ {pageContext.request.contextPath} /sy/clz_del.action?cid = $ {b.cid}">删除</a>の  
                    <a 
                </td> 
            </ TR> 
        </ C:forEachの> 
    < / TABLE> 
    <Z:ページpageBean = "$ {pageBean}"> </ Z:ページ> 
</ body> 
</ HTML>

  edit.jsp

<%@ページ言語= "javaの" contentTypeの= "text / htmlの;のcharset = UTF-8" 
    pageEncodingは = "UTF-8" %> 
<DOCTYPE用HTML PUBLIC「 - // W3C // DTD HTML 4.01移行// EN! " "http://www.w3.org/TR/html4/loose.dtd"> 
<HTML> 
<HEAD> 
<META HTTP-当量=" Content-Typeの"コンテンツ=" text / htmlの;のcharset = UTF-8 "> 
<タイトル>ここで挿入タイトル</ TITLE> 
</ HEAD> 
<BODY> 
<フォームアクション=" $ {pageContext.request.contextPath} $ {result.cname == nullの'/sy/clz_add.action'?: '/sy/clz_edit.action'}」METHOD = "POST"> 
   CID:の<input type = "text"の値= "$ {result.cid}" NAME = "CID"> <BR> 
   CNAME:の<input type = "text"の値= "$ {result.cname}" NAME = "CNAME"> <BR> 
  cteacher。<input type = "text"の値= "$ {result.cteacher}" NAME = "cteacher"> <BR> 
   の<input type =値= "OK" "送信"> 
</ FORM> 
</ BODY> 
</ HTML >

おすすめ

転載: www.cnblogs.com/omji0030/p/11267082.html