Spring中MVC模块代码详解

2025-05-29 0 81

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Spring中MVC模块代码详解 https://www.kuaiidc.com/113765.html

相关文章

发表评论
暂无评论