3월 24일 vueBootJiye(vue,eclipse), SpringBootJiye(sts)

2020. 6. 22. 19:04프론트엔드 & 백엔드 개발자 과정/spring boot

<< vueBootJiye index.html >>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://unpkg.com/vue-router"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>

<div id="app">
</div>

<script type="text/javascript">
location.href = "login.html";
//this.$router.push('login.html');
</script>

</body>
</html>

< login.html >

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://unpkg.com/vue-router"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>

<div id="app">

	<table border="1">
	<tr>
		<td>아이디</td>
		<td>
			<input v-model="id" type="text">
		</td>
	</tr>
	<tr>
		<td>패스워드</td>
		<td>
			<input v-model="pwd" type="password">
		</td>
	</tr>
	<tr>
		<td colspan="2">
			<button @click='login'>로그인</button>
			<button @click='signup'>회원가입</button>
		</td>
	</tr>
	</table>

</div>

<script type="text/javascript">

	var vue = new Vue({
		el: '#app',
		data:{
			id:'',	// app의 v-model
			pwd:''
		},
		methods: {
			login: function(){
				// 빈칸 조사
				if(this.id == ""){
					alert("id를 입력해 주십시오");
					return;
				}
				
				// 보낼 데이터
				var params = new URLSearchParams();		// POST로 보낼 때
				params.append("id", this.id);
				params.append("pwd", this.pwd);
				
				axios.post('http://localhost:3000/login', params)
					.then(res => {		// 갔다 왔을 때 then
				//	alert('login connect success');
				//	alert(JSON.stringify(res.data));	JSON(res.data)를 문자열로 형변환
				
				//	alert('res.data.id:' + res.data.id);
					if(res.data.id == undefined){
						alert("id나 password가 틀렸습니다");
						return;
					}	
				
					// session -> vuex												만료 기한 있음, ex) 회원정보(object)
					// html -> sessionStorage, localStorage -> cookie(String)		만료 기한 없음    ex) id
					//			timer 걸어 놓으면 기한 설정 가능
					// 저장
					sessionStorage.setItem("login", JSON.stringify(res.data));
	
					var loginData = sessionStorage.getItem("login");	// String
				//	alert(loginData);
					var login = JSON.parse(loginData);		// JSON으로 형변환(object)해서 session 저장
				//	alert(login);
				//	alert(login.id);	// key값으로 접근
				//	alert(login.name);
				
					// 이동
					location.href = "bbslist.html";
				})				
			},
			signup: function(){
				alert("회원가입으로오~!");
				location.href = "signup.html";
				//this.$router.push('signup.html');
			}
		}
	})

</script>

</body>
</html>

< signup.html >

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://unpkg.com/vue-router"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>	<!-- ajax -->
</head>
<body>

<div id="app">
	<h1>회원가입</h1>
	아이디: <input v-model="id" type="text" id="id" name="_id"><input @click="idcheck()" type="button" id="idcheck" name="_idcheck" value="중복체크"><br>
	<p>{{ idmsg }}</p>
	패스워드: <input v-model="pwd" type="text" id="pwd" name="_pwd"><br>
	이름: <input v-model="name" type="text" id="name" name="_name"><br>
	이메일: <input v-model="email" type="text" id="email" name="_email"><br>
	<button @click='signup()'>가입</button>
</div>

<script type="text/javascript">
	// 외부 함수에서 사용시 v.id로 사용
	var vue = new Vue({
		el:'#app',
		data:{
			id:'',		// -> v-model="id"
			pwd:'',
			name:'',
			email:'',
			idmsg:''
		},
		methods: {
			idcheck: function() {	// (event) 안넣어도 작동함, ex)key press
				axios.get('http://localhost:3000/getId', {
					params:{
						id: this.id		// -> data:{ id:''}
					}
				}).then(res => {
					alert("통신성공");
					if(res.data == "NO"){
						this.idmsg = "사용할 수 없는 id입니다";
						this.id = "";
					}else{
						this.idmsg = "사용할 수 있습니다";
					}
				})
			},	
			
			signup: function() {
				var params = new URLSearchParams();
				params.append('id', this.id);
				params.append('pwd', this.pwd);
				params.append('name', this.name);
				params.append('email', this.email);
			
				axios.post('http://localhost:3000/addmember', params)
					.then(res => {
						alert("통신성공");
						if(res.data == "YES"){
							alert("성공적으로 가입되었습니다");
							location.href = "login.html";
						}else{
							alert("가입되지 않았습니다");
							location.href = "login.html";
							// router.go(-1); == history.back(); router.go(n): 이 메소드는 window.history.go(n)과 비슷하게 히스토리 스택에서 n 만큼 앞, 뒤로 이동하는 메소드입니다.
						}						
					})	
				}
			}
		})
	


</script>

</body>
</html>