Spring MVCの二:M-V-Cはどこにありますか?

3623 ワード

Spring Web MVCはMVC設計モードに基づくウェブサービスの完全な枠組みを実現しました.この枠組みには多くの知識が含まれています.これらの知識点の間には密接な関係があります.そのためには、まず全体としてこの枠組みを紹介し、完璧なイメージを構築し、後続の学習のために下地を作る必要があります.
まずコード例を見ます.
@Controller
public class MyController {
	
	@AutoWired
	private PetRepository repository;

    @RequestMapping("/getPet")
    public ModelAndView getPet(HttpServletRequest request) {
        String petId = request.getParameter("petId");
    	 Pet pet = repository.getPet(petId);
        ModelAndView  mv = new ModelAndView(new PetView());
        mv.addObject("pet",pet);
        return mv;
    }
}
このコードは私たちがよく知っているところもあれば、見知らぬところもあります.分析してみます.
コントローラ
@Controller注釈は、あるクラスの声明を一つの 、すなわちMVCのC部分とする.本質的にはSpring Beanですが、Spring MVCに特別扱いされます.Request Mappingの表示方法は、プロセッサ方法であり、url patternをマッピングし、対応する処理ロジックを含みます.
ModelAndView
一般的に、handler方法は直接にクライアントに戻るデータをHttpServletReponseに書き込むわけではない(技術的には可能であるが).ModelAndViewオブジェクトを返します.ビューとモデルのプロパティを包んでいます.Spring MVCはこのModelAndViewの例を取って、次のステップでViewのレンダリングを実行できます.
表示
トラフィックモデルをビューと結合するために、Spring MVCは独立したビューレイヤを定義し、ビューのインターフェースはorg.springframework.web.servlet.Viewであり、このインターフェースを実現することで、新しいビュータイプを作成することができる.ビューはModel属性と結合しなければ意味がありません.そうでなければ、ビューは静的です.
モデル
handler方法はサービス・バーを使用して、業務ロジックを完成させる( PetRepository ).MVC設計モードから言えば、PetRepositoryはモデル層の一部です.しかし、Viewにとってはレンダリングが必要なモデルオブジェクト、すなわちPetのみに注目している.
ModelAndViewはModelオブジェクトとViewの例の包装器であり、handler方法はレンダリングされたモデルオブジェクトをmodel属性として追加する必要があります.
Handlerメソッドの変形
上の例のコードは実際のプロジェクトにはあまり現れないです.うるさいし、融通がきかないので、Spring MVCは多くの暗黙的な約束と便利な手段を提供して、開発者により簡潔で、より柔軟なコードを書くように協力します.しかし、本質的には、他の形のすべてのhandler方法は、この例示的なコードの変形体である.
次の列のいくつかのよくある変化の形:
  • @Request Param注釈は、Http要求のパラメータ
  • を抽出することができる.
    @RequestMapping("/getPet")
    public void getPet(@RequestParam("petId") String petId) {
    }
    
  • 私達はViewの例に戻る必要はありません.View Nameを返して、View Resolaverに渡して、
  • を解析します.
    @RequestMapping("/getPet")
    public String getPet(@RequestParam("petId") String petId) {
    	return "petView";
    }
    
  • @ResponseBodyはSpring MVCに教え、handler方法は直接http bodyオブジェクトに戻り、HttpMessage Coverterによって序列化され、Viewレンダリングプロセス
  • を歩かない.
    @RequestMapping("/getPet")
    @ResponseBody
    public Pet getPet(@RequestParam("petId") String petId) {
    	return repository.getPet(petId);
    }
    
    前後に分離してWebシステムの主流技術スタイルになった今日、最後のこのような形のhandler方法はかえって最もよく見られます.スピニングMVC設計の最初のものと予想されます.
    MVCコンフィグ
    SpringはMVCフレームの構成を許可します.例えば、上記のHttpMessage CoverterとView Resoloverはこの仕事の一番いい方法でWebMvcConfigurインターフェースを実現します.
    @Configuration
    @EnableWebMvc
    public class WebConfig implements WebMvcConfigurer {
    }
    
    上のWebConfigはWebMvcConfigrerを実現し、beanとして声明しています.EnbleWebMvcの注釈はこの機能をアクティブにして、Sping MVCにこのbeanを発見させて、そしてそれを呼び出してMVCを構成します.WebMvcConfigrerには多くの構成インターフェースが含まれています.集中的に説明しません.各技術テーマに分散して紹介します.
    もしSpring Bootを使ったら、自動的に@EnbaleWebMvc注釈を追加しました.追加する必要はありません.
    締め括りをつける
    この章では、MVCの設計モードがSpring Web MVCのフレームの中でどのように着地しているかを大体理解しました.
  • コントローラは、handler方法を含み、handler方法は、特定のURL要求を処理する.
  • handler方法は、処理結果に関するViewおよびmodelを返す.
  • Viewは、modelレンダリングに基づいてクライアントに返される.
  • 各環節において、Spring MVCは開発者に十分な機能と便利さを提供するために多くの技術的詳細があります.これらの技術は大体以下の種類に分けられます.
  • 特定のjavaタイプは、ModelAndView、Model、Viewなどの特定の意味があります.
  • は、注釈によってパラメータまたは方法の特定の意味を与え、例えば@Request Param;
  • デフォルトの約束は、例えば、handlerメソッドがViewまたはView Nameに戻らないとき、URLを通じて自動的にView Nameが生成される.
  • 後の章では、それぞれの技術点をテーマに説明しますが、Spring MVCは天然全体であり、一つの技術点が存在する理由は、他の技術点と協力するためです.ですから、私たちはいつもこの章で紹介されたSpring MVCの全体的な作業メカニズムを頭の中に残します.