[6] 스프링(Spring Tools 4) DB : 회원가입 만들기
1. 신규 프로젝트 만들기(Spring Legacy Project)
> package explorer 오른쪽마우스 > new > other > Spring > Spring Legacy Project > Next 클릭
> Templates > Spring MVC Project > Project name : CrudMember > Next 클릭
> 패키지명 작성 com.bc.app > Next 클릭
------------------------------------------------------------------------------------------------------------
2. 개발 실행 환경 버전 세팅하기 (Project Facets)
> CrudMember 프로젝트 오른쪽마우스 > Properties > Project Facets > Dynamic Web Module : 3.1 / Java : 1.8 > Apply 버튼 > Java Compiler 에서 1.8버젼 확인 > Apply and Close 클릭 > Yes클릭
참조 문서
------------------------------------------------------------------------------------------------------------
3. 개발 실행 환경 버전 세팅하기 (Pom.xml)
> 자바(JDK) & 스프링프레임워크 & 서블릿 & JSP 버전 세팅 > 메이븐 설정
------------------------------------------------------------------------------------------------------------
4. 디펜던시 추가 (Pom.xml)
----------------------------------------------------------------------------------------
<!-- dependencies 는 dependency들의 모음. 여기에 dependency를 추가하면 jar파일 추가와 같다. 자동으로 라이브러리 추가됨 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.9</version>
</dependency>
------------------------------------------------------------------------------------------------------------
5. DB Pool 설정 (root-context.xml)
> src > main > webapp > WEB-INF > spring > root-context.xml
----------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean name="dsdbcp" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/jspdb?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
<property name="initialSize" value="5"/>
<property name="maxIdle" value="5"/>
</bean>
<bean id="jdbcTmp" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dsdbcp"/>
</bean>
</beans>
------------------------------------------------------------------------------------------------------------
6. 한글 처리 필터 설정 (Web.xml)
> src > main > webapp > WEB-INF >views > web.xml > *<listener>하단(13번째줄)에 작성
----------------------------------------------------------------------------------------
<!-- 한글 처리 필터 -->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
------------------------------------------------------------------------------------------------------------
7. *.do 설정 (Web.xml)
> src > main > webapp > WEB-INF >views > web.xml
----------------------------------------------------------------------------------------
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>*.do(변경)</url-pattern>
</servlet-mapping>
------------------------------------------------------------------------------------------------------------
8. 웰컴 파일 리스트 작성 (Web.xml / homecontroller.java)
8-1. Web.xml
> src > main > webapp > WEB-INF >views > web.xml > 6번째줄 ...com/xml/ns/javaee/web-app_2_5.xsd" 하단에 작성
----------------------------------------------------------------------------------------
<welcome-file-list>
<welcome-file>main.do</welcome-file>
</welcome-file-list>
-----------------------------------------------------------------------------------------
8-2. HomeController.java
@RequestMapping(value = "/main.do(변경)")
public String home(Model model){
return "main";
}
------------------------------------------------------------------------------------------------------------
9. main.jsp 작성 (main.jsp)
> src > main > webapp > WEB-INF >views 오른쪽 마우스 > new > others > Wizards 'jsp'입력 > JSP File 선택 > File Name 'main.jsp'입력
----------------------------------------- 중간확인 Run On Server --------------------------------------
10. 데이터베이스 만들기 (main.jsp)
----------------------------------------------------------------------------------------
CREATE TABLE spmember(
idx INT PRIMARY KEY AUTO_INCREMENT,
id VARCHAR(200) UNIQUE NOT NULL,
pw VARCHAR(200) NOT NULL,
NAME VARCHAR(50) NOT NULL,
email VARCHAR(200)
);
------------------------------------------------------------------------------------------------------------
11. Dto 만들기(SpMemberDTO.java)
11-1. Dto를 패키지로 분류(com.hs.app.bean)
> src/main/java 오른쪽 마우스> Package > new > com.hs.app.bean > Finish 클릭
11-2. Class 만들기 (SpmemberDTO)
> src/main/java 오른쪽 마우스> Class > new > SpmemberDTO > Finish 클릭
----------------------------------------------------------------------------------------
package com.hs.app.bean;
import org.springframework.stereotype.Component; // @Component 작성시 자동으로 import
// 11-2-1 변수 생성 (DB에서 필요한 것 들을 가져온다.)
public class SpmemberDTO {
private int idx;
private String id;
private String pw;
private String name;
private String email;
// 11-2-2 생성자 생성
// > 편집 창오른쪽 마우스> Source > Generate Constructor using Fields
// > Select fields to initialize > idx제외 모두 선택(회원가입할 때는 idx는 값을 자동으로 생성하고 어디서 받는게 없으므로 뺀다) > Generate 클릭 > super();삭제(필요없음)
public SpmemberDTO(String id, String pw, String name, String email) {
this.id = id;
this.pw = pw;
this.name = name;
this.email = email;
}
// 11-2-3 게터&세터 생성
// > 편집 창오른쪽 마우스> Source > Generate Getters and Setters > Select fields > Select All > Generate 클릭
public int getIdx() {
return idx;
}
public void setIdx(int idx) {
this.idx = idx;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
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;
}
}
package com.hs.app.dao;
public class SpMemberDAO {
}
------------------------------------------------------------------------------------------------------------
12. Dao 만들기(SpMemberDAO.java)
12-1. Dao를 패키지로 분류(com.hs.app.dao)
> src/main/java 오른쪽 마우스> Package > new > com.hs.app.dao > Finish 클릭
12-2. Class 만들기 (SpMemberDAO)
> src/main/java 오른쪽 마우스> Class > new > SpMemberDAO > Finish 클릭
----------------------------------------------------------------------------------------
package com.hs.app.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; // 12-2-2. JdbcTemplate을 작성하면 자동으로 import
import org.springframework.stereotype.Repository; // 12-2-1. @Repository작성하면 자동으로 import
import com.hs.app.bean.SpmemberDTO; // 12-2-4. SpmemberDTO dto 작성하면 자동으로 import
// 12-2-1. @Repository 작성
// @Repository 애노테이션은 해당 클래스를 최상위 컨테이너(루트컨테이너)에 빈 객체로 생성해줌
// @Repository로 등록 된 것을 @Autowire로 연결시켜 사용한다.
@Repository
public class SpMemberDAO {
// 12-2-3. @Autowired 작성
@Autowired
// @Autowire를 적으면 @Repository 등록된 것을 땡겨 쓸 수 있다. 즉 오토로 줄을 연결해준다는 의미
// 12-2-2. JdbcTemplate 작성
private JdbcTemplate jdbcTmp;
// 12-2-4. insert 쿼리문 작성
private String insertMember ="insert into spmember values(null, ?, ?, ?, ?)";
// 12-2-5. memberInsert() 메소드 작성
// 메서드명이 update인 이유 : insert, update, delete는 실제 database의 내용이 갱신되므로 메서드 이름이 update이다
public int memberInsert(SpmemberDTO dto) {
return jdbcTmp.update(insertMember, dto.getId(), dto.getPw(), dto.getName(), dto.getEmail());
}
}
------------------------------------------------------------------------------------------------------------
13. DB에 값이 들어갈 수 있도록 insert 기능 구현
13-1. MVC
// 13-1.1. main.jsp 수정 (main.jsp)
<body>
<a href="MemberRegist">회원가입</a>
<a href="MemberList">회원목록</a>
</body>
// 13-1.2. regist.jsp 작성(regist.jsp)
<form action="RegistProc.do" method="post">
<table border="1">
<tr><td>아이디</td><td><input type="text" name="id"></td></tr>
<tr><td>비밀번호</td><td><input type="text" name="pw"></td></tr>
<tr><td>이름</td><td><input type="text" name="name"></td></tr>
<tr><td>이메일</td><td><input type="text" name="email"></td></tr>
</table>
<input type="submit" name="회원가입">
</form>
13-2. MVC : HomeController.java 수정
// 13-2.3. SpMemberDAO dao 객체 생성 및 @Autowired로 세팅
@Autowired
SpMemberDAO dao;
// 13-2.1. Url&Jsp파일 맵핑(MemberRegist.do - regist.jsp)
@RequestMapping("/MemberRegist.do")
public String regist() {
return "regist";
}
// 13-2.2. Url&리다이렉션 맵핑(RegistProc.do - redirect:/main.do)
@RequestMapping("/RegistProc.do")
public String registProc(SpmemberDTO dto) { // String타입을 반환하는registProc()
// 13-2.4. dao메소드 실행 (memberInsert(dto);)
dao.memberInsert(dto);
// DAO 안(SpMemberDAO.java)에 있는memberInsert()를 처리한다
// private String insertMember ="insert into spmember values(null,?,?,?,?)";
// public int memberInsert(SpmemberDTO dto) { // dto의 모든 것을 가져온다.
// return jdbcTmp.update(insertMember, dto.getId(), dto.getPw(), dto.getName(), dto.getEmail());
// }
return "redirect:/main.do";
}
------------------------------------------------------------------------------------------------------------
14. DB에 값을 삭제하도록 delete 기능 구현
14-1. MVC : SpMemberDAO.java 수정
// 14-1.1. SQL문 작성
private String insertMember ="insert into spmember values(null,?,?,?,?)";
//상단의 형태와 하단의 형태는 똑같다
@Value("delete from spmember where idx=?")
private String deleteMember;
public int memberInsert(SpmemberDTO dto) {
return jdbcTmp.update(insertMember, dto.getId(), dto.getPw(), dto.getName(), dto.getEmail());
}
// 14-1.2. 메소드 작성(memberDelete())
public int memberDelete(int idx){
return jdbcTmp.update(deleteMember, idx);
}
'IT I 프로그래밍 > 자바 I 스프링 DB' 카테고리의 다른 글
[7] 스프링(Spring Tools 4) DB : 회원목록 만들기 (0) | 2021.10.24 |
---|---|
[5] 스프링(Spring Tools 4) DB : 데이터베이스에 값 넣기 테스트 (0) | 2021.10.22 |
[4] 스프링(Spring Tools 4) DB : home.jsp에서 Dto사용 (0) | 2021.10.22 |
[3] 스프링(Spring Tools 4) DB : HomeController에서 DAO 사용 (0) | 2021.10.22 |
[2] 스프링(Spring Tools 4) DB : DAO파일 만들기 (0) | 2021.10.19 |