requestparam的作用_关于@RequestMapping和@RequestParam注解(四)

通过配置@RequestMapping,可以绑定请求路径与处理请求的方法,例如:

@RequestMapping("login.com")

public String showLogin() { ...

即:通过以上配置,当接收到login.com请求时,SpringMVC会自动调用showLogin()方法。

除了在方法之前添加该注解以外,该注解还可以添加在控制器类的声明之前,例如:

@RequestMapping("user")

@Controller

public class UserControler { ...

当方法之前(也就是在类)添加了该注解之后,方法内配置的所有请求路径,在最终访问时都必须添加user路径,例如:http://localhost:8080/SPRINGMVC-USER/user/login.com。

通常,推荐在类之前也添加该注解,方便管理路径,例如在某个新闻管理的应用中,可能存在news_list.com、news_info.com的请求,而在这个应用中,也会有用户数据,就存在user_list.com、user_info.com,可以发现,为了保证请求路径是唯一的,都需要在路径之前添加xxx_作为前缀,这样的管理方式是非常不方便的,在类之前添加@RequestMapping注解就可以很好的解决这个问题,每个路径之前根本就不需要配置前缀字符,也不会发生冲突!

在@RequestMapping的使用过程中,路径可以使用/作为第1个字符,也可以不需要这个字符,例如:

/user       /login.com

user        login.com

/user       login.com

user        /login.com

以上4种配置都是正确的!通常,推荐使用/作为第1个字符,即以上第1种方式!

除了配置请求路径以外,使用@RequestMapping还可以限制请求方式,即某个路径可以设置为只允许POST请求,而不接收GET请求!

【GET】会将请求的参数与值体现在URL中;请求的参数与值会受到URL长度限制,不适用于传递大量的数据;

【POST】请求的参数与值不会体现在URL中;可以传递大量的数据;

【选取】请求的参数与值涉及隐私(例如密码)则必须使用POST;数据量可能较大时必须使用POST;需要共享URL且其中包含参数时必须使用GET;支持页面刷新必须使用GET。

【复杂度】如果要发出POST请求,只能通过

中的或,或者通过JS技术,否则,在Web领域无法发出POST请求,而这2种方式也都可以用于发出GET请求,除此以外,直接在浏览器中输入某个URL发出的也是GET请求,总的来说,发GET请求要简单得多。

【小结】参考以上“选取”原则,选择请求方式,如果两者均可,则使用GET即可。

在@RequestMapping中配置method属性可以限制请求类型:

@RequestMapping(value="handle_reg.com",method=RequestMethod.POST)

public String handleReg() {

例如以上代码限制了handle_reg.com必须通过POST方式来请求,如果使用GET方式,则会返回405错误!

只有需要限定请求方式时,才需要显式的配置value="handlereg.com",否则,直接将"handlereg.do"配置在注解中即可!

小结:关于@RequestMapping注解,主要作用是配置请求路径,推荐在控制器类和处理请求的方法之前都添加该注解,类之前的注解是用于配置请求路径中的层次,方法之前的注解是用于配置请求的资源,关于路径的配置是该属性的value属性,如果只配置请求路径,可以不用显式的声明这是配置value属性,而是直接把值写出来即可,例如不需要写成@RequestMapping(values="login.com"),而可以直接写成@RequestMapping("login.com"),在配置路径时,推荐使用/作为第1个字符,例如@RequestMapping("/login.com"),如果还需要限制请求方式,则必须显式的声明路径为value属性的值,并且添加配置method属性,例如:@RequestMapping(value="handle_reg.com", method=RequestMethod.POST)。

5. 关于@RequestParam注解

使用@RequestParam注解,可以解决请求参数名称与处理请求的方法的参数名称不一致的问题,例如:

public String handleLogin(@RequestParam("name") String username, String password) { ...

则请求参数的名称是name,而处理请求的方法中的参数名称却是username,这是可以正常运行的!

一旦使用了@RequestParam注解,默认情况下,参数就是必须的!例如配置了@RequestParam("passwd") String password后,如果请求中并不存在名为passwd的参数,则会出现400错误:

HTTP Status 400 - Required String parameter 'passwd' is not present

没有提交名为passwd的参数,与提交了空值,是两码事!即:如果提交了passwd参数却没有值(例如输入框中没有输入值),在服务器将得到空字符串(""),程序并不会出现错误!如果根本就没有提交名为passwd的参数,则会导致400错误!

如果使用了@RequestParam注解,却又不想设置为必须提交该参数,可以:

@RequestParam(value="name", required=false)

则将根据name去接收参数,如果有值,会正确接收,如果没有(没有提交该名称的参数),则会是null值!

当required=false时,意味着可以不必提交该参数,还可以多配置一项defaultValue属性(The default value to use as a fallback when the request parameter value is not provided or empty. Supplying a default value implicitly sets required() to false.),表示如果请求中没有提交该参数,则默认值是多少!例如:

@RequestParam(value="passwd", required=false, defaultValue="888999") String password

以上代码表示:希望请求中包含名为passwd的参数,如果有,则值用于方法的String password的参数,如果没有,也不是必须要提供(required=false),并且使用"888999"作为默认值(defaultValue="888999"),即:在这种情况下,String password的值是"888999"。

小结:@RequestParam注解是用于处理请求的方法中的参数之前,可以配置3项属性,分别是value表示请求参数名称,required表示请求中是否必须包含该参数,defaultValue表示参数的默认值,当有以上任何一种需求时,都需要配置该注解,即:请求参数名称与处理请求的方法的参数名称不一致;强制必须提交某个参数;为某个参数配置默认值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`@RequestMapping` 和 `@RequestParam` 是 Spring MVC 框架中常用的注解,用于处理 HTTP 请求映射和参数绑定。 `@RequestMapping` 注解用于将一个 HTTP 请求映射到一个特定的处理方法或控制器类。它可以用在类级别和方法级别上。在类级别上使用时,可以为整个控制器类指定一个基础的请求路径,而在方法级别上使用时,可以为具体的处理方法指定相对于类级别请求路径的具体路径。 示例: ```java @Controller @RequestMapping("/users") public class UserController { @RequestMapping(value = "/{id}", method = RequestMethod.GET) public String getUser(@PathVariable("id") int userId) { // 处理获取用户信息的逻辑 return "user"; } } ``` 上面的示例中,`@RequestMapping` 注解用于将 `/users/{id}` 请求映射到 `getUser()` 方法,其中 `{id}` 表示一个路径变量,在处理方法中通过 `@PathVariable` 注解将路径变量绑定到方法参数上。 `@RequestParam` 注解用于将请求参数绑定到方法参数上。它可以用于处理 GET、POST 等请求方法中的参数。默认情况下,`@RequestParam` 注解要求请求参数必须存在,否则会抛出异常。如果要将参数设置为可选,可以通过设置 `required` 属性为 `false`。 示例: ```java @Controller @RequestMapping("/users") public class UserController { @RequestMapping(value = "/search", method = RequestMethod.GET) public String searchUsers(@RequestParam("name") String name, @RequestParam(value = "age", required = false) Integer age) { // 处理根据姓名和年龄搜索用户的逻辑 return "users"; } } ``` 上面的示例中,`@RequestParam` 注解用于将 URL 查询参数 `name` 绑定到 `name` 参数上,并将其设置为必需参数;将 URL 查询参数 `age` 绑定到 `age` 参数上,并将其设置为可选参数。 通过使用 `@RequestMapping` 和 `@RequestParam` 注解,可以方便地处理不同的请求映射和参数绑定需求,使代码更加清晰和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值