开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序。
使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构
a.表现层: WEB层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型
b.业务层:处理公司具体的业务逻辑的
c.持久层:用来操作数据库的

MVC全名是Model View Controller模型视图控制器,每个部分各司其职。.
1,Model:数据模型,JavaBean的类,用来进行数据封装。
2.View:指JSP、HTML用来展示数据给用户
3.Controller:用来接收用户的请求,整个流程的控制器。用来进行数据校验等。

1,什么是Spring MVC?

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。SpringMVC在三层架构中的位置:表现层框架。

主要功能:在获取多个参数、文件上传、servlet功能单一方面能有很好的解决方法。

2,Spring MVC的特点

➢是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。
➢灵活性强,易于与其他框架集成。
➢提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。
➢可自动绑定用户输入,并能正确的转换数据类型。
➢内置了常见的校验器,可以校验用户输入,如果校验不能通过,那么就会重定向到输入表单。
➢支持国际化。可以根据用户区域显示多国语言。
➢支持多种视图技术。它支持JSP、Velocity和FreeMarker等 视图技术。
➢使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。

3,Spring MVC第一个程序

  • 导入jar包
  • 在web.xml中,配置Spring MVC的前端控制器DispatcherServlet。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <!-- 配置编码过滤器 -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <!--<filter-class>con2.filters.EncodingFilter</filter-class>-->
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 配置springMVC的核心控制器 -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!-- 配置servlet启动时加载对象 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
        <!--特别注意-->
    </servlet-mapping>

</web-app>
  • 在src下配置springmvc配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd 
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 1)包扫描-->
    <context:component-scan base-package="con1.controller"  use-default-filters="false">
       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>      
     </context:component-scan>  
    
    <!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/pages/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
   
    <!--注解驱动-->
    <mvc:annotation-driven />
    <!--<mvc:annotation-driven conversion-service="conversionService" />-->

    <!--配置类型转换器-->
    <!--<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.itheima.util.DateConverter" />
            </set>
        </property>
    </bean>-->
</beans>
  • 创建controller类
@Controller
public class HelloController {
    @RequestMapping(path="/hello")
    public String sayHello(Model model) {
        System.out.println("Hello SpringMVC!!");  
   }
}

配置tomcat运行项目

在控制台会输出:

springmvc版本区别_MVC

4,SpringMVC重要组件

springmvc版本区别_spring_02

  1. spring mvc请所有的请求都提交给Di spatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
  2. Di spatcherServlet查询一个 或多个HandlerMapping,找到处理请求的Controller.
  3. Di spatcherServlet请请求提交到目标Controller
  4. Control ler进行业务逻辑处理后,会返回一个Mode lAndView
  5. Dispathcher查询–个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
  6. 视图对象负责渲染返回给客户端

5,Spring MVC的工作流程

springmvc版本区别_xml_03

  • 用户通过浏览器向服务器发送请求,请求会被SpringMVC的前端控制器DispatcherServlet所拦截;
  • DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器;
  • 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并 返回给DispatcherServlet;
  • DispatcherServlet会通过返回信息选择合适的HandlerAdapter (处理器适配器) ;
  • HandlerAdapter会调用并执行Handler (处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器;
  • Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名;
  • HandlerAdapter将ModelAndView对象返回给DispatcherServlet;
  • DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器) ;
  • ViewReslover解析后,会向DispatcherServlet中返回具体的View (视图)
  • DispatcherServlet对View进行渲染( 即将模型数据填充至视图中) ;
  • 视图渲染结果会返回给客户端浏览器显示。