我理解的SpringMVC(一)框架

本文介绍了SpringMVC框架的概念及组成,通过实例演示如何使用Eclipse和Maven搭建SpringMVC环境,包括配置DispatcherServlet、Controller、HandlerMapping、ViewResolver等核心组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

这一章谈一谈SpringMVC,虽然前面已经写过一篇了,也许又有新的理解呢?温故而知新嘛…

二、SpringMVC概念

1. 什么是SpringMVC

SpringMVC是一个MVC框架,用来简化基于MVC架构的web应用程序的开发。
它是Spring基本架构的一部分,属于SpringFrameWork的后续产品,和Spring无缝衔接,因此在和Spring整合时不需要太多的配置。

2. 什么是MVC

那么上面提到的MVC是什么呢,不知道的可以去看一下我的另一篇文章MVC设计模式

三、五大组件

Spring有五大组件,对于初学者来说,学会这五大组件的运用就学会了SpringMVC。
他们分别是:DispatcherServlet,HandlerMapping,Controller,ModelAndView,ViewResolver

DispatcherServlet

DispatchServlet称为前端控制器。
用于接收请求,根据HandlerMapping的配置调用相应的模型来处理。

HandlerMapping

可以看作是DispatchServlet的小秘书
包含请求路径和模型的对应关系。

Controller

Controller被称为处理器。
用来处理请求的业务逻辑,并将处理结果以ModelAndView的形式返回。

ModelAndView

用来封装处理结果集。
处理结果除了数据,还可能是视图名。

ViewResolver

ViewResolve被称为视图解析器。可以看作是DispatchServlet的第二个秘书。
DispatchServlet根据ViewResolver的解析,调用真正的视图对象来生成相应的页面。

四、代码示例

概念知识差不多了,我们就上手实操了。这里就记录一个使用Eclipse里的maven搭建SpringMVC的流程。

1. DispatchServlet

在web.xml中编写DispatchServlet。代码如下:

<servlet>
        <servlet-name>springmvc</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>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

DispatchServlet启动时会读取初始化参数contextConfigLocation,会加载springmvc的配置。此处配置了该参数,就不用去自己启动Spring了。

2. Controller

写一个处理器,打印一句话,然后返回页面。返回的页面名用ModelAndView封装。

package try01.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class TestController implements Controller{

	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println("hello Springmvc");
		return new ModelAndView("hello");
	}
}

3. HandlerMapping

配置路径和模型之间的对应关系。
其中的helloController是下面Controller处理器的id。

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/hello.do">helloController</prop>
        </props>
    </property>
</bean>

<bean id="helloController" class="try01.controller.HelloController"></bean>

4. ViewResolver

prefix为前缀,suffix为后缀。

<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

5. 测试

在WEB-INF文件夹下新建一个hello.jsp文件,只打印一句Hello SpringMVC。

请求路径地址:http://localhost:8080/MySpringMVC/hello.do
console打印结果:hello Springmvc
页面显示结果:Hello SpringMVC

测试成功!

五、流程结构图

在这里插入图片描述

六、SpringMVC优化

上面的代码已经满足MVC的需求,但是还存在很多弊端,比如每一个处理器都需要实现Controller接口,一个控制器只能处理一个请求。每一个Bean还需要配置。返回结果必须是ModelAndView等等。
接下里将上面的程序进行一定的优化。

@RequestMapping(“hello.do”)是属于mvc的注解,是告诉DispatchServlet请求路径与处理器的对应关系。

controller处理器:

@Controller
public class HelloCon {
	
	@RequestMapping("hello.do")
	public String sayHello(){
		System.out.println("sayHello");
		return "hello";
	}
}

springmvc.xml配置

 	 <!-- 组件扫描 -->
 	<context:component-scan base-package="try01" />
 	
 	<!-- MVC注解扫描 -->
 	<mvc:annotation-driven />
 	
 	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 	    <property name="prefix" value="/WEB-INF/"></property>
 	    <property name="suffix" value=".jsp"></property>
 	</bean>

结束语

至此,SpringMVC框架就搭建完成,下一章介绍一下前后端页面传参的相关知识点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值