前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring 框架学习(七)Spring MVC 的初识

Spring 框架学习(七)Spring MVC 的初识

作者头像
求和小熊猫
发布2020-11-25 15:09:54
发布2020-11-25 15:09:54
46800
代码可运行
举报
运行总次数:0
代码可运行

Spring MVC 的初识

简介

1. 设么是 MVC

MVC 是一种设计模式,是模型(model)-- 视图(view)-- 控制器(controller)的缩写,他强制性的使应用的输入,处理和输出分开。

MVC 的设计模式:

  • 视图(view):视图是用户看到并与之交互的界面
  • 模型(Model):企业数据和业务规则
  • 控制器(controller):接受用户输入,并调用模型和视图去完成用户的需求。

2. Spring MVC 的工作流程

Spring MVC 的工作流程:

  1. 浏览器将请求信息发送给 DIspatcherServlet。
  2. DispatcherServlet 查询一个或多个处理器映射,并将请求发送给相应的控制器
  3. 控制器处理用户请求信息,将生成的数据和视图打包成 ModelAndView 对象返回给 DispatcherServlet 对象。
  4. DispatcherServlet 通过视图解析器将逻辑视图匹配为一个特定的视图实现
  5. 视图使用模型数据渲染输出。

SpringMVC 开发初步(三个重要步骤)

1. 配置 DispatcherServlet

DispatcherServlet 主要是拦截前端页面的请求,并将请求转发给相应的控制器进行处理。 DispatcherServlet 需要通过 Spring 配置文件获取 Spring 的上下文,从而将请求转发给相应的控制器类。 DispatcherServlet 需要通过 Spring 来进行初始化。一般使用 init-param 来配置 Spring 配置文件的位置。

加载 Spring 的 xml 配置文件

如果不进行 init-param 标签的设置 ,那么 Spring 的 xml 配置文件需要放在 Servlet 配置文件的同一文件夹下,名称为 servlet 名称 加上 -servlet。 如果通过 init-param 指定位置则首先在 param-name 中填写 contextConfigLocation 以指定 Spring 的配置文件为 xml 类型。 param-value 标签用于指定 Spring 配置文件的位置。如果使用 classpath 表示配置文件放在 src 文件夹下。若果不填写则表示 Spring 配置文件放在 WebContent 文件夹下

代码语言:javascript
代码运行次数:0
运行
复制
	<servlet>
		<servlet-name>springDispatcherServlet</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>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
加载 Spring 的 java 配置文件

首先在 param-name 标签中填写 contextClass 以指定 Spring 的配置文件为 java 配置文件。 param-value 中则填写 Spring 的配置类的全类名。

2. 配置视图解析器

视图解析器能够将控制返回的视图和模型数据解析为视图并且返回给前台。 在此我们以 InternalResourceViewResolver 为例,InternalResourceViewResolver 能够将控制器返回的字符串解析为 jsp 页面 InternalResourceViewResolver 实例化时需要设置前缀与后缀两个属性。前缀指定 JSP 文件的位置(都默认放在 WebContent 文件夹下)。后缀指定文件的格式为 jsp 页面。例如控制器传来

在 Spring 的 xml 配置文件中配置视图解析器
代码语言:javascript
代码运行次数:0
运行
复制
	<!-- 配置视图解析器:如何把 handler 返回方法值解析为视图解析器 -->
	 <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	 	<property name="prefix" value="/views/"></property>
	 	<property name="suffix" value=".jsp"></property>
	 </bean>
在 Spring 的 java 配置文件中配置视图解析器
代码语言:javascript
代码运行次数:0
运行
复制
@Bean
public ViewResolver viewResolver(){
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");
    resolver.setExposeContextBeansAsAttributes(true);
    return resolver;
}

3. 编写控制器类

@Controller 用来声明控制器,他是基于 @Component 注解,能有辅助实现组件扫描。 @RequestMapping 注解声明了他们所要处理的请求,该注解既可以用于标注方法也可以用于标注类。

代码语言:javascript
代码运行次数:0
运行
复制
@Controller
public class Controller1 {
	
	public String SUCESS = "sucess";
	
	@RequestMapping("/sucess")
	public String toSucess() {
		System.out.println("got to the sucess page");
		return SUCESS;
	}
}

Spring MVC 的简单示例

欢迎页面 (index.jsp)

创建一个欢迎页面,压面中有一个链接,指向接下来会跳转的 url。

代码语言:javascript
代码运行次数:0
运行
复制
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h3>
		<a href="sucess">Click here to the sucess page</a>
	</h3>
</body>
</html>

配置欢迎页面 web.xml

欢迎页面是 Servlet 配置文件中的配置

代码语言:javascript
代码运行次数:0
运行
复制
     <welcome-file-list>
           <welcome-file>views/index.jsp</welcome-file>
     </welcome-file-list>

创建跳转页面 sucess.jsp

代码语言:javascript
代码运行次数:0
运行
复制
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h2>The SUCESS Page</h2>
	<br/>
</body>
</html>

配置 DispatcherServlet

配置转发的 Servlet 是使用 Spring 进行 url 的转发。init-param 标签是变量初始化标签,param-value 是指向 Spring 配置文件的路径。classpaht:是指在 src 文件夹下。如果不对 init-param 进行配置。那么 就会默认加载 WEB-INF 文件夹下 名称为 servelet-name 标签中的 servlet 名称加上 -servlet 为名的 Spring 配置文件。例如示例中可以在不设置 init-param 情况下加载的 Spring 配置文件的名称为 springDispatcherServlet-servlet.xml

代码语言:javascript
代码运行次数:0
运行
复制
	<!-- 配置 DispatcherServlet -->
	<servlet>
		<servlet-name>springDispatcherServlet</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>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

编写控制器类

使用 @Controller 注解可以将这个类标注为一个控制器的类,在启用组件扫描时 IOC 容器会自动加载该类。 其中的方法是 Spring 中

代码语言:javascript
代码运行次数:0
运行
复制
package cn.edu.stu.Demo1.handlers;

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

@Controller
public class Controller1 {
	
	public String SUCESS = "sucess";
	
	@RequestMapping("/sucess")
	public String toSucess() {
		System.out.println("got to the sucess page");
		return SUCESS;
	}
}

编写 Spring 配置文件

首先设置组件的自动扫描,然后设置视图解析器。prefix 是前缀设计,用于指定页面文件所在的文件夹的位置,一般是指在 WebContent 文件夹下的文件位置。。suffix 用于指定文件的后缀。

代码语言:javascript
代码运行次数:0
运行
复制
<?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-4.3.xsd">

	<context:component-scan base-package="cn.edu.stu.Demo1.handlers"></context:component-scan>
	
	<!-- 配置视图解析器:如何把 handler 返回方法值解析为视图解析器 -->
	 <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	 	<property name="prefix" value="/views/"></property>
	 	<property name="suffix" value=".jsp"></property>
	 </bean>
	
</beans>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring MVC 的初识
  • 简介
    • 1. 设么是 MVC
    • 2. Spring MVC 的工作流程
  • SpringMVC 开发初步(三个重要步骤)
    • 1. 配置 DispatcherServlet
      • 加载 Spring 的 xml 配置文件
      • 加载 Spring 的 java 配置文件
    • 2. 配置视图解析器
      • 在 Spring 的 xml 配置文件中配置视图解析器
      • 在 Spring 的 java 配置文件中配置视图解析器
    • 3. 编写控制器类
  • Spring MVC 的简单示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档