主流のフレームワーク: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概述
- 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。
- Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供
了构建 Web 应用程序的全功能 MVC 模块。 - 使用 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、レンダリング結果が表示ブラウザに対応して、。