SpringMVC的Controller用于处理用户的请求。Controller相当于Struts1里的Action,他们的实现机制、运行原理都类似
Controller是个接口,一般直接继承AbstrcatController,并实现handleRequestInternal方法。handleRequestInternal方法相当于Struts1的execute方法
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
 
								15
 
								16
 
								17
						  | 
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)){
return this.list(request,response);
}
}
protected ModelAndView list(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
List<Cat> catList =catService.listCat();
request.setAttribute("catList", catList);
return new ModelAndView("cat/listCat");
}
}
 | 
SpringMVC没有内置数据的封装,开发者可以自己封装数据转换代码
SpringMVC独特的地方在于view层的处理上。handleRequestInternal返回ModelAndView对象,可以看做是对JSP对象的封装。ModelAndIView直接接受JSP页面的路径。例如参数"cat/listCat",只是JSP路径的一部分,实际完整的路径是"WEB-INF/jsp/cat/catList.jsp",路径前后的部分是配置在配置文件中的
除了制定JSP路径,ModelAndView还可以直接传递Model对象到View层,而不用事先放到request中,例如newModelAndView("cat/listCat","cat",cat),如果传递多个参数,可以使用Map,如
| 
 
								1
 
								2
 
								3
 
								4
						  | 
Map map = newHashMap(); 
map.put("cat",cat); 
map.put("catList",catList); 
return new ModelAndView("cat/listCat",map);
 | 
一般使用一个独立的xml文件如spring-action.xml专门配置web相关的组件
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
 
								15
 
								16
 
								17
 
								18
 
								19
 
								20
 
								21
 
								22
 
								23
 
								24
 
								25
 
								26
 
								27
 
								28
 
								29
 
								30
 
								31
 
								32
 
								33
 
								34
 
								35
 
								36
 
								37
 
								38
 
								39
 
								40
 
								41
 
								42
 
								43
 
								44
 
								45
 
								46
 
								47
 
								48
 
								49
 
								50
 
								51
 
								52
 
								53
 
								54
						  | 
<?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,能根据某个参数将不同的请求分发到不同的方法上
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
						  | 
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{
…… 
return new 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
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
 
								15
 
								16
 
								17
 
								18
 
								19
 
								20
 
								21
 
								22
 
								23
 
								24
 
								25
						  | 
<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>
 | 
总结
以上就是本文关于Spring中MVC模块代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。
原文链接:http://blog.csdn.net/u012152619/article/details/44300491
相关文章
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
 - 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
 - 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
 - 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
 - ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
 
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
 - 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
 - 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
 - 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
 - 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
 
快网idc优惠网
QQ交流群
- 
            2025-05-25 23
 - 
            
在ASP.NET 2.0中操作数据之四十一:DataList和Repeater数据分页
2025-05-29 25 - 
            2025-06-04 63
 - 
            2025-05-25 84
 - 
            2025-05-27 103
 
        
    		
            	
        
        
        