关于MVC的理解

基础:

    关于MVC的理解:

   1) 模型:处理业务逻辑.

   2) 视图:负责数据页面展示.(视图=数据+视图名)

   3) 控制器:用于处理请求,并依据请求调用相应的模型处理,将处理结果返回给视图.

关于springMVC的理解:

1) springMVC也是基于MVC架构设计的.(符合MVC基本结构)

运行流程图:

运行流程口述:

    1)DispatcherServlet收到请求,依据HandlerMapping中的配置得到请求路径与Controller的对应关系.

  2)接着依据这个对应关系去调用相应的Controller来处理业务.Controller会将处理结果返回给DispatcherServlet

          注:以ModelAndView的形式返回结果.

  3)DispatcherServlet拿到处理结果后会依据ViewResolver将返回结果解析成视图对象.(就是我们常用的jsp等)

  4)最后调用相应的jsp来展现数据.

   

如有疑问请看下文================================================

2) springMVC有五大组件:

a.DispatcherServlet  前端控制器    用于处理请求,依据handlerMapping去调用相应的Controller,获得
Controller的返回结果(ModelAndView),并依据ViewResolver去调用相应的jsp(也可能是其他的变现形式)
b.HandlerMapping     映射处理器     负责描述请求路径与Controller(模型/处理器)的对应关系 
c.Controller         处理器         负责具体的业务处理.(如:计算一个人的bmi指数) 
d.ModelAndView       模型和视图     理论上等于 数据+视图名
e.ViewResolver       视图解析器     负责将视图名解析成真正的视图对象(如:jsp)

详解:

    DispatcherServlet中文翻译为前端控制器,在这里也是担任MVC控制器的.springMVC为我们封装好了这个控制器,我们只需要配置就可以使用.如果你研究过DispatcherServlet的基础实现的话你会发现,他会自动去启动spring容器,而启动spring容器又需要spring-mvc.xml文件,这也就是下方web.xml配置文件中配置classpath:spring-mvc.xml的原因.(如果不知道启动spring容器为什么需要spring-mvc.xml文件,请自行百度)

下方提供web.xml,HelloController.java,spring-mvc.xml,hello.jsp文件,这是一个springMVC的完整实现实例.

该实例实现了简单的springMVC,成功访问将输出Hello,SpringMVC!.

web.xml

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
             org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!-- 
    		DispatcherServlet的初始化方法会启动
    		Spring容器,所以,需要指定Spring配置文件的
    		位置。
			注:(了解)
				DispatcherServlet默认会查找
				/WEB-INF/springmvc-servlet.xml,
				以它作为spring的配置文件。
				其中,springmvc是DispatcherServlet的名字。
				比如,将名字改为action,则查找
				action-servlet.xml。 		
     -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

 

HelloController.java

 

<!-- 该文件为HelloController.java文件,获得请求后,会在控制台输出handleRequest(),并且返回ModelAndView.(即返回视图名为hello的jsp文件)
 -->

package 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 HelloController implements Controller{

	public ModelAndView handleRequest(
			HttpServletRequest arg0,
			HttpServletResponse arg1) 
					throws Exception {
		System.out.println("handleRequest()");
		/*
		 * ModelAndView有两个常用的构造器
		 * ModelAndView(String viewName)
		 * ModelAndView(String viewName,Map data)
		 * 注:
		 * 		viewName:视图名
		 * 		data: 数据
		 */
		return new ModelAndView("hello");
	}

}

spring-mvc.xml

    <!-- 
该文件为spring-mvc.xml文件,常放置已resources目录下.
该文件配置了springMVC五大组件中的:
HandlerMapping (映射处理器)
Controller (处理器)
ViewResolver (视图解析器)
注:剩余两个组件:DispatcherServlet(前端控制器)在web.xml文件中配置
ModelAndView(模型和视图)为jsp
      -->

<!-- 配置HandlerMapping -->
		<!--
			告诉DispatcherServlet,
			请求路径与模型(Controller)的对应关系。 
		 -->
		<bean 
			class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
				<property name="mappings">
					<props>
						<prop key="/hello.do">helloController</prop>
					</props>
				</property>
		</bean>
		<!-- 配置Controller(处理器) -->
		<bean id="helloController" 
		class="controller.HelloController"/>
		<!-- 配置ViewResolver(视图解析器) -->
		<!-- 
			告诉DispatcherServlet,视图名与视图对象的对应关系。
			注: 视图对象指的是不同的视图技术(比如jsp,
			freemarker等)。
		 -->
		<bean 
			class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<property name="prefix" value="/WEB-INF/"/>
			<property name="suffix" value=".jsp"/>
		</bean> 

hello,jsp

    <!-- 该文件为hello.jsp文件,负责页面展示(ModelAndView).即成功访问则输出Hello,SpringMVC! -->

<%@page pageEncoding="utf-8" 
contentType="text/html; charset=utf-8" %>
<html>
	<head></head>
	<body style="font-size:30px;">
		Hello,SpringMVC!
	</body>
</html>

    

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值