타닥타닥 개발자의 일상

SpringBoot로 login, 회원가입 기본 페이지 만들기 (JSON, ajax, Oracle, java 이용) 본문

코딩 기록/SpringBoot

SpringBoot로 login, 회원가입 기본 페이지 만들기 (JSON, ajax, Oracle, java 이용)

NomadHaven 2022. 2. 22. 17:40

이런 구조로 되어있는 페이지를 만들 예정.

frontend는 이클립스와 자바를 이용해서

backend는 springboot를 이용할 예정이다.

DB는 오라클을 사용할 예정.

 

이미 MEMBER라는 이름의 DB table이 오라클에 있어서

MEMBER2 라는 테이블을 만들었다.

SQL Developer로 자료를 입력할시에는 꼭 커밋도 해준다.

commit; 만 해주면 끝.

MEMBER2 쿼리문 
//테이블 삭제
DROP TABLE MEMBER2


//테이블 생성
CREATE TABLE MEMBER2(
    ID VARCHAR(50) PRIMARY KEY,
    PWD VARCHAR(60) NOT NULL,
    NAME VARCHAR(50) NOT NULL,
    EMAIL VARCHAR(150) UNIQUE,
    AUTH NUMBER(1)
);

//테이블에 자료 입력
INSERT INTO MEMBER2(ID,PWD,NAME,EMAIL,AUTH)
VALUES('aaa','111','김지매','aaa@naver,com',3);

INSERT INTO MEMBER2(ID,PWD,NAME,EMAIL,AUTH)
VALUES('bbb','222','하지메','hhh@naver,com',3);


INSERT INTO MEMBER2(ID,PWD,NAME,EMAIL,AUTH)
VALUES('ccc','333','아지매','ajm@naver,com',3);

 

 


Backend를 위한 Spring Boot 구성 

 

기본적인 패키지 및 파일 구성

우선 File 탭> New >  Spring Starter Project로 스프링 프로젝트 부터 생성.

 

기능 구현을 위한 dependencies를 pom.xml에 입력한다.

DB는 Oracle을 사용할것이므로 Oracle 과 상용하는 dependencies를 삽입.

 

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>springBootBack</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springBootBack</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
			
		<!--추가된 부분 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web/2.6.3 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency>
		
		<!--추가된 부분 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat/2.6.3 -->
		<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
		
		<!--추가된 부분 Json library -->
<dependency>
	          <groupId>com.fasterxml.jackson.core</groupId>
	          <artifactId>jackson-core</artifactId>
	          <version>2.10.1</version>
	      </dependency>
	      
	      <dependency>
	          <groupId>com.fasterxml.jackson.core</groupId>
	          <artifactId>jackson-databind</artifactId>
	          <version>2.10.1</version>
	      </dependency>
	      
	      <!-- 추가한 부분 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc/2.6.3 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
	      
	      <!-- 추가한 부분 https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.2.2 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>


<!-- 추가한 부분 https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/2.0.7 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.6</version>
</dependency>

<!-- 추가한 부분 https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.9 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

<!-- 추가한 부분 https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6/11.2.0.4 -->
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4</version>
</dependency>
		
		
		
		
		
		
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

서버와 DB 연결을 위해 src/main/resources 안에 있는 application.properties를 설정한다.

 

application.properties
#port number set
server.port=3000


#DB set
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=hr
spring.datasource.password=*******

 

자료 접근과 경로를 설정하기 위한 DatabaseConfig.java / WebConfig.java 생성.

기존에 오라클 용으로 만들어놓은 프로젝트에 두 파일이 있다면 복사 붙여넣기해도 OK

 

DatabaseConfig.java
package mul.camp.a;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
public class DatabaseConfig {

	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
		System.out.println("DatabaseConfig sqlSessionFactory");
		
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		
		Resource arrResource[] = new PathMatchingResourcePatternResolver().getResources("classpath:sqls/*.xml");
		sqlSessionFactoryBean.setMapperLocations(arrResource);
		sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
		
		return (SqlSessionFactory)sqlSessionFactoryBean.getObject();		
	}
	
	@Bean
	public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) {
		return new SqlSessionTemplate(sqlSessionFactory);
	}
	
}

 

WebConfig.java
package mul.camp.a;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

	@Override
	public void addCorsMappings(CorsRegistry registry) {
		// TODO Auto-generated method stub
		//WebMvcConfigurer.super.addCorsMappings(registry);
		
		//registry.addMapping("/**").allowedOrigins("http://localhost:8090");
		registry.addMapping("/**").allowedOrigins("*"); //모든 경로 모든 곳에서 접속 가능하게 설정
	}

}

 

이제 기본적인 설정은 끝.

Dto,Dao,Service,Controller 기본 설정은 아래의 링크를 참고하여 동일하게 하면 된다.

난 이미 아래 링크와 같은 오라클 연결 웹 프로젝트를 만들어 놓았기 때문에 그냥 Dto,Dao,Service,Controller 다 복사했고 필요한 부분만 수정했다.

https://developerson.tistory.com/112

 

SpringBoot와 Oracle SQl 연결하기, 데이터 웹페이지에 출력하기

1. Oracle SQL과 이클립스 연결하기 Open Perspective에서 Databasee Development 선택하고 Open DataBase Connections 우클릭 > New > 새창으로 New Connection Profile 뜨면 Oracle 선택 체크한 부분 본인이..

developerson.tistory.com

 

 

 

Dto,Dao,Service,Controller,SQL 구성

아래에 공유된 코드들은 이미 FrontEnd 와 연결이 끝난 코드들이다.

해당 코드들에 대한 설명은 FrontEnd 코드를 공유하면서 할것이다.

 

MemberController.java
package mul.camp.a.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import mul.camp.a.dto.MemberDto;
import mul.camp.a.service.MemberService;

@RestController
public class MemberController {

	@Autowired
	MemberService service;
	

	@RequestMapping(value="/getId", method= {RequestMethod.GET, RequestMethod.POST})
		public String getId(MemberDto dto) {
		System.out.println("MemberController getID");
		
		boolean b = service.getId(dto);
		if(b) {
			return "NO"; //1이상이란 말, 이미 아이디가 존재한다는 말이라서 사용이 안된다
		}
		return "OK";
	}
	
	@RequestMapping(value="/addmember", method= {RequestMethod.GET, RequestMethod.POST})
	public String addmember(MemberDto dto) {
		System.out.println("MemberController addmember");		
		boolean b = service.addmember(dto);
		
	if(b) {
		return "YES";
	}
	return "NO";
	}
	
	@RequestMapping(value="/login", method= {RequestMethod.GET, RequestMethod.POST})
	public MemberDto login(MemberDto dto) {
		System.out.println("MemberController login");	
		
		MemberDto mem = service.login(dto);
		return mem;
	}

}

 

MemberDao.java(Interface)
package mul.camp.a.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import mul.camp.a.dto.MemberDto;

@Mapper
@Repository
public interface MemberDao {
	
	public int getId(MemberDto dto);
	
	public int addmember(MemberDto dto);
	
	public MemberDto login(MemberDto dto);
	

	
}

 

MemberDto.java
package mul.camp.a.dto;

public class MemberDto {

	private String id;
	private String pwd;
	private String name;
	private String email;
	private int auth;
	
	public MemberDto() {
		
	}
	
	public MemberDto(String id, String pwd, String name, String email, int auth) {
		super();
		this.id = id;
		this.pwd = pwd;
		this.name = name;
		this.email = email;
		this.auth = auth;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public int getAuth() {
		return auth;
	}

	public void setAuth(int auth) {
		this.auth = auth;
	}

	@Override
	public String toString() {
		return "MemberDto [id=" + id + ", pwd=" + pwd + ", name=" + name + ", email=" + email + ", auth=" + auth + "]";
	}


	
	
}

 

MemberService.java
package mul.camp.a.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import mul.camp.a.dao.MemberDao;
import mul.camp.a.dto.MemberDto;

@Service
@Transactional
public class MemberService {
	
	@Autowired
	MemberDao dao;
		
	public boolean getId(MemberDto dto) {
		int n = dao.getId(dto);
		
		return n>0?true:false;
	}
	
	
	public boolean addmember(MemberDto dto) {
		int n = dao.addmember(dto);
		
		return n>0?true:false;
	}
	
	public MemberDto login(MemberDto dto) {
		
		return dao.login(dto);
	}
}

 

Member.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  <mapper namespace="mul.camp.a.dao.MemberDao">
  
  <select id="getId" parameterType="mul.camp.a.dto.MemberDto" resultType="java.lang.Integer">
  SELECT NVL(COUNT(*),0)
  FROM MEMBER2
  WHERE id=#{id}
  </select>
  
  
  <insert id="addmember" parameterType="mul.camp.a.dto.MemberDto">
  INSERT INTO MEMBER2(ID, PWD, NAME, EMAIL, AUTH)
	VALUES(#{id}, #{pwd}, #{name}, #{email}, 3)
  </insert>
  
  <select id="login" parameterType="mul.camp.a.dto.MemberDto"
  resultType="mul.camp.a.dto.MemberDto">
  SELECT ID,NAME,EMAIL,AUTH
  FROM MEMBER2
  WHERE ID=#{id} AND PWD=#{pwd}
  </select>

  
  </mapper>

 

접속시 보이는 화면을 구성하기 위한 FrontEnd도 구성해보자.

FrontEnd는 자바를 이용해야 하므로 Ecplise를 이용했다.(다른 IDE를 써도 상관 없다.)

 

Eclipse에서  

File > New > Dynamic Web Project 생성

생성된 Web Project의 webapp폴더에 페이지 뷰를 생성하면 된다.

만들어줄 페이지 뷰들은 아래와 같이

login.html(로그인)/account.html(회원가입)/bbslist.html(게시판)/index.html(첫화면)이다.

 

 

index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>

<body>

<script type="text/javascript">
<!--바로 로그인 화면 login.html으로 이동시킨다.-->
location.href ="login.html";
</script>


</body>


</html>

 

index.html 페이지에서 login.html 페이지로 이동시켰기 때문에

페이지를 열자마자 보이는건 login.html이다.

 

아래의 코드는 login 페이지에서 Spring Boot로 자료전달까지 할수 있도록 완성된 코드이다.

 

 

login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>


<style type="text/css">
#aap{
	margin:auto;
	margin-top:60px;
	width: 60%;
	border: 3px solid #8ac007;
	padding: 10px;
}

</style>

</head>
<body>

<h1>Login</h1>
<div id="app">
<table border="1">
	<tr>
			<td>아이디</td>
			<td>
			<input type="text" id="id" placeholder="아이디입력" size="20">
			</td>
	</tr>
	<tr>
			<td>패스워드</td>
			<td>
			<input type="text" id="pwd" placeholder="패스워드 입력" size="20">
			</td>
	</tr>
	<tr>
		<td colspan="2">
		<button type="button" id="login">log-in</button>
		<a href="account.html">회원가입</a>
		</td>
	</tr>

</table>

</div>

<script type="text/javascript">
$(document).ready(function(){
	
	$("#login").click(function(){ //로그인 버튼 누를시 실행되는 함수
		
		$.ajax({
			url:"http://localhost:3000/login",
			type:"post",
			data:{ id:$("#id").val(), pwd:$("#pwd").val() }, //id란과 pwd에 입력된 Data 서버로 전달
			
			//백엔드에서 넘겨주는 데이터가 dto라는 객체이므로 json으로 받는다
			success:function(json){
			//	alert('success');
			//	alert(JSON.stringify(json));
				if(json==""){
					alert("id나 비밀번호를 확인하세요.")
					$("#id").val("");
					$("#pwd").val("")
				}else{
					sessionStorage.setItem("login",JSON.stringify(json));
					alert(json.name+"님 환영합니다.")
					location.href="bbslist.html"
				}
				
			},
			error:function(){
				alert('error');
			}
			
		});
		
		
	});
	
	
});
</script>

</body>
</html>

 

 

상기의 코드가 구현된 모습
로그인시 팝업하는 알림창
JSON.stringify(json)
json.name

 

알림창임 모두 다 뜨면 location.href="bbslist.html"로 인하여 게시판 html페이지로 이동한다.

 

 

연결된 쿼리문

Member.xml
  <select id="login" parameterType="mul.camp.a.dto.MemberDto"
  resultType="mul.camp.a.dto.MemberDto">
  SELECT ID,NAME,EMAIL,AUTH
  FROM MEMBER2
  WHERE ID=#{id} AND PWD=#{pwd}
  </select>

MEMBER2 라는 테이블에서

입력받은 id, pwd 값과 일치하는 

ID, NAME, EMAIL, AUTH 값을 조회한다.

조회된 값은 Dto 형태의 객체형식으로 전달된다.

 

연결된 Dao 

MemberDao.java
package mul.camp.a.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import mul.camp.a.dto.MemberDto;

@Mapper
@Repository
public interface MemberDao {
	
	public MemberDto login(MemberDto dto);
	
	
}

SQL의 select id 값(login) 과 Dao의 함수 값(login)이 일치해야 한다.

Service에서 MemberDto 형식의 함수 login의 매개변수 역시 MemberDto이다.

 

 

 

연결된 Service

MemberService.java
package mul.camp.a.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import mul.camp.a.dao.MemberDao;
import mul.camp.a.dto.MemberDto;

@Service
@Transactional
public class MemberService {
	
	@Autowired
	MemberDao dao;
			
	public MemberDto login(MemberDto dto) {
		
		return dao.login(dto);
	}
}

MemberDao와 동일한 함수 생성. Dao의 login 함수를 호출해서 매개변수 dto를 삽입.

 

 

연결된 컨트롤러

MemberController.java
package mul.camp.a.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import mul.camp.a.dto.MemberDto;
import mul.camp.a.service.MemberService;

@RestController
public class MemberController {

	@Autowired
	MemberService service;
	
	
	@RequestMapping(value="/login", method= {RequestMethod.GET, RequestMethod.POST})
	public MemberDto login(MemberDto dto) {
		System.out.println("MemberController login");	
		
		MemberDto mem = service.login(dto);
		return mem;
	}

}

회원가입 화면

account.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<style type="text/css">
#aap{
	margin:auto;
	margin-top:60px;
	width: 60%;
	border: 3px solid #8ac007;
	padding: 10px;
}
p{
font-size:8px;
}

</style>

</head>
<body>

<h1>회원가입</h1>
<div id="app">
<form id="frm">

<table border="1">
	<tr>
			<td>아이디</td>
			<td>
			<input type="text" id="userid" placeholder="아이디입력" size="20">
			<p id="idcheck"></p>
			<button type="button" id="idcheckBtn">중복확인</button>
			</td>
	</tr>
	
	<tr>
			<td>사용 아이디</td>
			<td>
			<input type="text" id="id" name="id" size="20" readonly="readonly">
			</td>
	</tr>
	
	
	<tr>
			<td>패스워드</td>
			<td>
			<input type="text" id="pwd" name="pwd" placeholder="패스워드 입력" size="20">
			</td>
	</tr>	
		<tr>
			<td>이름</td>
			<td>
			<input type="text" id="name" name="name" placeholder="이름 입력" size="20">
			</td>
	</tr>	
	
		<tr>
			<td>이메일</td>
			<td>
			<input type="text" id="email" name="email" placeholder="이메일 입력" size="20">
			</td>
	</tr>	
	
	<tr>
		<td colspan="2">
		<button type="button" id="account">회원가입</button>
		</td>
	</tr>
	</table>
	</form>
	</div>
	
	<script type="text/javascript">
	$(document).ready(function() {
		
		$("#idcheckBtn").click(function() {
			$.ajax({
				url:"http://localhost:3000/getId",
				type:"post",
				data:{"id":$("#userid").val() },
				success:function( msg ){
					//alert('success')
					//alert(msg);
					if(msg.trim()=='OK'){
						$("#idcheck").html("이 아이디는 사용 가능합니다.");
						$("#id").val( $("#userid").val());
					}else{
						$("#idcheck").html("이 아이디는 사용중입니다.");
						$("#userid").val("");//삭제
						$("#userid").focus(); //다시 입력하라고 커서가 뜬다.
					}
				},
				error:function(){
					alert('error');
				}
			});
			
		});
		
		$("#account").on("click",function(){
			
			let params = $("#frm").serialize()
			
			$.ajax({
				url:"http://localhost:3000/addmember",
				type:"post",
				//data:{id:$("#id").val(), pwd:$("#pwd").val(), name:$("name").val(), email:$("email").val() }, //id로 보낸것
				data:params,//name으로 보낸것
				success:function(data){
					//alert('success')
					if(data=="YES"){
						alert('가입성공');
						location.href="login.html";
					}else{
						alert('가입실패');
					}
				},
				error:function(){
					alert('error');
				}
			});
			
		});
		
	});
	
	</script>
	
</body>
</html>

위의 코드가 구현된 모습

회원 가입 페이지에는 두가지의 SQL 문이 연결되어있다. 하나는중복 아이디를 조회하기 위한 SELECT 문이며,

다른 하나는 회원가입을 하기 위한 INSERT문이다.

 

 

Member.xml
  <select id="getId" parameterType="mul.camp.a.dto.MemberDto" resultType="java.lang.Integer">
  SELECT NVL(COUNT(*),0)
  FROM MEMBER2
  WHERE id=#{id}
  </select>
  
  
  <insert id="addmember" parameterType="mul.camp.a.dto.MemberDto">
  INSERT INTO MEMBER2(ID, PWD, NAME, EMAIL, AUTH)
	VALUES(#{id}, #{pwd}, #{name}, #{email}, 3)
  </insert>

getId select문의 결과값은 Integer이고

addmember Insert문의 매개값은 Dto라는 객체다.

 

 

MemberDao.java
package mul.camp.a.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import mul.camp.a.dto.MemberDto;

@Mapper
@Repository
public interface MemberDao {
	
	public int addmember(MemberDto dto);
	
	public MemberDto login(MemberDto dto);
	

	
}

addmember 함수 login 함수 모두 MemberDto를 매개변수로 가진다.

 

 

MemberService.java
package mul.camp.a.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import mul.camp.a.dao.MemberDao;
import mul.camp.a.dto.MemberDto;

@Service
@Transactional
public class MemberService {
	
	@Autowired
	MemberDao dao;
		
	public boolean getId(MemberDto dto) {
		int n = dao.getId(dto);
		
		return n>0?true:false;
        
        //조회된 id값이 0이 아니면(n>0) 중복된 값이 있다는 말이다.
        //즉 SQL에서 조회된 중복 id가 있다는 말.
	}
	
	
	public boolean addmember(MemberDto dto) {
		int n = dao.addmember(dto);
		
		return n>0?true:false;
        
        //n>0이면 dto를 통해 입력된 값이 존재한다는 말
	}
	
	
}

 

MemberController.java
package mul.camp.a.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import mul.camp.a.dto.MemberDto;
import mul.camp.a.service.MemberService;

@RestController
public class MemberController {

	@Autowired
	MemberService service;
	

	@RequestMapping(value="/getId", method= {RequestMethod.GET, RequestMethod.POST})
		public String getId(MemberDto dto) {
		System.out.println("MemberController getID");
		
		boolean b = service.getId(dto);
		if(b) {
			return "NO"; 
            //1이상이란 말, 이미 아이디가 존재한다는 말이라서 사용이 안된다. 따라서 NO리턴.
		}
		return "OK";
	}
	
	@RequestMapping(value="/addmember", method= {RequestMethod.GET, RequestMethod.POST})
	public String addmember(MemberDto dto) {
		System.out.println("MemberController addmember");		
		boolean b = service.addmember(dto);
		
	if(b) {
		return "YES";
        
        //입력된 값이 있으므로 YES를 리턴한다
	}
	return "NO";
    	//입력된 값이 없으므로 NO를 리턴한다.
	}
	


}

 

account.html에서 Json을 통해 보낸 값이 OK를 리턴 받으면 중복된 아이디가 없다고 확인되며

Json을 통해 보낸 값이 제대로 입력되었으면 YES를 리턴받아 회원가입이 이루어진다.

 

 

 


오늘은 여기까지 배웠으므로

내일 게시판 연결하는 걸 배우면 다시 추가될 예정이다.

Comments