首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

Spring mvc 控制器多边法访问

2013-07-04 
Spring mvc 控制器多方法访问Spring mvc默认配置文件放在/WEB-INF/目录下的,而且其名字的也是有约定的,讲

Spring mvc 控制器多方法访问

Spring mvc默认配置文件放在/WEB-INF/目录下的,而且其名字的也是有约定的,讲一下修改Spring mvc的默认配置.修改web.xml配置文件即可.其配置如下:

Xml代码??Spring mvc 控制器多边法访问
  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <web-app?version="2.5"???
  3. ????xmlns="http://java.sun.com/xml/ns/javaee"???
  4. ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"???
  5. ????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee???
  6. ????http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">??
  7. ??????
  8. ??????<servlet>??
  9. ????????<servlet-name>springmvc</servlet-name>?????
  10. ????????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>???
  11. ????????<init-param>????
  12. ????????????<param-name>contextConfigLocation</param-name>????
  13. ????????????<param-value>classpath*:/springmvc.xml</param-value>????
  14. ????????</init-param>??
  15. ????????<!--?设置servlet的启动级别?-->??
  16. ????????<load-on-startup>1</load-on-startup>??
  17. ??????</servlet>??
  18. ??????<servlet-mapping>??
  19. ????????<servlet-name>springmvc</servlet-name>??
  20. ????????<url-pattern>/</url-pattern>??
  21. ??????</servlet-mapping>??
  22. ????
  23. </web-app>??

?

这里我们在声明DispatcherServlet时给它指定了一个参数,contextConfigLocation是参数名称名字固定,classpath*:/springmvc.xml是指定Spring mvc的配置文件在classpath下.即src下.

?

?


上一章我们说到,控制器要实现Controller接口并实现它的方法,但是如果一个请求对应一个类那Spring就太土了,所以理所当然有其它方法.

?

Java代码??Spring mvc 控制器多边法访问
  1. package?gd.hz.springmvc.controller;??
  2. ??
  3. import?javax.servlet.http.HttpServletRequest;??
  4. import?javax.servlet.http.HttpServletResponse;??
  5. ??
  6. import?org.springframework.web.servlet.ModelAndView;??
  7. import?org.springframework.web.servlet.mvc.multiaction.MultiActionController;??
  8. ??
  9. //继承MultiActionController实现多方法??
  10. public?class?MultiController?extends?MultiActionController?{??
  11. ??????
  12. ????public?ModelAndView?add(HttpServletRequest?request?,?HttpServletResponse?response)??
  13. ????{??
  14. ????????System.out.println("-------->add")?;??
  15. ????????return?new?ModelAndView("add")?;??
  16. ????}??
  17. ??????
  18. ????public?ModelAndView?del(HttpServletRequest?request?,?HttpServletResponse?response)??
  19. ????{??
  20. ????????System.out.println("-------->del")?;??
  21. ????????return?new?ModelAndView("del")?;??
  22. ????}??
  23. }??

?

这里我们继承MultiActionController类,就可以像Struts2那样一个控制器可以对应多个请求.这个我们要在方法中写上HttpServletRequest和HttpServletResponse要不然是不行的.当然有其它更简单的写法,下次再介绍.

?

写完控制器之后,配置我们的spring mvc文件,如下图:

Xml代码??Spring mvc 控制器多边法访问
  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <beans?xmlns="http://www.springframework.org/schema/beans"??
  3. ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?xmlns:p="http://www.springframework.org/schema/p"??
  4. ????xmlns:context="http://www.springframework.org/schema/context"??
  5. ????xmlns:mvc="http://www.springframework.org/schema/mvc"??
  6. ????xsi:schemaLocation="????????
  7. ???????????http://www.springframework.org/schema/beans????????
  8. ???????????http://www.springframework.org/schema/beans/spring-beans-3.0.xsd????????
  9. ???????????http://www.springframework.org/schema/context????????
  10. ???????????http://www.springframework.org/schema/context/spring-context-3.0.xsd???????
  11. ???????????http://www.springframework.org/schema/mvc????????
  12. ???????????http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">??
  13. ???????????
  14. ????<bean??
  15. ????????class="org.springframework.web.servlet.view.InternalResourceViewResolver">??
  16. ????????<property?name="prefix"?value="/"?/>??
  17. ????????<property?name="suffix"?value=".jsp"?/>??
  18. ????</bean>??
  19. ??????
  20. ????<!--?声明一个Controller中使用多个方法?-->??
  21. ????<bean?id="parameterMethodNameResolver"?class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">??
  22. ????????<!--?传参数时用这个作为名称?-->??
  23. ????????<property?name="paramName"?value="action"></property>??
  24. ????</bean>??
  25. ??????
  26. ????<!--?声明DispatcherServlet不要拦截下面声明的目录?-->??
  27. ????<mvc:resources?location="/images/"?mapping="/images/**"/>??
  28. ??????
  29. ????<bean?name="/mvc/multi.html"?class="gd.hz.springmvc.controller.MultiController">??
  30. ????????<!--?名字固定?-->??
  31. ????????<property?name="methodNameResolver">??
  32. ????????????<!--?指定使用的解析器?-->??
  33. ????????????<ref?bean="parameterMethodNameResolver"/>??
  34. ????????</property>??
  35. ????</bean>??
  36. </beans>???

?

Xml代码??Spring mvc 控制器多边法访问
  1. <bean?id="parameterMethodNameResolver"?class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">??
  2. ????????<property?name="paramName"?value="action"></property>??
  3. </bean>??

?

这个方法是告诉容器使用多方法解析,其中的属性值中的action是随意的,例如当我们访问控制器的add方法时,
我们可以这样写:http://localhost/xxxx?action=add ,很明显它的作用就是告诉容器调用那个方法时的参数名称.

?

Xml代码??Spring mvc 控制器多边法访问
  1. <bean?name="/mvc/multi.html"?class="gd.hz.springmvc.controller.MultiController">??
  2. ????<!--?名字固定?-->??
  3. ????<property?name="methodNameResolver">??
  4. ????????<!--?指定使用的解析器?-->??
  5. ????????<ref?bean="parameterMethodNameResolver"/>??
  6. ????</property>??
  7. </bean>??

?这里声明我们写的控制器类要使用的解析器.说白了就是注入,url的访问路径是mvc/multi.html

?

Xml代码??Spring mvc 控制器多边法访问
  1. <mvc:resources?location="/images/"?mapping="/images/**"/>??

?特别说明一下这句说,记得我们在web.xml中声明DispatcherServlet拦截所有的请求,也就是说我们的静态资源,比如js文件 图片都会被拦截.这不是我们需要的,而上面这句说是声明那个目录是不用DispatcherServlet拦截的.

?

根据我们spring mvc 中的配置,我们输入url进行测试
http://localhost:88/SpringMVC1/mvc/multi.html?action=del
http://localhost:88/SpringMVC1/mvc/multi.html?action=add
这样他分别访问我们的del 和add 方法

热点排行