新建包com.test里面新建Test.java文件
html
package com.test; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class Test { @RequestMapping("test") //表示访问地址 public String test1(){ System.out.println("load"); return "demo" ; } }
在上述视图解析器中,若是Controller返回的是blog/index,那么经过视图解析器解析以后的视图就是/demo.jsp。java
@Controller:
用于标识是处理器类;
web
@RequestMapping:
请求处处理器功能方法的映射规则;
spring
@RequestParam:
请求参数处处理器功能处理方法的方法参数上的绑定;
session
@ModelAttribute:
请求参数到命令对象的绑定;
app
@SessionAttributes:
用于声明session级别存储的属性,放置在处理器类上,一般列出
jsp
模型属性(如@ModelAttribute)
对应的名称,
则这些属性会透明的保存到session中;ui
@InitBinder:
自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;
url
更详细的说明来源于:http://www.cnblogs.com/superjt/p/3309255.htmlspa
package controller; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import entity.User; @Controller //相似Struts的Action public class TestController { @RequestMapping("test/login.do") // 请求url地址映射,相似Struts的action-mapping public String testLogin(@RequestParam(value="username")String username, String password, HttpServletRequest request) { // @RequestParam是指请求url地址映射中必须含有的参数(除非属性required=false) // @RequestParam可简写为:@RequestParam("username") if (!"admin".equals(username) || !"admin".equals(password)) { return "loginError"; // 跳转页面路径(默认为转发),该路径不须要包含spring-servlet配置文件中配置的前缀和后缀 } return "loginSuccess"; } @RequestMapping("/test/login2.do") public ModelAndView testLogin2(String username, String password, int age){ // request和response没必要非要出如今方法中,若是用不上的话能够去掉 // 参数的名称是与页面控件的name相匹配,参数类型会自动被转换 if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return new ModelAndView("loginError"); // 手动实例化ModelAndView完成跳转页面(转发),效果等同于上面的方法返回字符串 } return new ModelAndView(new RedirectView("../index.jsp")); // 采用重定向方式跳转页面 // 重定向还有一种简单写法 // return new ModelAndView("redirect:../index.jsp"); } @RequestMapping("/test/login3.do") public ModelAndView testLogin3(User user) { // 一样支持参数为表单对象,相似于Struts的ActionForm,User不须要任何配置,直接写便可 String username = user.getUsername(); String password = user.getPassword(); int age = user.getAge(); if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return new ModelAndView("loginError"); } return new ModelAndView("loginSuccess"); } @Resource(name = "loginService") // 获取applicationContext.xml中bean的id为loginService的,并注入 private LoginService loginService; //等价于spring传统注入方式写get和set方法,这样的好处是简洁工整,省去了没必要要得代码 @RequestMapping("/test/login4.do") public String testLogin4(User user) { if (loginService.login(user) == false) { return "loginError"; } return "loginSuccess"; } }
以上4个方法示例,是一个Controller里含有不一样的请求url,也能够采用一个url访问,经过url参数来区分访问不一样的方法,代码以下:
package controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/test2/login.do") // 指定惟一一个*.do请求关联到该Controller public class TestController2 { @RequestMapping public String testLogin(String username, String password, int age) { // 若是不加任何参数,则在请求/test2/login.do时,便默认执行该方法 if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return "loginError"; } return "loginSuccess"; } @RequestMapping(params = "method=1", method=RequestMethod.POST) public String testLogin2(String username, String password) { // 依据params的参数method的值来区分不一样的调用方法 // 能够指定页面请求方式的类型,默认为get请求 if (!"admin".equals(username) || !"admin".equals(password)) { return "loginError"; } return "loginSuccess"; } @RequestMapping(params = "method=2") public String testLogin3(String username, String password, int age) { if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return "loginError"; } return "loginSuccess"; } }
其实RequestMapping在Class上,可看作是父Request请求url,而RequestMapping在方法上的可看作是子Request请求url,父子请求url最终会拼起来与页面请求url进行匹配,所以RequestMapping也能够这么写:
package controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/test3/*") // 父request请求url public class TestController3 { @RequestMapping("login.do") // 子request请求url,拼接后等价于/test3/login.do public String testLogin(String username, String password, int age) { if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return "loginError"; } return "loginSuccess"; } }