SpringMVC @RequestMapping注解(重点)、@RequestParam注解、@PathVariable注解
程序员文章站
2022-06-16 08:58:06
...
该篇博客主要细说@RequestMapping注解(重点)、@RequestParam注解、@PathVariable注解
该篇博客主要阐述
1、@RequestMapping简述
2、@RequestMapping注解方法
3、@RequestMapping注解一个控制器类
4、@RequestMapping属性——method
5、@RequestMapping使用Ant风格的URL
6、@RequestMapping属性——params
7、@RequestParam注解(类似于params)
8、@PathVariable注解(使用路径变量)
一、@RequestMapping简述
当我们需要在控制类的内部为每一个动作开发相应的处理方法。要让Spring知道用哪一种方法来处理它的动作,需要使用import org.springframework.web.bind.annotation.RequestMapping注释类型映射的URI与方法
1、RequestMapping注解的作用:映射一个请求和一种方法。可以使用@RequestMapping注解一种方法或类
2、一个采用@RequestMapping注解的方法将成为一个请求处理方法,并由调度程序在接收到对应的URL请求时调用
二、@RequestMapping注解方法
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author LinJie E-mail:aaa@qq.com
* @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
三、@RequestMapping注解一个控制器类
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author LinJie E-mail:aaa@qq.com
* @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
四、@RequestMapping属性——method
method属性用来指示该方法仅处理哪些HTTP方法
仅处理POST和PUT方法时
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:aaa@qq.com
* @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";
}
}
请求表单
<form action="springmvc/test2" method="POST">
<input type="text" name="test">
<input type="submit" value="submit">
</form>
结果正常
如果请求表单是GET请求
<form action="springmvc/test2" method="GET">
<input type="text" name="test">
<input type="submit" value="submit">
</form>
报405错误
若method属性只有一个HTTP方法值,则无需花括号
method=RequestMethod.POST
五、@RequestMapping使用Ant风格的URL
- ?:匹配文件名中的一个字符
- *:匹配文件名中的任意字符
-
**:匹配多层路径
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/**
- @author LinJie E-mail:aaa@qq.com
- @version 创建时间:2018年5月14日 下午4:35:59
- RequestMapping使用Ant风格的URL的控制器
*/
@Controller
@RequestMapping(value=”/springmvc”)
public class RequestMappingTest {
//Ant风格URL
//?:匹配文件名中的一个字符
//*:匹配文件名中的任意字符
//**:匹配多层路径
//@RequestMapping(value=”/*/test3”)
//@RequestMapping(value=”/**/test3”)
@RequestMapping(value=”/*/test3”)
public String test3() {
System.out.println(“test3”);
return “hello”;
}
}
可以使用如下URL访问test3方法
localhost:8080/Springmvc_RequestMapping/springmvc/pppaaaoooqqq/test3
结果正常
六、@RequestMapping属性——params
给页面设置传递参数
package linjie.springmvc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author LinJie E-mail:aaa@qq.com
* @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
404报错
必须要传递一个user参数
http://localhost:8080/Springmvc_RequestMapping/springmvc/testparams?user=linjie
显示正常
七、@RequestParam(类似于params)
映射请求参数
把需要的参数注解到方法的参数上去
- value:请求参数的参数名
- required:该参数是否是必须的,默认为true
-
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:aaa@qq.com * @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"; } }
1、传递请求参数
http://localhost:8080/Springmvc_RequestMapping/springmvc/test4?user=XLJ
显示正常,user传递成功
2、不传递请求参数
http://localhost:8080/Springmvc_RequestMapping/springmvc/test4
显示正常,user没有传递,使用默认值linjie
八、@PathVariable使用路径变量
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:aaa@qq.com
* @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";
}
}
浏览器输入如下URL
http://localhost:8080/Springmvc_RequestMapping/springmvc/test5/2222
访问正常
1、注意:@RequestMapping(value=”test5/{id}”)变量路径必须放在花括号之间
2、可以在请求映射中使用多个路径变量,例如id和name两个路径变量
@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学习指南》
推荐阅读
-
SpringMVC中@RequestParam注解作用
-
springmvc注解@Controller和@RequestMapping
-
【SpringMvc学习及总结05】@RequestMapping注解
-
springMvc入门 三.Scope注解与@RequestParam注解
-
SpringMVC 中@RequestParam注解、@RequestHeader注解、@RequestBody注解请求
-
SpringMVC中RequestMapping注解(作用、出现的位置、属性)
-
SpringMVC中@RequestMapping处理请求参数的@RequestParam注解
-
SpringMVC @RequestMapping注解详解
-
@RequestParam,@PathParam,@PathVariable等注解区别
-
SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解