SpringMVC框架的基础配置使用

本文介绍了SpringMVC的MVC设计思想,详细阐述了Spring MVC框架的原理和优势,并逐步解析了Spring MVC的核心类与接口,包括DispatcherServlet、HandlerMapping、HandlerAdapter等。此外,还详细讲解了Spring MVC的入门程序配置,如动态WEB项目创建、jar包导入、配置前端控制器等。

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

**

1、MVC设计思想、设计模式:

**
MVC是一种使用设计创建 Web 应用程序的。
 Model(模型)表示应用程序核心(比如数据库记录列表)。
 View(视图)显示数据(数据库记录)JSP。
 Controller(控制器)处理输入(写入数据库记录)请求数据和转发到视图。

**

2、Spring MVC框架

**
Spring MVC是Spring的一个模块,提供web层解决方案(基于MVC设计架构)。
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对Struts 2的超越(传统框架SSH)。现在越来越多的开发团队选择了Spring MVC
好处:
 Spring3 MVC使用简单,学习成本低。
 Spring3 MVC很容易就可以写出性能优秀的程序。
 Spring3 MVC的灵活高。

Spring框架图示:

在这里插入图片描述

SSM三大框架整合图示:

在这里插入图片描述

3、Spring MVC核心类与接口
3.1、Spring MVC流程

 1.开始
 2.前端控制器:DispatcherServlet(框架提供)
 3.处理器映射器:HandlerMappting(框架提供)
 4.处理器适配器:HandlerAdapter(框架提供)
 5.处理器:Handle(开发人员)
 6.视图解析器:ViewResolver(框架提供)
 7.视图:View:(开发人员)
 8.结束
3.2、Spring MVC接口

3.2、Spring MVC过程
图:
在这里插入图片描述

步骤:
第一步:用户发起request请求,请求至DispatcherServlet前端控制器。
第二步:DispatcherServlet前端控制器请求HandlerMapping处理器映射器查找Handler,DispatcherServlet前端控制器,相当于中央调度器,各各组件都和前端控制器进行。交互,降低了各各组件之间耦合度。
第三步:HandlerMapping处理器映射器,根据url及一些配置规则(xml配置、注解配置)查找Handler,将Handler返回给DispatcherServlet前端控制器。
第四步:DispatcherServlet前端控制器调用适配器执行Handler,有了适配器通过适配器去扩展对不同Handler执行方式(比如:原始servlet开发,注解开发)。
第五步:适配器执行Handler,Handler是后端控制器,当成模型。
第六步:Handler执行完成返回ModelAndView,ModelAndView:springmvc的一个对象,对Model和view进行封装。
第七步:适配器将ModelAndView返回给DispatcherServlet。
第八步:DispatcherServlet调用视图解析器进行视图解析,解析后生成view,视图解析器根据逻辑视图名解析出真正的视图。View:springmvc视图封装对象。
第九步:ViewResolver视图解析器给前端控制器返回view。
第十步:DispatcherServlet调用view的渲染视图的方法,将模型数据填充到request域。
第十一步:DispatcherServlet向用户响应结果返回JSP页面或者Json数据。
3.3、Spring MVC接口功能
3.3.1、DispatcherServlet
前端控制器(也称总控制器),把请求给转发到具体的控制类。
3.3.2、HandlerMapping
映射处理器,负责映射中央处理器转发给controller时的映射策略,一共三种:
 BeanNameUrlHandlerMapping:
按着controller的name来映射寻找。
 SimpleUrlHandlerMapping :
按着简单url来映射寻找。
 ControllerClassNameHandlerMapping:
控制类的类名控制器,访问时类名首字母需要小写。
3.3.3、Controller
具体处理请求的控制器。
3.3.4、ModelAndView
服务层返回的数据和视图层的封装类。
3.3.5、ViewResolver
视图解析器,解析具体的视图。
3.3.6、Interceptors(根据具体的业务)
拦截器,负责拦截我们定义的请求然后做处理工作。

**

4、Spring MVC框架入门程序

**
4.1、创建动态WEB项目:
项目维护包层次:

4.2、导入需要的jar包:

4.3、在WEB.xml文件中配置前端控制器(分发DispatcherServlet):

	<!-- 1、前端控制器 -->
	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 加载springMVC配置 -->
		<init-param>
			<!-- 配置文件地址配置 -->
			<!-- 如果不配置contextConfigLocation,默认查找的配置文件名称classpath下的:
			servlet名称+"-servlvet.xml",即springmvc-servlvet.xml -->
			<param-name>contextConfigLocation</param-name>
			<param-value>springMVC.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

4.4、创建springmvc.xml文件

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.2.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

</beans>

4.5、开发Handler编写(控制器)

public class UserController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		List<User> userList = new ArrayList<User>();
		User user1 = new User();
		user1.setName("张三");
		user1.setAge("23");
		user1.setHobby("篮球");
		user1.setLogin_name("zs");
		user1.setPassword("111");
		user1.setCreate_time(new Date());

		User user2 = new User();
		user2.setName("李四");
		user2.setAge("32");
		user2.setHobby("足球");
		user2.setLogin_name("ls");
		user2.setPassword("111");
		user2.setCreate_time(new Date());

		userList.add(user1);
		userList.add(user2);

		// 转发
		ModelAndView modelAndView = new ModelAndView();
		// //以前
		// request.setAttribute("userList", userList);
		modelAndView.addObject("userList", userList);
		modelAndView.setViewName("/view/system/user/userList");
		return modelAndView;
	}
}

4.6、在springmvc.xml文件中配置:处理器映射器
所有处理器映射器都实现HandlerMapping接口:

<!-- 1.配置处理映射器 -->
<!-- 配置处理器映射器 springmvc框架根据HandlerMapping接口判断是否是处理器映射器 -->
<!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 -->
**4.7、配置Handler纳入springmvc框架管理**
<!-- 2.配置Handler 由于使用了BeanNameUrlHandlerMapping处理映射器,name配置为url -->
<bean id="userController" name="/userList.do" class="com.hqyj.taoTaoMall.system.controller.UserController" />

4.8、在springmvc.xml文件中配置:处理器适配器

<!-- 3.处理器适配器 -->
<!--简单url映射 集中配置bean的id对应 的url -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	<property name="mappings">
		<props>
			<prop key="/userList.do">userController</prop>
		</props>
	</property>
</bean>

4.9、配置视图解析器

<!-- 4.配置视图解析器 -->
<!-- 配置视图解析器 要求将jstl的包加到classpath -->
<!-- ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/" />
	<property name="suffix" value=".jsp" />
</bean>

**

5、其它非注解处理器映射器和适配器

**
5.1、BeanNameUrlHandlerMapping(映射器)(讲课)
根据请求url(XXXX.do)匹配spring容器bean的 name
找到对应的bean(程序编写的Handler(控制器))
5.2、SimpleUrlHandlerMapping(映射器)(讲课)
注意:在springmvc.xml配置了多个处理器映射器,多个处理器映射器可以共存。
5.3、SimpleControllerHandlerAdapter(适配器)(略)
要求程序编写的Handler(Controller)需要实现 Controller接口。
5.4、HttpRequestHandlerAdapter(适配器)(略)
在springmvc.xml配置:HttpRequestHandlerAdapter
要求Handler 实现 HttpRequestHandler接口
**

6、注解映射器和适配器

**
6.1、先了解DispatcherServlet.properoties

DispatcherServlet前端控制器加载 DispatcherServlet.properoties 配置文件,从而默认加载各各组件,如果在springmvc.xml中配置了处理器映射器和适配器,以sprintmvc.xml中配置的为准
6.2、注解映射器
Spring MVC 3.1之前默认加载映射器是:
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

Spring MVC 3.1之后要使用:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

在springmvc.xml中配置RequestMappingHandlerMapping:
使用RequestMappingHandlerMapping需要在Handler 中:
使用@controller标识此类是一个控制器,
使用@requestMapping指定Handler方法所对应的url。
6.3、注解适配器
Spring MVC 3.1之前默认加载映射器是:
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
Spring MVC 3.1之后要使用:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

RequestMappingHandlerAdapter,不要求Handler实现任何接口,它需要和RequestMappingHandlerMapping注解映射器配对使用,主要解析Handler方法中的形参。url。
6.4、注解开发Handler编写(控制器)

mport java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

import com.ssm.demo.system.model.User;

@Controller
public class UserController {
	@RequestMapping("/list.do")
	public ModelAndView list() {
		List<User> userList = new ArrayList<User>();
		User user1 = new User();
		user1.setName("张三");
		user1.setAge("23");
		user1.setHobby("篮球");
		user1.setLogin_name("zs");
		user1.setPassword("111");
		user1.setCreate_time(new Date());

		User user2 = new User();
		user2.setName("李四");
		user2.setAge("32");
		user2.setHobby("足球");
		user2.setLogin_name("ls");
		user2.setPassword("111");
		user2.setCreate_time(new Date());

		userList.add(user1);
		userList.add(user2);

		// 转发
		ModelAndView modelAndView = new ModelAndView();
		// //以前
		// request.setAttribute("userList", userList);
		modelAndView.addObject("userList", userList);
		modelAndView.setViewName("/system/user/userList");
		return modelAndView;
	}

}

6.5、在springmvc.xml文件中配置注解开发Handler

<!-- 1.配置注解开发Handler -->
<bean class="com.ssm.demo.system.controller.UserController" />

<!-- 2.注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

<!-- 3.注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

<!-- 4.配置视图解析器 -->
<!-- 配置视图解析器 要求将jstl的包加到classpath -->
<!-- ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/view/" />
	<property name="suffix" value=".jsp" />
</bean>

6.6、在springmvc.xml文件中优化注解扫描

	<!-- 1.配置注解开发Handler -->
	<!-- <bean class="com.ssm.demo.system.controller.UserController" /> -->
	<!-- 1+.注解扫描 -->
	<!-- 使用spring组件扫描 -->
	<context:component-scan base-package="com.hqyj.crm.system.controller" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值