springMVC的基本介绍与入门

1:MVC是什么?

  • MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
  • Model(模型):数据模型,提高要展示的数据 现在一般是分为Value Object(数据Dao)和 服务层(行为Service)
  • View(视图):一般负责用户图形界面的展示
  • Controller(控制器):用来接受用户的请求 然后委托给Model进行处理 然后处理完毕交给View来展示 所以Controller一般是做为了个调度员

2:spring MVC是什么?

  • SpringMVC是基于java实现的MVC设计模型的请求驱动类型的轻量级web框架
  • SpringMVC 也是Spring家族的一员
  • MVC主要作用是降低视图与业务逻辑的耦合

3:为什么要使用spring MVC?

  • MVC对servlet进行了封装
  • spring mvc的本质也就是将业务逻辑处理和显示渲染分离开来,通过数据模块进行关联
  • 使用人数多,热门
  •  简单 , 便捷 , 易学 , 天生和Spring无缝集成
  • 支持支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等

4:spring MVC 的生命周期(流程图):

  流程图:springMVC的基本介绍与入门

 

 

 

  1:客户端发出请求到http里面只要符合web.xml里面的配置就转换到DispatcherServlet(前端控制器)来处理

  2:前端控制器请求HandlerMapping(处理器映射器)寻找 Handler

  3:处理器向DispatcherServlet(前端控制器)返回Handler(处理器)

  4:DispatcherServlet(前端处理器)调用处理器适配器去执行Handler

  5:Handler让具体的Controller执行。

  6:Handler执行完成给适配器返回 ModelAndView(存储处理完后的结果数据,以及显示该数据的视图包括:Model和view)

  7:ModelAndView将解析后的信息传递给DispatcherServlet(前端控制器),如解析控制器映射等

  8:DispatcherServlet调用视图解析器(ViewResolver)来解析ModelAndView传递的逻辑视图名。

  9:视图解析器将解析的逻辑视图名传给DispatcherServlet。

  10:DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图

  11:最终视图呈现给用户

  

 

    第一个程序:

    准备工作:先准备导入maven依赖 :

  <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
        </dependency>
        <!--J2EE-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <!--springframework-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.github.stefanbirkner</groupId>
            <artifactId>system-rules</artifactId>
            <version>1.16.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.9</version>
        </dependency>
        <!--其他需要的包-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

    然后创建一个web项目

    把tomcat给配置好 可以参考:

          tomcat从http://tomcat.apache.org/下载直接解压即可

          然后到idea里面配置tomcat环境可参考:https://blog.csdn.net/Grsu_M/article/details/109175915来配置

    第一步先配置web.xml文件:

<?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">
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!-- 启动顺序,数字越小,启动越早 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--所有请求都会被springmvc拦截 -->
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

  二:在资源目录下创建springmvc-servlet.xml(名字随意):

<?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
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理  这里的包名
    写什么就代表要扫描哪个包里面的注解-->
    <context:component-scan base-package="com.kuang.mvc"/>
    <!-- 让Spring MVC不处理静态资源 -->
    <mvc:default-servlet-handler />
    <mvc:annotation-driven />
    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>
</beans>        

      第三步:创建包里面的类:

//@Controller表示在tomcat启动的时候,把这个类作为一个控制器加载到Spring的Bean工厂
@Controller public class HelloServlet {
  //@RequestMapping除了可以使用请求URL映射外 还可以使用请求方法 请求参数和请求头映射请求
    @RequestMapping("/hello")
    public String sayHello(Model model){
        //向模型中添加属性msg与值,可以在JSP页面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");//表示向前台传送数据 用的是可以键值对的方式
//web-inf/jsp/hello.jsp return "hello"; }
      //下面这种是Restful风格 @RequestMapping("/test/{a}/{b}") public String test1(@PathVariable int a, @PathVariable int b, Model model){ int sum=a+b; //添加数据 model.addAttribute("msg","这数据为:"+sum); return "test"; } }

    第四步:在web下面创建一个jsp包包里创建一个hello.jsp文件

        因为我们在视图解析器里面加入了前缀和后缀 如果不想这样可以自己改:

      

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<!------ controller层控制跳转到showResume后,便可以直接通过el表达式 ${}获取到该值如下----->
${msg} </body> </html>

    第五步 开启tomcat:进入http://localhost:8080/r/hello

      或用Restful风格:http://localhost:8080/r/1/2

    完成!!!

 

                                小白学习MVC的第二天 写的一遍小笔记 以后会努力改进的!!!!

                                         点个赞吧!!!!!!!

 

上一篇:Google 开源 SageTV 光纤电视盒的相关软件


下一篇:2. SpringMVC组件解析