일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Boot
- CRUD
- 외부접속
- deferred
- egov
- modal #alert #sweetalert #sweetAlert #모달
- 우리마
- paginationInfo
- DAO
- Controller
- 대댓글
- REST
- 비동기
- Spring
- SpringFramework
- Today
- Total
우리마의 웹 개발
[Spring]JSP에서 요청 파라미터를 Controller에서 처리하는 방법(커맨드 객체 사용) 본문
앞선 글 들에서 view단에서 java단으로 데이터를 넘기는 데에 있어서 원초적이 방법들을 소개하였다. 이번엔 마지막으로 진짜 SpringFramework에 걸맞게 데이터를 처리하는 방법을 내 머가리 속에 기억하려고 글로 쓴다.
이번에는 쪼~금 다른 형태로 할 건데 일단 로그인 페이지에서 보낸 데이터 중 id와 pw를
java에서 비교하여서 성공하면 SUCCESS를 띄우는 페이지로 아니면 FAIL을 띄우는 페이지로 이동할 것이다.
지금은 DB를 사용하지 않기때문에 정적인 값과 비교한다.
먼저 VO클래스를 만들꺼다
VO(UserVO.java)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public class UserVO {
private String userId;
private String userPw;
private String userName;
private int userAge;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPw() {
return userPw;
}
public void setUserPw(String userPw) {
this.userPw = userPw;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
}
|
cs |
일단 VO라 함은 Value Object인데 jsp에서 input 태그의 name속성 값을 변수명으로 하고 private접급지정자로 정하며 getter, setter를 만들어 준다.
커맨드 객체라 함은 폼 태그의 값을 받아 처리할 수 있는 Class생성, 변수명을 폼 태그의 이름들과 일치하게 생성해주는 것을 말한다. VO가 바로 그것이다
@RequestParam은 jsp에서 java로 데이터가 그대로 넘어오는데 VO를 사용하면
Controller로 넘어오면서 controller가 VO의 setter들을 호출한다.
따라서 VO class에서 데이터 조작이 가능하며 유지보수가 편하다.
JAVA(StudyController.java)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
@RequestMapping("/study/join.do")
public String test(){
return "/study/join";
}
@RequestMapping("/study/register.do")
public String paramTest(UserVO vo, Model model) {
String result = "";
try {
System.out.println("/study/join 요청");
System.out.println("ID: " + vo.getUserId());
System.out.println("PW: " + vo.getUserPw());
System.out.println("Name: " + vo.getUserName());
System.out.println("Age: " + vo.getUserAge());
model.addAttribute("id", vo.getUserId());
model.addAttribute("pw", vo.getUserPw());
model.addAttribute("name", vo.getUserName());
model.addAttribute("age", vo.getUserAge());
if(vo.getUserId().equals("weMa") && vo.getUserPw().equals("1")) {
result = "/study/success";
}
else {
result = "/study/fail";
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return result;
}
|
cs |
1~4 LINE : join.jsp를 그려주는 메서드
7 LINE : 메서드의 파라미터로 UserVO 객체와 Model객체를 받는다
Model 객채는 view로 전달하는 데이터를 담아서 보낼 수 있다. 이는 EL 식으로 사용할 수 있다.
HttpServletRequest 객체의 setAttribute()와 유사한 역할을 한다.
16 LINE : addAttribute() 메서드를 사용함으로 큰따옴표 안의 이름으로 jsp에서 사용할 수 있다. 담을 값은 VO class에서 getter메서드를 호출한다.
21 LINE : 조건문으로 정적인 id와 pw를 비교하는데 String 끼리 비교할 때 == 말고 equals를 사용해야 한다.
JSP(/study/join.jsp , success.jsp , fail.jsp)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
<!---------------------------join.jsp--------------------------------------------------->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>요청 파라미터값 테스트!!</h2>
<form action="<c:url value='/study/register.do' />" method="post">
<fieldset>
<legend>회원가입 양식</legend>
<p>
- ID: <input type="text" name="userId" size="10"><br>
- PW: <input type="password" name="userPw" size="10"><br>
- NAME: <input type="text" name="userName" size="10"><br>
- Age : <input type="number" name="userAge" size="10"><br>
<input type="submit" value="회원가입">
</p>
</fieldset>
</form>
</body>
</html>
<!--------------------------------success.jsp---------------------------------------------->
<body>
<h1>SUCCESS!!!</h1>
<ul>
<li>ID : ${id}</li>
<li>PW : ${pw}</li>
<li>NAME : ${name}</li>
<li>AGE : ${age}</li>
</ul>
</body>
<!--------------------------------fail.jsp---------------------------------------------->
<body>
<h1>FAIL....T.T</h1>
<ul>
<li>ID : ${id}</li>
<li>PW : ${pw}</li>
<li>NAME : ${name}</li>
<li>AGE : ${age}</li>
</ul>
<p style="color:red;">
아이디나 비밀번호 둘중에 하나가 틀렸어요..
</p>
<a href="<c:url value='/study/join.do'/>">돌아가기</a>
</body>
|
cs |
Model 객체에 담아서 view로 보낸 값을 El표현식을 사용해서 쓰고 있다.
project -> clean 하고 tomcat을 실행시켜보자.
물론 콘솔에도 잘 찍힌다.
앞으로도 커맨드 객체를 사용해서 java단에서 데이터를 조작할 일이 허다할 거다.
다음에는 ModelAndView 에대해서 다뤄보겠다.
끗~
'WEB > Spring' 카테고리의 다른 글
[Spring]페이징 처리 EgovFramework Paginationinfo 사용하기( 설정) (3) | 2020.07.21 |
---|---|
[Spring]학생들의 성적에 대한 CRUD기능 구현(데이터베이스 없이 DAO의 List로 DB대용) (2) | 2020.02.17 |
[Spring]JSP에서 요청 파라미터를 Controller에서 처리하는 방법(@RequestParam) (0) | 2020.02.05 |
[Spring]JSP에서 요청 파라미터를 Controller에서 처리하는 방법(HttpServletRequest 객체) (0) | 2020.02.04 |
[Spring]체크된 게시물 삭제 처리 로직 (1) | 2020.01.17 |