SSM之springMVC(1/4)

上一节 SSM之mybatis(2/2)

目录

Springmvc框架

什么是springmvc

Mvc在b/s系统下的应用

Springmvc框架

基础环境准备

功能需求

开发环境

Web.xml

配置springmvc.xml

配置处理器适配器

配置Handler

配置处理器映射器

配置视图解析器

注解的处理器映射器和适配器

配置注解映射器和适配器

在spring容器中加载Handler


Springmvc框架

什么是springmvc

Springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

Springmvc是一个基于mvc的web框架。

Mvc在b/s系统下的应用

Mvc是一个设计模式,mvc在b/s系统下的应用:

Springmvc框架

步骤:

第一步:发起请求到前端控制器(dispatcherServlet)

第二步:前端控制器请求HandlerMapping查找Handler

    可以根据xml配置、注解进行查找

第三步:处理器映射器HandlerMapping向前端控制器返回Handler

第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler

第六步:Handler执行完成给适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

    ModelAndView是springmvc框架的一个底层对象,包括Model和view

第八步:前端控制器请求视图解析器去进行视图解析

    根据逻辑视图名解析成真正的视图(jsp)

第九步:视图解析器向前端控制器返回view

第十步:前端控制器进行视图渲染

    视图渲染将模型数据(在ModelAndView对象中)填充到request域

第十一步:前端控制器向用户响应结果

 

组件:

1、前端控制器dispatcherServlet(不需要程序员开发)

作用:接受请求、响应结果,相当于转发器,中央处理器

有了dispatcherServlet减少了其他组件之间的耦合性。

2、处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的url查找Handler

3、处理器适配器HandlerAdapter(不需要程序员开发)

作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

4、处理器Handler(需要程序员开发)

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去征求执行Handler

5、视图解析器View resolver(需要程序员开发)

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

6、视图view(需要程序员开发)

View是一个接口,实现类支持不同的view类型(jsp、freemarker、pdf…)

基础环境准备

功能需求

一个简单的商品列表查询。

开发环境

eclipse,java1.7或1.6,springmvc版本:5.0.3

org.springframework.web.servlet.DispatcherServlet(前端控制器)

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter(处理器适配器)

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping(处理器映射器)

org.springframework.web.servlet.handler.SimpleUrlHandlerMapping(处理器映射器)

org.springframework.web.servlet.view.InternalResourceViewResolver(视图解析器)

 

前端控制器: spring-webmvc-5.0.3.jar --> org.springframework.web.servlet

处理器适配器: spring-webmvc-5.0.3.jar -->  org.springframework.web.servlet.mvc

处理器映射器: spring-webmvc-5.0.3.jar --> org.springframework.web.servlet.handler

视图解析器: spring-webmvc-5.0.3.jar --> org.springframework.web.servlet.view

Web.xml

配置前端控制器

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- springMvc前端控制器配置 -->

    <servlet>

        <servlet-name>springmvc</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

        <!-- contextConfigLocation:指定springmvc配置的加载位置,如果不指定则默认加

               载WEB-INF/servlet名称—servlet.xml(springmvc-servlet.xml)

         -->

            <param-name>contextConfigLocation</param-name>

            <param-value>classpath:springmvc.xml</param-value>

        </init-param>

        <!-- load-on-startup:表示servlet随服务启动; -->

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>springmvc</servlet-name>

        <!--

              第一种:*.action 或者 *.do,访问以.action或*.do结尾 由DispatcherServlet进行解析

              第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析

              使用此种方式可以实现 RESTful风格的url

              第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,

              仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错。

       -->

        <url-pattern>*.action</url-pattern>

    </servlet-mapping>

    <!-- springMvc前端控制器配置 -->

   

    <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

</web-app>

配置springmvc.xml

配置处理器适配器

<!-- 配置处理器适配器 所有处理器适配器都实现HandlerAdapter接口 -->

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

通过查看源码,可知此适配器能执行实现Controller接口的handler。

配置Handler

<!-- 配置Handler -->

<bean id="itemsController"  name="/queryItems.action" class="com.springmvc.controller.ItemsController"/>

编写Handler在spring容器加载

配置处理器映射器

<!-- 配置处理器映射器

    将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url) -->

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

配置视图解析器

<!-- 视图解析器 -->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <!-- 配置jsp路径的前缀 -->

        <property name="prefix" value="/WEB-INF/jsp/"/>

        <!-- 配置jsp路径的后缀 -->

        <property name="suffix" value=".jsp"/>

    </bean>

注意:部署调试应该就Ok了,但是注意11步骤中的配置,如果配置了前缀和后缀,controller中的视图路径就不写前缀和后缀了,如果不配置,就写全名就可以了。

注解的处理器映射器和适配器

在spring3.1之前使用注解映射器:

org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

在spring3.1之后使用注解映射器;

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

 

在spring3.1之前使用注解适配器:

org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

 在spring3.1之后使用注解适配器:

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

配置注解映射器和适配器

<!-- 注解的映射器 -->

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

    <!-- 注解的适配器 -->

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置

        mvc:annotation-driven默认加载很多的参数绑定方法,

        比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter

        实际开发时使用mvc:annotation-driven

     -->

    <!-- <mvc:annotation-driven></mvc:annotation-driven> -->

在spring容器中加载Handler

<!-- 注解的映射器 -->

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

    <!-- 注解的适配器 -->

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置

        mvc:annotation-driven默认加载很多的参数绑定方法,

        比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter

        实际开发时使用mvc:annotation-driven

     -->

    <!-- <mvc:annotation-driven></mvc:annotation-driven> -->

下一节 SSM之springMVC(2/4)

猜你喜欢

转载自blog.csdn.net/qq_40802448/article/details/88585060