Spring MVC 编程基础

1.Spring MVC概述

1.1 企业级应用基本框架

企业级引用中的软件的分层的基本架构(参考阿里里巴巴开发手册)

说明:分层架构的本质是分而治之,已达到分解问题复杂性的目的,从而更好的进行设计与实现。

1.2 Web MVC架构及分析

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

基于servlet,jsp,javabean技术实现的MVC架构,具体架构图如下:

1.3 Spring MVC 架构及分析

Spring MVC是MVC架构模式的一种完美实现,它简化了Java WEB 中基于MVC架构的编程过程,是Spring中的WEB应用模块。

Spring MVC 底层核心架构图及工作流程。

Spring MVC 中的核心组件:

  1. DispatcherServlet (前端控制器, 处理请求的入口)
  2. HandlerMapping (映射器对象, 用于管理url与对应controller的映射关系)
  3. Interceptors(拦截器,实现请求响应的共性处理)
  4. Controller (后端控制器, 负责处理请求的控制逻辑)
  5. ViewResolver(视图解析器,解析对应的视图关系:前缀+view+后缀)

备注:假如希望了解Spring MVC的详细处理流程可以基于断点调试法进行跟踪。

2.2 Spring MVC 编程基础 

2.1Spring MVC 编程基本步骤

 

Step01:创建maven web 项目并解决项目中的错误问题

Step02:添加Spring MVC项目核心依赖

Step03:配置Spring MVC项目核心组件

Step04:创建Spring MVC 后端控制器及页面

Step05:部署及测试spring mvc 项目应用。

 

Step01:创建maven web项目

项目名 CGB-SPRING-MVC-01

Web项目打包方式为war方式

Step02:配置maven web项目

生成web.xml(项目视图)

Web项目的target runtimes为tomcat

Web 项目的编译版本为JDK1.8

添加Spring MVC项目依赖

2.2.2 添加Spring MVC配置文件并进行基本配置

在项目的resources的目录中添加核心配置文件(例如spring-configs.xml)并进行基本配置

<?xml version="1.0" encoding="UTF-8"?>
<beans default-lazy-init="true"
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="  
       http://www.springframework.org/schema/beans   
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd  
       http://www.springframework.org/schema/mvc   
       http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd   
       http://www.springframework.org/schema/tx   
       http://www.springframework.org/schema/tx/spring-tx-4.3.xsd   
       http://www.springframework.org/schema/aop 
       http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
       http://www.springframework.org/schema/util 
       http://www.springframework.org/schema/util/spring-util-4.3.xsd
       http://www.springframework.org/schema/data/jpa 
       http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.3.xsd" >
<!--配置组件扫描 -->
<context:component-scan base-package="com.jt"/>
<!—启用MVC默认配置 (@RequestMapping) -->
<mvc:annotation-driven/>
<!-- 配置视图解析器 -->
<bean  id="viewResolver"   class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/pages/"/>
     <property name="suffix" value=".jsp"/>
</bean>

       
</beans>

说明:配置文件的名字可以自己指定。 

2.2.3 配置Spring MVC前端控制器

打开web.xml,配置DispatcherServlet对象

<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:spring-configs.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
     <servlet-name>dispatcherServlet</servlet-name>
     <url-pattern>*.do</url-pattern>
  </servlet-mapping>

前端控制器是spring mvc处理请求的入口,是springmvc的核心,这个控制器一般需要在服务器启动时即初始化。

其中

  1. load-on-startup 表示启动时则加载此servlet,数字越小优先级越高.
  2. init-param 中的参数名不能变(此名字在DispatcherServlet父类中定义) 

2.2.4 创建并配置Spring MVC后端控制器

编写Spring MVC后端控制器

@Controller
@RequestMapping("/")
public class HelloController{
	@RequestMapping("doSayHello")
	public ModelAndView doSayHello() {
		ModelAndView mv=new ModelAndView("hello");
		mv.addObject("message", "helloworld");
		return mv;
	}
}

 

其中:

1)通过@RequestMapping注解定义url到controller具体方法的映射,这个映射信息会被存储,一般是存储到一个HandlerMapping对象中.

2)ModelAndView对象为一个模型与视图对象,内置一个map对象,主要用于封装业务数据和视图名。

3)ModelAndView构造方法中传递的为视图名,addObject方法可以以key/value形式存储数据。

4)ModelAndView 对象返回时会被spring mvc自动存储到请求作用域,在对应的视图页面可以直接从此作用域获取对应的值。 

2.2.5 创建JSP页面对象

在项目的WEB-INF/pages文件夹下创建hello.jsp文件,然后设置其内容,例如:

<body>
   <h1>${message}</h1>
</body>
…

说明:WEB-INF目录下的资源不能允许通过浏览器地址栏直接访问。 

2.2.6 部署并运行项目以及请求响应流程分析

将项目部署到tomcat,然后启动运行,在地址栏输入具体url访问对应controller对象。

Tomcat 启动及对象加载流程分析:

项目的请求处理流程结构及过程解析:

 

 

Step01:客户端向服务服务端发请求

Step02:服务端对请求信息进行过滤(Filter)

Step03:请求到达前端控制DispatcherServlet

Step04:前端控制器基于url在HandlerMapping中的映射找请求执行链

Step05:执行执行链中的拦截器(Interceptor)方法

Step06:执行执行链中的控制器(Controller)方法

Step07:对象控制层返回的视图进行解析

Step08:向客户端返回一个响应结果。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值