SpringMVC框架

SpringMVC框架

JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。Struts和SpringMVC是Web层的框架,Spring是业务层的框架,Hibernate和MyBatis是持久层的框架。

为什么要使用SpringMVC?
很多应用程序的问题在于处理业务数据的对象和显示业务数据的视图之间存在紧密耦合,通常,更新业务对象的命令都是从视图本身发起的,使视图对任何业务对象更改都有高度敏感性。而且,当多个视图依赖于同一个业务对象时是没有灵活性的。

SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发。

MVC设计模式
MVC设计模式的任务是将包含业务数据的模块与显示模块的视图解耦。这是怎样发生的?在模型和视图之间引入重定向层可以解决问题。此重定向层是控制器,控制器将接收请求,执行更新模型的操作,然后通知视图关于模型更改的消息。

初始SpringMVC
在这里插入图片描述
在 Spring 的基本架构中,红色圈起来的 Spring Web MVC ,也就是本系列的主角 SpringMVC,它是属于Spring基本架构里面的一个组成部分,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面,所以我们在后期和 Spring 进行整合的时候,几乎不需要别的什么配置。
Spring+MVC=SpringMVC : 在spring的基础上,对MVC思想的一个实现,是一个MVC框架
SpringMVC: 对servlet做的一个封装,换成controller层
相对于struts2,SpringMVC和Spring结合的更加完美

SpringMVC入门程序
(1)web.xml

springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml springmvc *.do

(2)springmvc.xml

<!-- 配置处理器适配器来执行Controlelr ,springmvc默认的是
SimpleControllerHandlerAdapter
-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

<!-- 配置自定义Controller -->
<bean id="myController" name="/hello.do" class="org.controller.MyController"></bean>

<!-- 配置sprigmvc视图解析器:解析逻辑试图; 
	后台返回逻辑试图:index
	视图解析器解析出真正物理视图:前缀+逻辑试图+后缀====/WEB-INF/jsps/index.jsp
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/jsps/"></property>
	<property name="suffix" value=".jsp"></property>		
</bean>

(3)自定义处理器

public class MyController implements Controller{

public ModelAndView handleRequest(HttpServletRequest arg0,
		HttpServletResponse arg1) throws Exception {
	ModelAndView mv = new ModelAndView();
	//设置页面回显数据
	mv.addObject("hello", "欢迎学习springmvc!");
	
	//返回物理视图
	//mv.setViewName("/WEB-INF/jsps/index.jsp");
	
	//返回逻辑视图
	mv.setViewName("index");
	return mv;
}

}
(4)index页面

${hello}

(5)测试地址

http://localhost:8080/springmvc/hello.do
1
HandlerMapping
处理器映射器将会把请求映射为 HandlerExecutionChain 对象(包含一个 Handler 处理器对象、多个 HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新的映射策略。

处理器映射器有三种,三种可以共存,相互不影响,分别是BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping和ControllerClassNameHandlerMapping;

BeanNameUrlHandlerMapping

默认映射器,即使不配置,默认就使用这个来映射请求。


//映射器把hello.do请求映射到该处理器

SimpleUrlHandlerMapping

该处理器映射器可以配置多个映射对应一个处理器.

testController testController //上面的这个映射配置表示多个*.do文件可以访问同一个Controller。

ControllerClassNameHandlerMapping

该处理器映射器可以不用手动配置映射, 通过[类名.do]来访问对应的处理器.

//这个Mapping一配置, 我们就可以使用Controller的 [类名.do]来访问这个Controller.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值