springMVC介绍及配置
Spring MVC的Controller用于处理用户的请求。Controller相当于Struts 1里的Action,他们的实现机制、运行原理都类似。
Controller是个接口,一般直接继承AbstrcatController,并实现handleRequestInternal方法。handleRequestInternal方法相当于Struts 1的execute方法。
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController; public class CatController extends AbstractController{
private ICatService catService;
//setter、getter略 protected ModelAndView handleRequestInternal(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
String action =request.getParameter("action");
if("list".equals(action)){
returnthis.list(request,response);
}
} protected ModelAndView list(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
List<Cat> catList =catService.listCat();
request.setAttribute("catList", catList);
returnnew ModelAndView("cat/listCat");
} }
Spring MVC没有内置数据的封装,开发者可以自己封装数据转换代码。
Spring MVC独特的地方在于view层的处理上。handleRequestInternal返回ModelAndView对象,可以看做是对JSP对象的封装。ModelAndIView直接接受JSP页面的路径。例如参数"cat/listCat",只是JSP路径的一部分,实际完整的路径是"WEB-INF/jsp/cat/catList.jsp",路径前后的部分是配置在配置文件中的。
除了制定JSP路径,ModelAndView还可以直接传递Model对象到View层,而不用事先放到request中,例如new ModelAndView("cat/listCat","cat",cat),如果传递多个参数,可以使用Map,如
Map map = new HashMap();
map.put("cat",cat);
map.put("catList",catList);
return new ModelAndView("cat/listCat",map);
一般使用一个独立的xml文件如spring-action.xml专门配置web相关的组件
<?xml version= "1.0" encoding="UTF-8"?>
<!DCTYPEbeans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/jsp/</value><!-- JSP前缀-->
</property>
<property name="suffix">
<value>.jsp</value> <!-- JSP后缀-->
</property> <!-- 配置URL Mapping-->
<bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandleMapping">
<property name="mappings">
<props><!—Controller的URL会被配置成"cat.mvc"-->
<prop key="cat.mvc">catController</prop>
<props>
</property>
</bean>
<bean id="catController" class="com.clf.spring.CatController">
<property name="catService" ref="catService"></property>
</bean>
</beans>- web.xml配置
<context-param><!-- Spring配置文件的位置-->
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml,
/WEB-INF/classes/spring-action.xml
</param-value>
</context-param> <listener><!-- 使用Listener加载Spring配置文件-->
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener> <servlet><!-- spring分发器-->
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring-action.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- 启动时加载-->
</servlet> <servlet-mapping>
<servlet-name> spring</servlet-name>
<url>*.mvc</url>
</servlet-mapping>
如果一个Controller要处理多个业务逻辑,可以使用MultiActionController,相当于Struts 1中的DispatchAction,能根据某个参数将不同的请求分发到不同的方法上。
import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class CatController extends AbstractController{
private ICatService catService;
//setter、getter略 protected ModelAndView add(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
……
returnnew ModelAndView("cat/addCat");
} protected ModelAndView list(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
List<Cat> catList =catService.listCat();
request.setAttribute("catList", catList);
return new ModelAndView("cat/listCat");
} }
配置到spring-action.xml。
<bean id="paraMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName">
<value>action</value><!-- 配置分发参数-->
</property>
<property name="defaultMethodName">
<value>list</value><!-- 配置默认的执行方法-->
</property>
</bean> <bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandleMapping">
<property name="mappings">
<props>
<prop key="cat.mvc">catController</prop><!-- 访问"cat.mvc"则交给catController处理-->
<prop key="catMulti.mvc">catMultiController</prop><!-- 访问"catMulti.mvc"则交给catMultiController处理-->
<props>
</property>
</bean> <bean id="catController" class="com.clf.spring.CatMultiController">
<property name="catService" ref="catService"></property>
</bean> <bean id="catMultiController" class="com.clf.spring.CatController">
<property name="catService" ref="catService"></property>
</bean>
原文出处:http://blog.csdn.net/u012152619/article/details/44300491
springMVC介绍及配置的更多相关文章
- 【Eclipse】springMVC介绍与配置
SpringMCV介绍: Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动的,也就是使用 ...
- SpringMVC介绍之约定优于配置
SpringMVC介绍之约定优于配置 所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写.就这么简单的一句话可能你还不是很懂什么是约定优于配置,没关系,看完后 ...
- SpringMVC框架入门配置 IDEA下搭建Maven项目
初衷:本人初学SpringMVC的时候遇到各种稀奇古怪的问题,网上各种技术论坛上的帖子又参差不齐,难以一步到位达到配置好的效果,这里我将我配置的总结写到这里供大家初学SpringMVC的同僚们共同学习 ...
- Spring-mvc介绍
Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mvc结构 1 ...
- java框架之SpringBoot(5)-SpringMVC的自动配置
本篇文章内容详细可参考官方文档第 29 节. SpringMVC介绍 SpringBoot 非常适合 Web 应用程序开发.可以使用嵌入式 Tomcat,Jetty,Undertow 或 Netty ...
- SpringMVC加载配置Properties文件的几种方式
最近开发的项目使用了SpringMVC的框架,用下来感觉SpringMVC的代码实现的非常优雅,功能也非常强大, 网上介绍Controller参数绑定.URL映射的文章都很多了,写这篇博客主要总结一下 ...
- SpringMVC介绍及参数绑定
本节内容: SpringMVC介绍 入门程序 SpringMVC架构 SpringMVC整合MyBatis 参数绑定 SpringMVC和Struts2的区别 一.SpringMVC介绍 1. 什么是 ...
- springmvc web.xml配置之 -- SpringMVC IOC容器初始化
SpringMVC IOC容器初始化 首先强调一下SpringMVC IOC容器初始化有些特别,在SpringMVC中除了生成一个全局的spring Ioc容器外,还会为DispatcherServl ...
- springMVC介绍
http://www.iteye.com/blogs/subjects/springMVC —————————————————————————————————————————————————————— ...
随机推荐
- “全栈2019”Java第五十九章:抽象类与抽象方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- SFML从入门到放弃(0) 配置环境
SFML从入门到放弃(0) 配置环境 恩..开始划水..学sfml的时候顺便做点笔记什么的.. 安装 在linux里面打开终端 然后输入 sudo apt-get install libsfml-de ...
- 【python】10分钟教你用python如何正确把妹
前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 image 当然啦,这只是测试版的效果,真正的版本可 ...
- openstack的部署与运维
来公司几个月了,除了搭建了kvm虚拟机,使用3台虚拟机组合成一个openstack的网络环境.还没有正式将openstack搭建起来过.时间都在开发web程序.不过openstack也是要学习的.只能 ...
- C#找出接口的所有实现类并遍历执行这些类的公共方法
//这里找出了实现IOutputArray接口的所有类 private void FindAllClass() { var types = AppDomain.CurrentDomain.GetAss ...
- python在一堆目录中寻找json文件
在一个目录下,有好几层目录,里面零零散散存放着几个json文件,我要做的是用python脚本把它们都找出来,一开始就一层一层地找,用os.listdir加上for循环,根据目录树的深度确定for循环的 ...
- mongoDB使用小记
1.简介: MongoDB是由c++语言编写的,基于分布式文件存储的开源数据库系统.MongoDB将数据存储为一个文档,数据结构有键-值对,类似于JSON对象. MongoDB其中的一些概念如下: M ...
- 为什么一定要学Go语言
Go语言是谷歌2009发布的第二款开源编程语言.Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 为什么要选择学习Go ...
- (转)MyISAM Key Cache详解及优化
原文:http://huanghualiang.blog.51cto.com/6782683/1372721 一.MyISAM Key Cache详解: 为了最小化磁盘I/O,MyISAM将最频繁访问 ...
- vue过渡效果
vue过渡效果. <transition name='slide-fade'> <div class="top" @click='gotoTop' v-if='s ...