Java Webの学習(3) - MVC

MVC 

 

A、MVCパターン

代表MVCモデル - ビュー - コントローラ(モデル - ビュー - コントローラ)パターン。

  • モデル:モデルは、DAO(データアクセスオブジェクトデータアクセスオブジェクト)またはPOJO(プレーン普通のJavaオブジェクトの通常のJavaBeans)を表しています。アプリケーションデータのアプリケーションロジックを処理する部分。
  • ビュー:ビューのデータの可視化。
  • コントローラー:ユーザーとの対話アプリケーションプロセスの一部。コントローラはモデルとビューに作用します。これは、データモデルオブジェクト、ビューを流れ、データの変更を更新し制御します。モデル・ビュー・コントローラを分離します。

 

二、 Model 2

JavaのWebアプリケーションの開発、2つの設計モデル、モデル1とモデル2があります。

モデル1は、JSPページの中心である、JSP、ページ表示からビジネス・ロジックを呼び出し、小さなアプリケーションの開発に適しています。
JSPビューとコントローラとして機能、JavaBeansはモデルとしての役割を果たす。

MVC方式に基づくモデル2は、ほぼすべての近代的なWebフレームワークは、すべてのモデル2の実装です。
JSP、サーブレットフィルタからのビューとして機能する、またはコントローラとして機能するように、JavaBeansは、モデルとして働きます。


コントローラへの各HTTPリクエストは、リクエストURIは、識別されたアクションに対応します。アプリケーションの代わりにアクションが操作を行うことができます。 
コントローラは、URIを解決し、適切なアクションを呼び出す、次にビューモデルにアクセスできる領域にオブジェクト。
最後に、ビューにするRequestDispatcher移す際にHttpServletResponse.sendRedirectの方法又はジャンプを使用してコントローラ。JSPページでは、データの表現言語とカスタムラベルを表示します。

 

 三、サーブレットコントローラ

@WebServlet(名= "ControllerServletの"、urlPatterns = { "/入力製品"、 "/ SAVE-製品" })
 パブリック クラス ControllerServletのが延びHttpServletを{ 

    プライベート 静的 最終 長いのserialVersionUID = 1579Lを

    @Override 
    公共 ボイドのdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答がスローにIOException、ServletExceptionが{ 
      工程(要求、応答); 
    } 

    @Override 
    公共 ボイドのdoPost(HttpServletRequestのリクエスト、HttpServletResponseの応答)がスローにIOException、ServletExceptionがを{ 
      プロセス(要求、応答); 
    }

     // インプットメソッド要求プロセスのすべてによって処理
    専用 空隙プロセス(HttpServletRequestのリクエスト、HttpServletResponseの応答)がスローにIOException、ServletExceptionがを{
      // 取得アクション 
      列URI = Request.getRequestURI(); // URI = / contextName / resourceNameのか/ resourceNameを
      int型 lastIndexの= uri.lastIndexOf( "/" ;)
      文字列のアクションを(lastIndexの+1を付けましたuri.substring = ;)

      // 転送URL 
      文字列dispatchUrl = ヌル; 

      // プロセスアクション
      IF( "製品-INPUT".equals(アクション)){ 
        dispatchUrlを = "/jsp/ProductForm.jsp" 
      } それ以外の 場合( "セーブ・製品" .equals(アクション)){
      // 创建模型 
        製品= 製品(); 
        product.setName(request.getParameter( "名前" )); 
        product.setDescription(request.getParameter( "説明" )); 
        product.setPrice(Integer.parseInt(request.getParameter( "価格" )));
        // 业务逻辑保存模型等 
        SaveProductAction saveProductAction = 新しい     SaveProductAction(); 
        saveProductAction.save(製品)
        アクセスの要求にモデルビューを追加する属性 
        request.setAttribute( "製品" 、プロダクトを); 

        dispatchUrl = "/jsp/ProductDetails.jsp" ; 
      } 
      // 前方
      IF(DispatchUrl =!ヌル){ 
        するRequestDispatcher RD = request.getRequestDispatcherを(dispatchUrl); 
        rd.forward(リクエスト、レスポンス); 
      } 
  } 
}                                                    
<% - ProductForm.jsp - %> 
< "セーブ・製品"フォームメソッド= "ポスト"アクション=> 
<H1>製品を追加</ H1> 
<ラベル> 
  の<span>製品名:</ span>の
  <入力ID = "名前"タイプ= "テキスト"名前= "名前"> 
</ 1abel> 
<ラベル> 
  の<span>説明:</ span>の
  <入力されたID = "記述"タイプ= "テキスト"名前= "説明"> 
</ label>は
<ラベル> 
  の<span>価格:</ label>は
  <入力されたID = "価格"名前= "価格"タイプ= "数"ステップ= "任意の"> 
</ label>は
<ラベル> 
  の<span>&NBSP :</ span>の
  <input type = "提出"> 
</ label>は
</ form>を

 

三、フィルターの販売代理店

@WebFilter(FILTERNAME = "DispatcherFilter"、urlPatterns = { "/ *" })
 パブリック クラス DispatcherFilter 実装フィルタ{ 
  @Override 
  公共 ボイドのinit(に、FilterConfigに、FilterConfig)スローServletExceptionが{} 
  @Override 
  公共 ボイドが破壊(){} 
  @Override 
  公共 ボイドdoFilter(のServletRequest要求たServletResponse応答れるFilterChainフィルターチェーン)がスローIOExceptionが、ServletExceptionが{ 
    HttpServletRequestのREQ = (HttpServletRequestの)要求。
    ストリングURI = req.getRequestURI()。
    // ...サーブレットコントローラと一致する
    IF(dispatchUrl =!ヌル){ 
      するRequestDispatcher RD = request.getRequestDispatcher(dispatchUrl); 
      rd.forward(リクエスト、レスポンス); 
    } {
      // フィルター媒体には、静的ターゲットを含みますすべてのURLアクションが沿って通過していきませんがあれば
      FilterChain.doFilter(要求、応答); 
    } 
  } 
}

おすすめ

転載: www.cnblogs.com/JL916/p/11831094.html