SpringMVC入门第一篇

三层架构

  • 表现层:web层,用来和客户端进行数据交互的。表现层一般采用MVC的设计模式
  • 业务层:处理具体的业务逻辑
  • 持久层:用来操作数据库

MVC模型

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

SpringMVC的概述

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

SpringMVC在三层架构中的位置

  表现层

SpringMVC入门案例

  • 将index.jsp 页面的内容更改为

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>入门程序</title> </head> <body> ​ <%--超链接--%> ​ <h3>入门</h3> ​ <a href="/Springmvc.do" >springmvc入门</a> ​ </body> </html>

  • 创建一个maven的工程,引入对应的依赖坐标
     1 <!-- 版本锁定 -->
     2     <properties>
     3         <spring.version>5.0.2.RELEASE</spring.version>
     4     </properties>
     5     
     6     <dependencies>
     7         <dependency>
     8             <groupId>org.springframework</groupId>
     9             <artifactId>spring-context</artifactId>
    10             <version>${spring.version}</version>
    11         </dependency>
    12 ​
    13         <dependency>
    14             <groupId>org.springframework</groupId>
    15             <artifactId>spring-web</artifactId>
    16             <version>${spring.version}</version>
    17         </dependency>
    18 ​
    19         <dependency>
    20             <groupId>org.springframework</groupId>
    21             <artifactId>spring-webmvc</artifactId>
    22             <version>${spring.version}</version>
    23         </dependency>
    24 ​
    25         <dependency>
    26             <groupId>javax.servlet</groupId>
    27             <artifactId>servlet-api</artifactId>
    28             <version>2.5</version>
    29             <scope>provided</scope>
    30         </dependency>
    31 ​
    32         <dependency>
    33             <groupId>javax.servlet.jsp</groupId>
    34             <artifactId>jsp-api</artifactId>
    35             <version>2.0</version>
    36             <scope>provided</scope>
    37         </dependency>
    38     </dependencies>
  • 在新建一个successful.jsp 页面
  • 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2 <html>
    3 <head>
    4     <title>Springmvc successful</title>
    5 </head>
    6 <body>
    7     <h2>springmvc successful</h2>
    8 </body>
    9 </html>

     

  • 编写一个Controller类和方法
     1 package zh.stuspringmvc;
     2 
     3 import org.springframework.stereotype.Controller;
     4 import org.springframework.web.bind.annotation.RequestMapping;
     5 
     6 //把当前的类交给ioc容器管理
     7 @Controller
     8 public class SpringMVCController {
     9 
    10 //    配置映射的配置
    11     @RequestMapping(path="/Springmvc.do")
    12     public String hello(){
    13 
    14 //        跳转的jsp页面,默认使用的是请求转发
    15 //        返回到successful界面
    16          return "/WEB-INF/pages/successful";
    17     }
    18 }

     

  • 配置核心的控制器(配置DispatcherServlet)
     1 <!DOCTYPE web-app PUBLIC
     2  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     3  "http://java.sun.com/dtd/web-app_2_3.dtd" >
     4 
     5 <web-app>
     6   <display-name>Archetype Created Web Application</display-name>
     7 
     8   <!--配置前端控制器-->
     9   <servlet>
    10     <servlet-name>dispatcherServlet</servlet-name>
    11     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    12     <!--加载springmvc.xml配置文件,配置的是Spring配置-->
    13     <init-param>
    14       <param-name>contextConfigLocation</param-name>
    15       <param-value>classpath:springmvc.xml</param-value>
    16     </init-param>
    17     <!--配置启动加载-->
    18     <load-on-startup>1</load-on-startup>
    19   </servlet>
    20   <!--<url-pattern>*.do</url-pattern>
    21       只处理以.do结尾的请求
    22       如果是 "/" 表示:处理所有的请求
    23   -->
    24   <servlet-mapping>
    25     <servlet-name>dispatcherServlet</servlet-name>
    26     <url-pattern>*.do</url-pattern>
    27   </servlet-mapping>
    28 </web-app>

   在web.xml中配置文件的核心控制器

  • 在resource目录下配置springmvc.xml的配置文件
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:mvc="http://www.springframework.org/schema/mvc"
     4        xmlns:context="http://www.springframework.org/schema/context"
     5        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     6        xsi:schemaLocation="
     7         http://www.springframework.org/schema/beans
     8         http://www.springframework.org/schema/beans/spring-beans.xsd
     9         http://www.springframework.org/schema/mvc
    10         http://www.springframework.org/schema/mvc/spring-mvc.xsd
    11         http://www.springframework.org/schema/context
    12         http://www.springframework.org/schema/context/spring-context.xsd">
    13 
    14     <!--配置创建Spring容器创建的时候要扫描的包-->
    15     <context:component-scan base-package="zh.stuspringmvc"></context:component-scan>
    16 
    17     <!--配置试图解析器-->
    18     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    19         <property name="prefix" value="/WEB-INF/pages/"></property>
    20         <property name="suffix" value="*.jsp"></property>
    21     </bean>
    22 
    23     <!--配置Spring开启注解mvc的支持
    24     <mvc:annotation-driven></mvc:annotation-driven>-->
    25 </beans>

最后启动配置过的tomcat进行测试即可

过程分析

  •  启动Tomcat服务器的时候,因为创建了load-on-startup标签,所以会创建DispatcherServlet的对象,所以会加载resource目录下的springmvc.xml文件。
  • 在springmvc.xml中开启了注解扫描,Controller的对象就会被加载
  • 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据注解@RequestMapping找到具体的执行方法
  • 根据方法的返回值,在springmvc.xml文件中配置的视图解析器,查找指定的jsp文件
  • Tomcat服务器渲染页面,给出相应的响应。
posted @ 2020-02-15 09:58  白天黑天阴天  阅读(167)  评论(0编辑  收藏  举报