• 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>
    
  • 相关阅读:
    Mutex和Lock
    Thread和Promise以及packaged_task
    async和Future
    《并行程序设计导论》——读书笔记汇总
    UnrealEngine4蓝图可视化编程 完整例子 勘误
    BOOST下载
    sql 解析xml
    AutoResetEvent 笔记2
    ssh免密登录设置 (普通用户和root用户)
    npm设置淘宝镜像
  • 原文地址:https://www.cnblogs.com/haizhilangzi/p/11028114.html
Copyright © 2020-2023  润新知