✔사족이 좀 많을 수 있는데 그건 회색글씨로 처리하겠습니다 빼고 읽으세요 😊
지난번 SDK를 이용해서 초기화를 이렇게 해주시면 됩니다.
@Service
public class FirebaseInitialization {
@PostConstruct
public void initializtion() throws FileNotFoundException {
FileInputStream serviceAccount = new FileInputStream("./serviceAccountKey.json");
try {
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.build();
FirebaseApp.initializeApp(options);
Map<String, Object> additionalClaims = new HashMap<String, Object>();
additionalClaims.put("check", true);
String customToken = FirebaseAuth.getInstance().createCustomTokenAsync(UID, additionalClaims).get();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
① user VO를 만들면 됩니다.
public class User {
private String gender;
private String age;
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
②파이어스토어에 컬렉션을 생성해주시면 됩니다.
③서비스를 만들어서 데이터에 어떻게 값을 넣을지를 정합니다.
saveUser는 정보를 저장하는 메소드입니다. 컬렉션은 user로 고정값입니다. 들어갈 컬렉션을 지정해주시면 됩니다.
도큐멘트(문서)는 키값을 지정해야 합니다. 중복되면 안 됩니다. 그렇기 때문에 파이어베이스에서 제공하는, 회원정보의 uid를 받아서 쓰는 편입니다. 지금은 간단하게 데이터 입력과 출력을 보여드리는 과정이기 때문에 고정값을 age로 쓰도록 하겠습니다.
@Service
public class UserService {
public String saveUser(User user, String age){
Firestore firestore = FirestoreClient.getFirestore();
ApiFuture<WriteResult> apiFuture = firestore.collection("user").document(age).set(user);
String result = null;
try {
result = apiFuture.get().getUpdateTime().toString();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return result;
}
public User getUserInfo(String uid) {
Firestore firestore = FirestoreClient.getFirestore();
DocumentReference documentReference = firestore.collection("user").document("age");
ApiFuture<DocumentSnapshot> future = documentReference.get();
DocumentSnapshot document = null;
try {
document = future.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
User user = null;
if (document.exists()) {
user = document.toObject(User.class);
return user;
} else {
return null;
}
}
④ <list.html> 타임리프를 이용하여 view페이지의 값을 넣어보도록 하겠습니다.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://thymeleaf.org">
<!--<html xmlns:th="http://www.thymeleaf.org" lang="ko">-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<head>
<meta charset="UTF-8">
<title>호호</title>
</head>
<body>
<form action="#" th:action="@{/uesrExtraInfo}" th:object="${user}" method="post">
<p>성별: <input type="text" th:field="*{gender}"/></p>
<p>나이: <input type="text" th:field="*{age}"/></p>
<p><input type="submit" value="Submit"/> <input type="reset" value="Reset"/>
</p>
</form>
</body>
</html>
th:object="${user}" 에 성별과 나이의 데이터값을 담아서 /userExtraInfo로 보냅니다.
⑤ controller를 이용하여 이제 데이터 객체를 담고 뷰페이지를 반환해줍니다.
@GetMapping("/list")
public String list(Model model){
model.addAttribute("user", new User());
return "list";
}
@PostMapping("/uesrExtraInfo")
public String userExtraInfo(HttpServletRequest request, @ModelAttribute("user") User user, Model model){
String age = request.getParameter("age");
String gender = request.getParameter("gender");
user.setAge(age);
user.setGender(gender);
model.addAttribute("user",user);
System.out.println("userExtraInfo : " + age + " " +gender);
userService.saveUser(user, age);
return "index";
}
list로 주소를 맵핑합니다. localhost:8080/list로 들어가면 아래의 화면이 뜹니다. 모델 객체를 생성해 데이터의 값이 들어갈 일종의 그릇을 만들어주어야 합니다. 이걸 생성하지 않으면 오류가 발생합니다. 꼭 알아두세요!
submit을 누르면 /userExtraInfo로 도착하게 됩니다.
이렇게 하면 이제 데이터 값을 넣는 걸 확인할 수 있습니다. 주로 포스트맨을 써서 데이터를 전송하는 건 그나마 조금은 찾을 수 있는데 이렇게 view페이지에서 하는 건 자료가 없어서.. 전 많이 힘들었습니다...
이미 서비스에서 유저정보를 불러오는 메소드는 만들어 놓았기 때문에 다음에는 들어간 데이터를 불러오는 걸 해보겠습니다.
'CODE > CodeKnowledge' 카테고리의 다른 글
[국비과제] 자바스크립트 이용 회원가입 형식 만들기 (0) | 2023.07.12 |
---|---|
[스프링] 관리자 페이지 만들기 1 (0) | 2023.07.11 |
파이어베이스와 스프링부트를 이용하여 웹사이트 만들기 ① (0) | 2023.07.08 |
전자정부 프레임워크 이클립스 스프링 기본 세팅 및 설치-2 (0) | 2023.07.07 |
전자정부 프레임워크 이클립스 스프링 기본 세팅 및 설치-1 (0) | 2023.07.06 |
댓글