主流のフレームワーク:SpringMVC(1)SpringMVCの概要

A:3層アーキテクチャとMVC

1、3層アーキテクチャ:

プレゼンテーション層:私たちは、多くの場合、ウェブ層と言う、です。これは通常のWeb httpリクエストは、完全なHTTPレスポンスを受信する必要があるHTTPプロトコル要求Web層を使用して、クライアントクライアントに、応答結果をクライアント要求を受信する責任があります。表示および制御層を含むプレゼンテーション層は:制御層は要求を受信する責任があり、結果は、責任ある層を示しています。サービス層に依存してプレゼンテーション層は、受信したクライアント要求層は、一般的に、クライアントに応じて、業務サービス処理、および処理結果を呼び出します。MVCモデルを使用し、一般的にプレゼンテーション層を設計します。(MVC設計モデルは、プレゼンテーション層であり、他の層には関係ありません)

ビジネス層:私たちは、多くの場合、サービス層と言う、です。これは、ビジネス・ロジックの処理を担当しています。層のWebサービス層依存が、依存しないビジネス層のWeb層。あなたが必要なトランザクションの一貫性の永続データを確実にしたい場合は、ビジネス・プロセスにおけるビジネス層は、永続化層に依存してもよいです。(これは、トランザクションがコントロールへのサービス層に配置する必要があり、私たちが言う、です)

永続性:私たちは、多くの場合、DAO層を言い、です。データ層、すなわちデータベースとデータアクセス層を含む、データの永続性の原因で、データベースは、データの永続性キャリアであり、データアクセス層は、界面サービス層と永続化層の相互作用である、データアクセス層を介してビジネス層のニーズはにデータを持続しますデータベース。人気が話し、永続化層は、切除調査たら、データベースとデータベーステーブルをやり取りすることです。

3層アーキテクチャでSpringMVC位置
ここに画像を挿入説明

2、MVC

MVCフルネームは、モデルビューコントローラであるモデル(モデル) -ビュー(ビュー) -コントローラ(コントローラ)3つのほとんどの頭字語、Webアプリケーションのプレゼンテーション層を作成するための設計のためのモデルです。その職務の各部分でのMVC:

Model:数据模型,JavaBean的类,用来进行数据封装

View:指JSP、HTML用来展示数据给用户。

Controller:用来接收用户的请求,整个流程的控制器。用来进行数据校验等。

3、SpringMVC概述

  1. 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架
  2. Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供
    了构建 Web 应用程序的全功能 MVC 模块。
  3. 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的
    SpringMVC框架或集成其他MVC开发框架
    ,如Struts1(现在一般不用),Struts2等。

二:SpringMVC的入门案例

SpringMVC是基于Spring在web层开发,所以需要创建web-app工程。

1、DispatcherServlet

DispatcherServlet:前端控制器,也是整个SpringMVC的核心控制器,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

配置核心控制器 -一个Servlet

<!--  配置前端控制器-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

2、创建SpringMVC配置文件

SpringMVC是基于Spring开发,所以在配置文件中,仍然与Spring一致,并且加入xmlns:mvc,同时使用注解开发方便,还需加入xmlns:context

xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"

同时与Spring一样要 开启注解的支持<mvc:annotation-driven注解要扫描的包<context:component-scan

在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。

使用mvc:annotation-driven自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理适配器),可用在SpringMVC.xml配置文件中使用mvc:annotation-driven替代注解处理器和适配器的配置。

<!-- 开启springmvc框架注解的支持-->
<mvc:annotation-driven></mvc:annotation-driven>

<!-- 开启注解要扫描的包-->
<context:component-scan base-package="cn.itcast"></context:component-scan>

同时在核心控制器 DispatcherServlet 中加入 在应用加载时加载SpringMVC的配置文件contextConfigLocation

<!--  配置前端控制器-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>

  <!-- 启动服务器就创建springmvc配置文件-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

3、配置视图解析器InternalResourceViewResolver

View Resolver负责将处理结果生成View视图(jsp),View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

<!-- 试图的解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 找什么目录下的什么类型的文件-->
        <property name="prefix" value="/WEB-INF/pages/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

4、创建控制器并使用注解配置

@Controller表示这是个控制器
@RequestMapping注解作用: 用于建立请求URL和处理请求方法之间的对应关系。

例如在类中加入/user,在方法中加入/hello,则当url为项目名称/user/hello时就加载控制器

/**
 * 控制器类
 * @author Mango
 */
@Controller
@RequestMapping(path = "/user")
public class HelloController {

    @RequestMapping(path = "/hello")
    public String sayHello() {
        System.out.println("hellc StringMVC");
       //默认表示jsp文件名字
        return "success";
    }

    /**
     * RequestMapping注解
     * @return
     */
    @RequestMapping(path = "/testRequestMapping")
    public String testRequsetMapping() {
        System.out.println("测试 RequestMapping注解...");
        return "success";
    }
}

5、RequestMapping注解

属性:

value / path:用于指定请求的URL。它和path属性的作用是一样的。

method:用于指定请求的方式。例如 method=RequestMethod.POST。就只能以post请求

params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样。

例如: params = {“accountName”},表示请求参数必须有accountName

headers:用于指定限制请求消息头的条件。

6、入门案例的执行过程及原理分析

ここに画像を挿入説明

1、案例执行过程

1、服务器启动,应用被加载。读取到web.xml中的配置创建spring容器并且初始化容器中的对象

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <!--  配置前端控制器-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>

  <!-- 启动服务器就创建springmvc配置文件-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

図2に示すように、ブラウザが送信するDispatherServletが捕捉される要求を、処理要求は、サーブレットではなく、転送要求うち。パスを転送するとされ、リクエストURLに基づいて、マッチングコンテンツ@RequestMapping。

/**
 * 控制器类
 * @author Mango
 */
@Controller
@RequestMapping(path = "/user")
public class HelloController {

    @RequestMapping(path = "/hello")
    public String sayHello() {
        System.out.println("hellc StringMVC");

//        默认表示jsp文件名字
        return "success";
    }

    /**
     * RequestMapping注解
     * @return
     */
    @RequestMapping(path = "/testRequestMapping")
    public String testRequsetMapping() {
        System.out.println("测试 RequestMapping注解...");
        return "success";
    }
    
}

図3に示すように、対応するメソッドの実行にマッチします。このメソッドは、戻り値(例えば:成功)を持っています。

図4は、戻り値に応じて、対応する結果ビューを見つけるためInternalResourceViewResolver(しようとパーサ)を意味します
ここに画像を挿入説明
5、レンダリング結果が表示ブラウザに対応して、。

2、SpringMVC要求応答処理

ここに画像を挿入説明

公開された47元の記事 ウォン称賛18 ビュー4868

おすすめ

転載: blog.csdn.net/qq_43605085/article/details/100191114