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 55 56 57 58 59 60 61
// request和response不必非要出现在方法中,如果用不上的话可以去掉 // 参数的名称是与页面控件的name相匹配,参数类型会自动被转换
if (!\ return new ModelAndView(\手动实例化ModelAndView完成符串
}
return new ModelAndView(new RedirectView(\采用重定向 // 重定向还有一种简单写法
// return new ModelAndView(\ }
@RequestMapping(\
public ModelAndView testLogin3(User user) {
// 同样支持参数为表单对象,类似于Struts的ActionForm,User不需要任何配置 String username = user.getUsername(); String password = user.getPassword(); int age = user.getAge();
if (!\ return new ModelAndView(\ }
return new ModelAndView(\ }
@Resource(name = \获取applicationContext.xml中bean的id private LoginService loginService; //等价于spring传统注入方式写get和set方
@RequestMapping(\ public String testLogin4(User user) {
if (loginService.login(user) == false) { return \ }
return \ } }
以上4个方法示例,是一个Controller里含有不同的请求url,也可以采用一个url访问,通过url参数来区分访问不同的方法,代码如下: ?
1 package controller;
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
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping(\指定唯一一个*.do请求关联到该Controller public class TestController2 {
@RequestMapping
public String testLogin(String username, String password, int age) { // 如果不加任何参数,则在请求/test2/login.do时,便默认执行该方法
if (!\ return \ }
return \ }
@RequestMapping(params = \ public String testLogin2(String username, String password) { // 依据params的参数method的值来区分不同的调用方法 // 可以指定页面请求方式的类型,默认为get请求
if (!\ return \ }
return \ }
@RequestMapping(params = \
public String testLogin3(String username, String password, int age) {
if (!\ return \ }
return \ } }
其实RequestMapping在Class上,可看做是父Request请求url,而
RequestMapping在方法上的可看做是子Request请求url,父子请求url最终会拼起来与页面请求url进行匹配,因此RequestMapping也可以这么写:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(\父request请求url public class TestController3 {
@RequestMapping(\子request请求url,拼接后等价于/test3/login public String testLogin(String username, String password, int age) {
if (!\ return \ }
return \ } }
三、结束语
掌握以上这些Spring MVC就已经有了很好的基础了,几乎可应对与任何开发,在熟练掌握这些后,便可更深层次的灵活运用的技术,如多种视图技术,例如 Jsp、Velocity、Tiles、iText 和 POI。Spring MVC框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。

