springmvc注解一

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>
原文地址:https://www.cnblogs.com/haizhilangzi/p/11028114.html