该篇博客主要细说@RequestMapping注解(重点)、@RequestParam注解、@PathVariable注解
当我们需要在控制类的内部为每一个动作开发相应的处理方法。要让Spring知道用哪一种方法来处理它的动作,需要使用import org.springframework.web.bind.annotation.RequestMapping注释类型映射的URI与方法
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author LinJie E-mail:[email protected]
* @version 创建时间:2018年5月14日 下午4:35:59
* RequestMapping注解方法的控制器
*/
@Controller
public class RequestMappingTest {
//此时映射到该方法上的URL:http://Springmvc_RequestMapping/test
//当只有一个属性时可以忽略value
@RequestMapping(value="/test")
public String test() {
System.out.println("test");
return "hello";
}
}
可以使用如下URL访问test方法
http://localhost:8080/Springmvc_RequestMapping/test
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author LinJie E-mail:[email protected]
* @version 创建时间:2018年5月14日 下午4:35:59
* RequestMapping修饰类的控制器
*/
@Controller
@RequestMapping(value="/springmvc")
public class RequestMappingTest {
//此时映射到该方法上的URL:http://Springmvc_RequestMapping/springmvc/test
//当只有一个属性时可以忽略value
@RequestMapping(value="/test")
public String test() {
System.out.println("test");
return "hello";
}
}
可以使用如下URL访问test方法
http://localhost:8080/Springmvc_RequestMapping/springmvc/test
method属性用来指示该方法仅处理哪些HTTP方法
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* @author LinJie E-mail:[email protected]
* @version 创建时间:2018年5月14日 下午4:35:59
* RequestMapping属性含method的控制器
*/
@Controller
@RequestMapping(value="/springmvc")
public class RequestMappingTest {
//method属性指示该方法仅处理哪些Http请求
//处理多个Http请求:method={RequestMethod.POST,RequestMethod.PUT}
@RequestMapping(value="/test2",method= {RequestMethod.POST,RequestMethod.PUT})
public String test2() {
System.out.println("test2");
return "hello";
}
}
请求表单
结果正常
如果请求表单是GET请求
报405错误
若method属性只有一个HTTP方法值,则无需花括号
method=RequestMethod.POST
**:匹配多层路径
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
可以使用如下URL访问test3方法
localhost:8080/Springmvc_RequestMapping/springmvc/pppaaaoooqqq/test3
结果正常
给页面设置传递参数
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author LinJie E-mail:[email protected]
* @version 创建时间:2018年5月14日 下午4:35:59
* RequestMapping属性params的控制器
*/
@Controller
@RequestMapping(value="/springmvc")
public class RequestMappingTest {
//@RequestParam属性——params
@RequestMapping(value="/testparams" , params="user")
public String testparams(String user) {
System.out.println("user :"+user);
return "hello";
}
}
如果页面访问:
http://localhost:8080/Springmvc_RequestMapping/springmvc/testparams
必须要传递一个user参数
http://localhost:8080/Springmvc_RequestMapping/springmvc/testparams?user=linjie
显示正常
映射请求参数
把需要的参数注解到方法的参数上去
defaultValue:请求参数的默认值
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @author LinJie E-mail:[email protected]
* @version 创建时间:2018年5月14日 下午4:35:59
* @RequestParam
*/
@Controller
@RequestMapping(value="/springmvc")
public class RequestMappingTest {
//@RequestParam
//与@RequestParam属性——params类似
//映射请求参数
//value:请求参数的参数名
//required:该参数是否是必须的,默认为true
//defaultValue:请求参数的默认值
//SpringMVC获取请求参数的优势:在Servlet中获取请求参数值相对麻烦:String user = HttpServletRequest.getParameter("user");
@RequestMapping(value="/test4")
public String test4(@RequestParam(value="user" , required=false , defaultValue="linjie") String user) {
System.out.println("user:"+user);
return "hello";
}
}
http://localhost:8080/Springmvc_RequestMapping/springmvc/test4?user=XLJ
显示正常,user传递成功
http://localhost:8080/Springmvc_RequestMapping/springmvc/test4
显示正常,user没有传递,使用默认值linjie
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author LinJie E-mail:[email protected]
* @version 创建时间:2018年5月14日 下午4:35:59
* @PathVariable使用路径变量
*/
@Controller
@RequestMapping(value="/springmvc")
public class RequestMappingTest {
//@PathVariable
//使用路径变量
//注意:使用路径变量,首先需要在RequestMapping注解的值属性中添加一个变量,该变量必须放在花括号之间
//然后,在方法签名 中添加同名变量,并加上@PathVariable注解.当该方法被调用时,请求URL的id值将被复制到路径变量中,并可以在方法中使用
@RequestMapping(value="test5/{id}")
public String test5(@PathVariable int id) {
System.out.println("id :"+id);
return "hello";
}
}
http://localhost:8080/Springmvc_RequestMapping/springmvc/test5/2222
访问正常
@RequestMapping(value="test5/{name}/{id}")
public String test5(@PathVariable String name,@PathVariable int id) {
System.out.println("name :"+name+" ,id :"+id);
return "hello";
}
http://localhost:8080/Springmvc_RequestMapping/springmvc/test5/linjielinjielinjie/0000001
访问正常
工程下载
《Spring MVC学习指南》