org.springframework.web.bind.annotation.RequestParam注解类型用于将指定的请求参数赋值给方法中 的形参

RequestParam注解

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Map; import org.springframework.core.annotation.AliasFor; @Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam { /**
* name属性的别名
*/
@AliasFor("name")
String value() default ""; /**
* 指定请求头绑定的名称
*/
@AliasFor("value")
String name() default ""; /**
* 指定参数是否为必须绑定
*/
boolean required() default true; /**
* 如果没有传递参数而使用的默认值
*/
String defaultValue() default ValueConstants.DEFAULT_NONE; }

UserController.java

package com.rookie.bigdata.controller;

import com.rookie.bigdata.domain.User;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import java.util.ArrayList;
import java.util.List; @Controller
@RequestMapping(value = "/user")
public class UserController { private static List<User> userList; public UserController() {
super();
userList = new ArrayList<User>();
} private static final Log logger = LogFactory
.getLog(UserController.class); @RequestMapping(value = "/register", method = RequestMethod.GET)
public String registerForm() {
logger.info("register GET方法被调用...");
// 跳转到注册页面
return "registerForm";
} @RequestMapping(value = "/register", method = RequestMethod.POST)
// 将请求中的loginname参数的值赋给loginname变量,password和username同样处理
public String register(
@RequestParam("loginname") String loginname,
@RequestParam("password") String password,
@RequestParam("username") String username) {
logger.info("register POST方法被调用...");
// 创建User对象
User user = new User();
user.setLoginname(loginname);
user.setPassword(password);
user.setUsername(username);
// 模拟数据库存储User信息
userList.add(user);
// 跳转到登录页面
return "loginForm";
} @RequestMapping("/login")
public String login(
// 将请求中的loginname参数的值赋给loginname变量,password同样处理
@RequestParam("loginname") String loginname,
@RequestParam("password") String password,
Model model) {
logger.info("登录名:" + loginname + " 密码:" + password);
// 到集合中查找用户是否存在,此处用来模拟数据库验证
for (User user : userList) {
if (user.getLoginname().equals(loginname)
&& user.getPassword().equals(password)) {
model.addAttribute("user", user);
return "welcome";
}
}
return "loginForm";
} }

浏览器访问如下:



registerForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
<h3>注册页面</h3>
<form action="register" method="post">
<table>
<tr>
<td><label>登录名: </label></td>
<td><input type="text" id="loginname" name="loginname" ></td>
</tr>
<tr>
<td><label>密码: </label></td>
<td><input type="password" id="password" name="password"></td>
</tr>
<tr>
<td><label>真实姓名: </label></td>
<td><input type="text" id="username" name="username" ></td>
</tr>
<tr>
<td><input id="submit" type="submit" value="注册"></td>
</tr>
</table>
</form>
</body>
</html>

loginForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录页面</title>
</head>
<body>
<h3>登录页面</h3>
<form action="login" method="post">
<table>
<tr>
<td><label>登录名: </label></td>
<td><input type="text" id="loginname" name="loginname" ></td>
</tr>
<tr>
<td><label>密码: </label></td>
<td><input type="password" id="password" name="password"></td>
</tr>
<tr>
<td><input id="submit" type="submit" value="登录"></td>
</tr>
</table>
</form>
</body>
</html>

PathVariable注解

org.springframework.web.bind.annotation.PathVariable注解类型可以非常方便地获得请求URL中的动态参数,@PathVariable注解只支持一个属性value,类型String,表示绑定的名称,如果省略默认绑定同名参数。

@RequestHeader注解

org.springframework.web.bind.annotation.RequestHeader注解类型用于将请求的头信息区书记映射到功能处理方法的参数上

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import org.springframework.core.annotation.AliasFor; @Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestHeader { /**
* name属性的别名
*/
@AliasFor("name")
String value() default ""; /**
* 指定请求头绑定的名称
*/
@AliasFor("value")
String name() default ""; /**
* 指定参数是否必须绑定
*/
boolean required() default true; /**
* 如果没有传递参数而使用默认值
*/
String defaultValue() default ValueConstants.DEFAULT_NONE; }

@CookieValue注解

org.springframework.core.annotation.CookieValue用于将请求的Cookie书记映射到功能处理方法的参数上

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import org.springframework.core.annotation.AliasFor; @Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CookieValue { /**
* name属性的别名
*/
@AliasFor("name")
String value() default ""; /**
* 指定请求头绑定的名称
*/
@AliasFor("value")
String name() default ""; /**
* 只是参数是否必须绑定
*/
boolean required() default true; /**
* 如果没有传递参数而使用的默认值
*/
String defaultValue() default ValueConstants.DEFAULT_NONE; }

DataBindingController.java

package com.rookie.bigdata;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; /**
* Created by dell on 2019/6/15.
*/
@Controller
public class DataBindingController { private static final Log logger = LogFactory
.getLog(DataBindingController.class); // 测试@PathVariable注解
@RequestMapping(value = "/pathVariableTest/{userId}")
public void pathVariableTest(
@PathVariable Integer userId) {
logger.info("通过@PathVariable获得数据: " + userId);
} // 测试@RequestHeader注解
@RequestMapping(value = "/requestHeaderTest")
public void requestHeaderTest(
@RequestHeader("User-Agent") String userAgent,
@RequestHeader(value = "Accept") String[] accepts) {
logger.info("通过@requestHeaderTest获得数据: " + userAgent);
for (String accept : accepts) {
logger.info(accept);
}
} // 测试@CookieValue注解
@RequestMapping(value = "/cookieValueTest")
public void cookieValueTest(
@CookieValue(value = "JSESSIONID", defaultValue = "") String sessionId) {
logger.info("通过@requestHeaderTest获得数据: " + sessionId);
} }

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>数据绑定测试</title>
</head>
<body>
<h2>数据绑定测试</h2>
<a href="pathVariableTest/1">测试@PathVariable注解</a><br><br>
<a href="requestHeaderTest">测试@RequestHeader注解</a><br><br>
<a href="cookieValueTest">测试@CookieValue注解</a><br><br>
</body>
</html>

最新文章

  1. KALI Linux problems &amp; Study Red Hat | Ubuntu
  2. 6 Candy_Leetcode
  3. 出现了内部错误-网站中X509Certificate2加载证书时出错
  4. nmea协议
  5. Uiautomator 2.0之Configrator类学习小记
  6. 【实时】DevExpress内存监视
  7. 【Unity3D基础教程】给初学者看的Unity教程(五):详解Unity3D中的协程(Coroutine)
  8. package
  9. SQLServer的数据类型
  10. jboss7 加载module过程
  11. IBATIS动态SQL(1)
  12. angular当router使用userhash:false时路由404问题
  13. [原创]标记下Kendo使用中的问题, 持续更新中ing.....
  14. 使用python requests模块搭建http load压测环境
  15. [Unity插件]Lua行为树(十):通用行为和通用条件节点
  16. 【原创】关于程序卸载的一个Bug
  17. 杂项:BugFree
  18. Week3——文档代码分析
  19. [转]closed-form solution (闭合解/解析解)和数值解的理解
  20. 读我是一只IT小小鸟有感

热门文章

  1. CodeForces 150E: Freezing with Style
  2. vmware-vmx.exe进程应该怎么杀掉
  3. Linux提高工作效率的命令
  4. 我是sb
  5. gcc 在c代码中内嵌汇编调用c函数: 只是证明曾经我来过
  6. Oracle转换字符集操作到底发生了什么?
  7. SpringBoot 系列教程 JPA 错误姿势之环境配置问题
  8. html5滚动页面简单写法
  9. C运算符优先级和结合性
  10. linux --------- linux系统 安装tomcat