Spring boot (3): @ RequestMapping 의 Form 폼 매개 변수 전달 및 POJO 바 인 딩 인 스 턴 스 설명

12367 단어 Springboot
Spring boot (3): @ RequestMapping 의 Form 폼 매개 변수 전달 및 POJO 바 인 딩 인 스 턴 스 설명
오늘 우 리 는 전단 form 폼 매개 변 수 를 @ RequestMapping 을 통 해 백 엔 드 의 자바 빈 (POJO) 과 어떻게 연결 하 는 지 이야기 할 것 입 니 다.
본 고 는 앞의 두 블 로그 인 을 바탕 으로 코드 는 SpringBoot 1.5.8 maven 웹 프로젝트 를 신속하게 구축 합 니 다.
먼저 간단 한 로그 인 인터페이스 폼 코드 index. html 를 작성 합 니 다. 인터페이스 가 매우 간단 합 니 다. 두 개의 입력 상자, 하나의 로그 인 버튼:

<html lang="zh-cn">
<head>
    <meta charset="utf-8"/>

    <title>Logintitle>

    <link rel="stylesheet" href="/SpringBootBase/css/bootstrap.min.css"/>
    <link rel="stylesheet" href="/SpringBootBase/css/customer/login.css"/>
head>

<body>
    <div class="container">
        <form class="form-signin" action="./login" method="post">
            <h2 class="form-signin-heading">     h2>
            <input type="text" class="form-control" placeholder="  " name="username"/>
            <input type="password" class="form-control" placeholder="  " name="password"/> 
            <button class="btn btn-lg btn-primary btn-block" type="submit">  button>
        form>
    div>
body>
html>

POJO 보기 대상 UserVO 를 하나 더 쓰 겠 습 니 다.
public class UserVO {

    public String username;
    public String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "username: " + username + ", password: " + password;
    }

}

controller 하나 더 써 주세요.
@Controller
public class LoginController {

    @RequestMapping(value = "login", method = RequestMethod.POST)
    public String login(UserVO user){
        System.out.println("POJO: " + user.getClass().getName() + 
                ", hash code: " + user.hashCode() + ", " + user.toString());
        return "redirect:/";
    }

}

Tomcat 서비스 시작, 주소 표시 줄 입력https://localhost:8443/SpringBootBase/ 다음 화면 보이 기,
계 정 admin 및 비밀번호 123456 을 입력 하 십시오. 콘 솔 에서 다음 로그 출력 을 볼 수 있 습 니 다.
POJO: tech.onroad.springbootbase.bean.UserVO, hash code: 1036686981, username: admin, password: 123456
전단 폼 에서 전 달 된 두 개의 인자 username 을 설명 합 니 다. password 는 UserVO 라 는 POJO 에 자동 으로 연 결 됩 니 다.사실 이것 은 Spring @ RequestMapping 이라는 주해 의 공로 입 니 다. 이것 은 형 삼 의 POJO 를 자동 으로 스 캔 하고 대상 을 만 듭 니 다. 전단 에 들 어 오 는 매개 변수 가 POJO 구성원 변수 이름과 같 으 면 POJO 의 setter 방법 으로 이 대상 에 게 전 달 됩 니 다.
Q & A
1. 일치 하 는 매개 변수 에서 대상 구성원 변수의 대소 문 자 를 무시 합 니까?
UserVO 의 구성원 변 수 를 username 으로 변경 합 니 다. 즉,
public class UserVO {

    private String userName;
    private String password;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "userName: " + userName + ", password: " + password;
    }

}

컨트롤 러 코드 가 변 하지 않 음
다시 실행 합 니 다. 같은 계 정 admin 과 비밀 번 호 를 입력 하 십시오. 123456 에서 얻 은 로 그 는 다음 과 같 습 니 다.
POJO: tech.onroad.springbootbase.bean.UserVO, hash code: 1762238496, userName: null, password: 123456
userName 의 값 이 비어 있 습 니 다. 일치 하 는 과정 에서 대소 문 자 를 구분 하 는 것 이 분명 합 니 다.
2. 만약 에 형 삼 이 두 개의 POJO 대상 이 있다 면 그들 은 마침 username 의 구성원 변 수 를 가지 고 있다 면 어떻게 일치 할 까요?
마찬가지 로 우 리 는 코드 를 통 해 검증 합 니 다.
우선, 우 리 는 StudentVO POJO 를 추가 합 니 다. 이 대상 은 username 이 라 고도 부 르 는 구성원 변수 가 있 습 니 다.
public class StudentVO {
    private String username;
    private int age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "username: " + username + ", age: " + age;
    }

}

controller login 방법 변경
@Controller
public class LoginController {

    @RequestMapping(value = "login", method = RequestMethod.POST)
    public String login(UserVO user, StudentVO student){
        System.out.println("POJO: " + user.getClass().getName() + 
                ", hash code: " + user.hashCode() + ", " + user.toString());
        System.out.println("POJO: " + student.getClass().getName() + 
                ", hash code: " + student.hashCode() + ", " + student.toString());
        return "redirect:/";
    }
}

실행, 같은 계 정 admin 및 비밀 번 호 를 입력 12345, 아래 log 를 얻 을 수 있 습 니 다.
POJO: tech.onroad.springbootbase.bean.UserVO, hash code: 1260683413, userame: admin, password: 123456 POJO: tech.onroad.springbootbase.bean.StudentVO, hash code: 816397424, username: admin, age: 0
형 삼 의 구성원 변수 이름과 전단 에 전 달 된 매개 변수 이름 이 일치 하면 setter 방법 을 통 해 자바 빈 에 대응 하 는 구성원 변수 에 매개 변 수 를 전달 한 다 는 뜻 이다.
전체 코드 는 나의 github 에서 다운로드 할 수 있 습 니 다:https://github.com/onroadtech/SpringbootBase/ branch: master commit-id: 94dd507dfc9c71e62e1b0f3b19f54843c583d84e
본 박문 은 이미 나의 개인 블 로그 사이트 에 동시 발표 되 었 으 니, 전재 하여 출처 를 밝 히 는 것 을 환영 합 니 다.개인 블 로그: www. onroad. tech 지정 메 일: [email protected]

좋은 웹페이지 즐겨찾기