近年ではSpringMVCの開発は比較的急速である、彼の利点はゆっくりと現れており、さらに多くの企業がSpringMVC代替SSHフレームワークを必要とし、最終的にそれらのSpringMVC差があり、それは作るのですか?
何SpringMVCフレームワーク?
スプリングフレームワークは、高度に設定可能であり、複数のビューの技術、例えばのJavaServer Pages(JSP)技術、速度、タイル、iTextの、及びPOI。あなたが選択したビューをカスタマイズすることができますので、Spring MVCのフレームワークは、使用の見解を知りません。Spring MVCの分離コントローラ、モデルオブジェクトと同様に、ディスパッチャ役割ハンドラオブジェクト、このような分離は、カスタマイズしやすいようにします。
SpringMVCは、その実装完全に私は春が一番だと思うのMVCを知りたい初心者や人々のためのバリエーションやMVCフレームワークのシステムに基づいていない典型的な教科書のMVCフレームワークではなく、支柱などであります教科書です!それは純粋なサーブレットシステムであるように、第2及びタペストリー、これはそれとタペストリーが比較され、支柱は、利点を持っていません。フレームとコード自体、及びそれが理解しやすいようです。
何SSH2フレームワーク?
4層からの責任のシステムフレームワークにSSH:ヘルプの開発者へのプレゼンテーション層、ビジネスロジック、データの永続化層とドメイン層モジュールは、短期的には明確な構造を構築し、優れた再利用性も、Webアプリケーションを維持しやすいです。ジャンプへのビジネスの制御、MVC、Strutsフレームワークのモデル部分の分離を担当する、システム全体のインフラとしてのStrutsを使用して、使用Hibernateフレームワークは、永続化層のためのサポートを提供し、春には管理、経営ストラットを行い、休止状態。具体的には:オブジェクト指向分析法のニーズに基づいて、いくつかのモデルを作り、これらのモデルは、次に基本的なDAOを書き込むオブジェクト基本的なJavaとして実装するインターフェイスを(データアクセスオブジェクト)、およびDAO Hibernateの実装を与える、Hibernateフレームワークを使用することは、達成しますDAOクラスのJavaクラスとデータベースへのアクセスとの間の変換を実施し、最終的に春によって管理、管理ストラットを行い、休止状態にします。
SpringMVCとSSHの比較:
支柱の機能のより包括的なパッケージ、比較的独特の使用。近いネイティブサーブレット、高い柔軟性にspringmvc。しかし、また、コントローラは、単一のspringmvcの実施形態、およびフィルターの無い多数、Struts2のよりも優れた性能であるため。
もう一つのポイントは、春には、SQL文の元の生態を実行するために使用される独自のJdbcTemplate、持っているということです。
以下のような:
。1
2
3
4
5。
@Transactional
クリック(文字列ID){整数公共
jdbcTemplate.update(ID "UPDATEのSETのCOUNT = COUNT +コンテンツ1 WHERE ID =?");
WHERE ID =コンテンツから復帰jdbcTemplate.queryForInt(「SELECT COUNT ?」、ID);
}
SSHは、操作がオブジェクトである、データベースHibernateマッピングデータを操作するために使用されます。
以下のような:
。1
2
。3
。4
公共ボイドクリック(ユーザ){
//更新(ユーザ);
保存(ユーザ);
}
休止元々 JDBCベースのパッケージ、これより速い操作対象より確実に元のエコSQLの実行効率に比べ。
注:あなたはHibernateの機能を実現するために春を使用したい場合は、パッケージを親友することができます
以下のような:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
公衆T保存(Tエンティティ){
フィールド[] declaredFields = entityClass.getDeclaredFields()。
文字列PK = "";
(F分野:declaredFields)用{
ブールannotationPresent = f.isAnnotationPresent(Id.class)。
IF(annotationPresent){
PK = f.getName()。
ブレーク;
}
}
もし(StringUtils.isBlank(PK)){
方法[] declaredMethods = entityClass.getDeclaredMethods()。
(方法方法:declaredMethods)用{
ブールannotationPresent = method.isAnnotationPresent(Id.class)。
(annotationPresent){場合
。Stringフィールド= method.getName()を置き換える( "GET"、 "");
//首字母转小写
PK = field.replace(field.charAt(0)、(CHAR)(field.charAt(0)+32))。
ブレーク;
}
}
}
マップの<string、オブジェクト>マップ= EntityToMapUtil.convertEntityToMap(エンティティ)
オブジェクトpkvalue = map.get(PK)。
IF(pkvalue = NULL && StringUtils.isNotBlank(pkvalue.toString())!){
更新(MAP、PK)。
エンティティを返します。
}
SimpleJdbcInsert simpleJdbcInsert =新しいSimpleJdbcInsert(jdbcTemplate)。
キーホルダーキーホルダー= simpleJdbcInsert.withTableName(テーブル())
//.usingColumns(new文字列[keySet.size()])
.usingGeneratedKeyColumns(PK)
.executeAndReturnKeyHolder(マップ)
試す{
BeanUtils.setProperty(エンティティ、PK、keyHolder.getKeys()値())。
}キャッチ(例外e){
e.printStackTrace();
ヌルを返します。
}
エンティティを返します。
}
公共ボイド挿入(MAPマップ、文字列... PKS){
セットの<string>列= map.keySet()。
用(文字列PK:PKS){
IF(columns.contains(PK))
columns.remove(PK)。
}
SimpleJdbcInsert simpleJdbcInsert =新しいSimpleJdbcInsert(jdbcTemplate)。
キーホルダー= simpleJdbcInsert.withTableName Aキーホルダー(表())
.usingColumns(columns.toArray(新しい新しいString [columns.size()]))
.usingGeneratedKeyColumns(PKS)
.executeAndReturnKeyHolder(MAP);
}
元のオブジェクトの反射特性を得るために使用されます、その後、対応するデータベースフィールド、そして最終的にSQL文を綴った、気持ちが効率に非常に大きな影響はありません。
現在同社は、SpringMVCベースのフレームワークを行うために使用されているが、休止状態を統合していません。最新バージョンはまた、あなたが直接対応するJSONまたはXMLを返すことができ、SpringMVC RestFullをサポートしています。
以下のようなコード:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RestController
@RequestMapping( "パブリック")
パブリッククラスCommonController {
@Autowired
プライベートContentService contentService。
( "ViewClick")@RequestMapping
パブリック文字列をクリック(HttpServletRequestのリクエスト、RequestParam文字列ID @){
int型のクリック= 0。
(本){同期
クリック= contentService.click(ID)。
}
戻り"のdocument.write( ' "+クリック+"')"。
1
阅读(<スクリプトSRC = "../パブリック/ ViewClick?ID = $ {content.id}"> </ SCRIPT>)
----------------
免責事項:この記事は、元の記事」webin」CSDNブロガーで、CC 4.0 BY-SAの著作権契約書に従って、元のソースのリンクと、この文を添付してください、再現。 。
オリジナルリンクします。https://blog.csdn.net/swebin/article/details/52583718