一,MVC 概述

MVC:模型,视图,控制器,是一种软件设计规范,本质是将业务逻辑,数据,显示,分离的方式来编写代码;前后端分离

Model:数据模型,提供要展示的数据,一般我们都会把这两个分离开来。数据Dao,服务层Service
View:负责进行数据的渲染和展示,客户端想要看到的东西
Controller:接收用户请求,交给Model处理,从Model更新后的数据或者结果,返回给前端

1,Model1

在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1

Model1的弊端

  • JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起
  • 要求开发者不仅要掌握 Java ,还要有高超的前端水平
  • 前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试
  • 代码难以复用

2,Model2

因为Model1的种种弊端,所以很快这种方式就被 Servlet + JSP + Java Bean 所替代了,首先用户的请求会到达 Servlet,然后根据请求调用相应的 Java Bean,并把所有的显示结果交给 JSP 去完成,这样的模式我们就称为 MVC 模式

controller(控制器)

  • 取得表单的数据

  • 调用业务的逻辑方法

  • 转向指定的页面

Model(模型)

  • Dao:操作数据库
  • Service:业务逻辑
  • 保存数据的更新状态

View(视图)

  • 网页, JSP,用来展示模型中的数据

二,SpringMVC 架构

SpringMVC 是 Spring的一部分,是基于Java实现的MVC的轻量级Web框架

SpringMVC优点

  • 趋势,使用的人多

  • 简单,易学,轻量级

  • 高效,基于请求和响应的MVC框架

  • 约定优于配置

  • 功能强大:RestFul,数据验证,格式化,主题,本地化,异常处理......

三,Hello SpringMVC

1,创建一个Maven项目

2,导入相关架包

 1 <dependencies>
2 <!--junit包单元测试-->
3 <dependency>
4 <groupId>junit</groupId>
5 <artifactId>junit</artifactId>
6 <version>4.11</version>
7 <scope>test</scope>
8 </dependency>
9
10 <!-- Spring MVC 及 Spring系列包 -->
11 <dependency>
12 <groupId>org.springframework</groupId>
13 <artifactId>spring-webmvc</artifactId>
14 <version>4.3.24.RELEASE</version>
15 </dependency>
16
17 <!--Servlet核心-->
18 <dependency>
19 <groupId>javax.servlet</groupId>
20 <artifactId>javax.servlet-api</artifactId>
21 <version>4.0.1</version>
22 </dependency>
23
24 <!-- JSTL -->
25 <dependency>
26 <groupId>javax.servlet</groupId>
27 <artifactId>jstl</artifactId>
28 <version>1.2</version>
29 </dependency>
30 </dependencies>
31
32 <build>
33 <!--解决资源导出问题-->
34 <resources>
35 <resource>
36 <directory>src/main/java</directory>
37 <includes>
38 <include>**/*.properties</include>
39 <include>**/*.xml</include>
40 </includes>
41 <filtering>false</filtering>
42 </resource>
43 <resource>
44 <directory>src/main/resources</directory>
45 <includes>
46 <include>**/*.properties</include>
47 <include>**/*.xml</include>
48 </includes>
49 <filtering>false</filtering>
50 </resource>
51 </resources>
52 </build>

3,配置web.xml,注册DispatcherServlet

映射路径为 /   【不要用/*,会404】

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
6 id="WebApp_ID" version="3.0">
7
8 <!--1.注册DispatcherServlet-->
9 <servlet>
10 <servlet-name>SpringMVC</servlet-name>
11 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
12
13 <!--2.关联SpringMVC配置文件-->
14 <init-param>
15 <param-name>contextConfigLocation</param-name>
16 <param-value>classpath:springmvc-servlet.xml</param-value>
17 </init-param>
18
19 <!--3.这个东西要和服务器一起启动-->
20 <load-on-startup>1</load-on-startup>
21 </servlet>
22
23 <servlet-mapping>
24 <servlet-name>SpringMVC</servlet-name>
25 <url-pattern>/</url-pattern>
26 </servlet-mapping>
27
28 </web-app>

4,配置springMVC的配置文件

在resources下创建springmvc-config.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:mvc="http://www.springframework.org/schema/mvc"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="
7 http://www.springframework.org/schema/beans
8 https://www.springframework.org/schema/beans/spring-beans.xsd
9 http://www.springframework.org/schema/context
10 https://www.springframework.org/schema/context/spring-context.xsd
11 http://www.springframework.org/schema/mvc
12 https://www.springframework.org/schema/mvc/spring-mvc.xsd">
13
14 <!--扫描指定包下的注解,让指定的类能够被IOC容器管理-->
15 <context:component-scan base-package="com.shandx.controller"/>
16
17 <!--静态资源过滤-->
18 <mvc:default-servlet-handler/>
19
20 <!--MVC注解驱动-->
21 <mvc:annotation-driven/>
22
23 <!--视图解析器-->
24 <bean id="InternalResourceViewResolver"
25 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
26 <!-- 前缀 -->
27 <property name="prefix" value="/WEB-INF/"/>
28 <!-- 后缀 -->
29 <property name="suffix" value=".jsp"/>
30 </bean>
31 </beans>

5,编写Controller类

 1 //@Controller是为了让Spring IOC容器初始化时自动扫描到
2 @Controller
3 public class HelloWorldController {
4
5 //请求映射("路径")
6 @RequestMapping("/hello")
7 public String hi(Model model){
8 model.addAttribute("msg","Hello,SpringMVC");
9
10 //方法返回的结果是视图的名称hello
11 // 加上配置文件中的前后缀变成WEB-INF/hello.jsp。
12 return "hello"; //WEB-INF/jsp/hello.jsp
13 }
14 }

6,编写视图层

注意视图的位置,要和视图解析器对应 web-inf / jsp,可以通过EL表示取出Model中存放的值

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 <html>
3 <head>
4 <title>SpringMVC</title>
5 </head>
6 <body>
7
8 ${msg}
9
10 </body>
11 </html>

7,启动Tomcat进行测试

配置Tomcat

测试结果

四, 项目结构

SpringMVC(1):SpringMVC入门的更多相关文章

  1. Spring-MVC开发步骤(入门配置)

    Spring-MVC开发步骤(入门配置) Step1.导包 spring-webmvc Step2.添加spring配置文件 Step3.配置DispatcherServlet 在web.xml中: ...

  2. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  3. springmvc(一) springmvc框架原理分析和简单入门程序

    springmvc这个框架真的非常简单,感觉比struts2还更简单,好好沉淀下来学习~ --WH 一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解 ...

  4. SpringMVC由浅入深day01_7入门程序小结

    7 入门程序小结 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法. 前端控制器配置: 处理器映射器: 非注解处理器映射器(了解) 注解的处理器映射器(掌握) ...

  5. SpringMVC由浅入深day01_2springmvc入门程序

    2 入门程序 2.1 需求 以案例作为驱动. springmvc和mybaits使用一个案例(商品订单管理). 功能需求:商品列表查询 2.2 环境准备 数据库环境:mysql5.5 先导入sql_t ...

  6. springMVC第一天——入门、整合与参数绑定

    大纲摘要: 1.Springmvc介绍 2.入门程序 3.Springmvc架构讲解 a) 框架结构 b) 组件说明 4.Springmvc整合mybatis 5.参数绑定 乱码问题解决 a) Spr ...

  7. springMVC的一些入门配置

    1.springMVC的描述 1.1.SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架. 1.2.SpringMVC的作用是实现页面和后 ...

  8. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_05.入门程序之入门代码编写

    先把默认的index.jsp删掉.默认的index.jsp没有jsp的声明 ok webapp文件夹下new一个 起名叫做index.新建的页面有jsp的头 创建控制器类 java下新建一个class ...

  9. springmvc(一)springmvc简介与入门程序

    springmvc概括: Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱 ...

  10. 【SpringMVC】SpringMVC 入门

    SpringMVC 入门 文章源码 SpringMVC 基本概念 在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发.在 B/S 架构中,系统标准的三层架构包括:表现层.业务层.持久层. 表 ...

随机推荐

  1. ucharts tooltip弹窗自定义换行

    这个东西吧,也许是因为菜,看了3小时,下面给出解决方案 1. 找到源码下面的这个文件 2. 增加绿色方框中的代码 3.组件调用的时候有一个opts属性 :opts="{ extra: { t ...

  2. Linux ns 4. UTS Namespace 详解

    目录 1. 使用简介 1.1 hostname 1.2 domainname 1.3 uname 2. 代码分析 2.1 copy_utsname() 2.2 sethostname() 2.3 ge ...

  3. c++学习笔记(四)

    动态内存分配 使用new分配内存 1.指针的用处是在运行阶段分配未命名的内存以储存值. 2.在此情况下,只能通过指针来访问内存. int *ptr_int=new int;//在内存阶段为一个int值 ...

  4. Python基础(API接口测试)

    import flask,json,pymysql from flask import request, jsonify, Response from datetime import datetime ...

  5. Mac 下安装 MySQL 步骤

    安装 MySQL Mac 下安装MySQL推荐去官网下载dmg 版本的,我使用的版本是5.7.30. 如上图所示. 之后就是傻瓜式一键狂点不过需要注意的是,不要关闭下图所示的框框!不要关闭下图所示的框 ...

  6. SpringCloud微服务实战——搭建企业级开发框架(十七):Sentinel+Nacos配置持久化

      Sentinel Dashboard中添加的规则是存储在内存中的,我们的微服务或者Sentinel一重启规则就丢失了,现在我们将Sentinel规则持久化配置到Nacos中,在Nacos中添加规则 ...

  7. 印象最深的一个bug:sessionStorage缓存在移动端失效

    无bug,不程序:作为程序员的我,不是修bug就是在写bug的路上. 移动端sessionStorage缓存失效是我"印象最深的一个bug"之一,为啥呢,因为这个问题导致我加班到很 ...

  8. [bzoj1305]跳舞

    考虑如果没有k个人,那么就是裸的二分答案+最大流对于这k个人,再在原来的每一个点裂点,中间的流量为k,然后裂出来的点向所有不能匹配的点连边,再二分答案+最大流即可 1 #include<bits ...

  9. SpringCloud升级之路2020.0.x版-45. 实现公共日志记录

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们这一节在前面实现的带有链路信息的 Publisher 的工厂的基础上,实现公共日志记录 ...

  10. 常见 js 数组方法使用详解

    数组常用方法总结 concat filter map some every reduce sort includes join some every 语法:array.every(function(c ...