首页 > 其他分享 >SpringMVC基础

SpringMVC基础

时间:2023-01-30 14:04:46浏览次数:40  
标签:http SpringMVC spring 基础 springframework context org

当前主流框架

SSM:SpringMVC + Spring + MyBatis

SSSP:SpringMVC + Spring + SpringData JPA

 

关于MVC模型

MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于设计创建 Web 应用程序表现层的模式。

  Model(模型):通常指的就是我们的数据模型,用于封装数据。

  View(视图):通常指的就是我们的html之类的,作用是展示数据。

  Controller(控制器):是应用程序中处理用户交互的部分。作用是处理程序逻辑。

SpringMVC基础_MVC

 

SpringMVC简介

SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 Spring FrameWork 的后续产品,已经融合在 Spring Web Flow里面。SpringMVC 已经成为目前最主流的 MVC 框架之一,它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful 编程风格的请求。

SpringMVC的优势(整理自网络):

1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)等

2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要。

3、由于命令对象就是一个 POJO,无需继承框架特定 API,可以使用命令对象直接作为业务对象。

4、和 Spring 其他框架无缝集成,是其它 Web 框架所不具备的。

5、可适配,通过 HandlerAdapter 可以支持任意的类作为处理器。

6、可定制性,HandlerMapping、ViewResolver 等能够非常简单的定制。

7、功能强大的数据验证、格式化、绑定机制。

8、利用 Spring 提供的 Mock 对象能够非常简单的进行 Web 层单元测试。

9、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。

10、强大的 JSP 标签库,使 JSP 编写更容易。

.........等等。

 

第一个SpringMVC示例

创建maven项目

选择webapp

SpringMVC基础_xml_02

输入项目信息

SpringMVC基础_spring_03

配置mvn

SpringMVC基础_MVC_04

点击“Finish”

SpringMVC基础_MVC_05

结构

SpringMVC基础_spring_06

上面有些目录没有,比如java、resources等,需要我们手工创建,创建后如下图:

SpringMVC基础_spring_07

 

添加pom依赖

<properties>
<spring.version>4.3.14.RELEASE</spring.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>

  

配置核心控制器

web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>

<!--配置SpringMVC的核心控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<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>/</url-pattern>
</servlet-mapping>
</web-app>

 

创建spring mvc的配置文件

创建控制层:com.qzcsbj.controller

resources目录下创建springmvc.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"
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">

<!--扫描控制层的包-->
<context:component-scan base-package="com.qzcsbj.controller"/>

<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置视图的前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--配置视图的后缀)-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>

 

编写控制器并使用注解配置

package com.qzcsbj.controller;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class Hello {
@RequestMapping("/hello") // 如果只有一个值,value可以省略
// @RequestMapping(value = "/hello")
public String hello() {
System.out.println("hello springmvc");
return "success";
}
}

 

测试Spring MVC

前提:本地安装tomcat

点击“Edit Configurations...”

SpringMVC基础_xml_08

点击+

SpringMVC基础_xml_09

选择更多

SpringMVC基础_xml_10


选择Local 

SpringMVC基础_MVC_11

输入名称(随意输入)

SpringMVC基础_spring_12

点击Configure

SpringMVC基础_spring_13

选择tomcat的路径

SpringMVC基础_xml_14

SpringMVC基础_MVC_15

选择“Deployment”,选择“Artifact...”

SpringMVC基础_xml_16

选择第二个

SpringMVC基础_xml_17

下面表示通过根路径进行访问

SpringMVC基础_spring_18

默认浏览器是谷歌;选择更新

SpringMVC基础_xml_19

部署

SpringMVC基础_spring_20

会自动打开:localhost:8080

SpringMVC基础_xml_21

内容是index.jsp的内容,其实访问的是:localhost:8080/index.jsp,省略了index.jsp

SpringMVC基础_xml_22

访问:http://localhost:8080/hello

SpringMVC基础_xml_23

 

执行过程

1、服务器启动,应用被加载。读取到 web.xml 中的配置创建 spring 容器并且初始化容器中的对象。

2、浏览器发送请求,被DispatherServlet 捕获,该 Servlet 并不处理请求,而是把请求转发出去。转发的路径是根据请求 URL,匹配@RequestMapping 中的内容。

3、匹配到了后,执行对应方法。该方法有一个返回值。

4、根据方法的返回值,借助 InternalResourceViewResolver 找到对应的结果视图。(跳转到了success.jsp,但是浏览器的url中路径没有变,表示是服务器内部跳转)

5、渲染结果视图,响应浏览器。

 

​​【bak1】​​

​​【bak2】​​


__EOF__


本文作者:持之以恒(韧)




标签:http,SpringMVC,spring,基础,springframework,context,org
From: https://blog.51cto.com/qzcsbj/6026261

相关文章