본문 바로가기

[JSP]

[JSP]10월 28일 JSP에서 DB(데이터베이스)에 저장하기 예제.

login 예제에서 회원가입 기능을 추가하고 내 데이터베이스에 저장되있는 id/pw가 일치 해야 로그인할 수 있는 예제를 만들어보자.

자신의 mysql에 jsp 데이터베이스를 만들어서 member 테이블을 생성하는데,

id/pw/name 을 저장할 수 있도록 만든다. id는 primary key 로 만들어서 중복이 안되게 한다.


JSP프로젝트를 생성해서 JAVA 클래스를 만들 수 있는곳(Java Resources >> src)에 dao패키지, model 패키지를 생성한다음 각각 패키지 안에 클래스를 생성해서 작성한다.

그리고 중요한점!

웹프로젝트에 외부 library 포함시켜준다.


저기다! 그냥 파일 찾아서 ctrl + c, crtl + v 하면끝.


하고나서 table 작성


이런 형식으로 작성해보자.

테이블 생성 방식을 모르겠다면, mysql 글 목록에가서 참고해봅시다.


이제 model클래스와 , DAO클래스를 작성한다.

package model;


public class Member {

private String id;

private String pw;

private String name;

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;

}

@Override

public String toString() {

return "Member [id=" + id + ", pw=" + pw + ", name=" + name + "]";

}

}




*DAO클래스
1.싱글턴 적용
2.생성자에서 커넥션 획득
3.읽고,쓰고,수정,삭제 함수 작성
DAO 클래스 작성방법이 잘 생각이 않나시면 JAVA 글목록에가서 참고 해봅시다!(실글턴 적용방법도 자세히 적혀있음!)
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Member;

public class MemberDao {
private static MemberDao instance;
private Connection connection;
private MemberDao(){
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection
("jdbc:mysql://localhost:3306/jsp", "root", "mysql");

} catch (SQLException e) {
e.printStackTrace();
System.out.println("커넥션을 연결하지 못했습니다.");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("드라이버를 로딩할 수 없습니다.");
}
}
public static MemberDao getInstance(){
if(instance == null)
instance = new MemberDao();
return instance;
}
public void insertMember(Member member)
{
PreparedStatement pstmt = null;
try {
pstmt = connection.prepareStatement("insert into member values(?,?,?)");
pstmt.setString(1, member.getId());
pstmt.setString(2, member.getPw());
pstmt.setString(3, member.getName());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
if(pstmt != null)
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void updateMember(Member member)
{
PreparedStatement pstmt = null;
try {
pstmt = connection.prepareStatement("update member set pw = ?, name = ? where id = ?");
pstmt.setString(3, member.getId());
pstmt.setString(1, member.getPw());
pstmt.setString(2, member.getName());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
if(pstmt != null)
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void deleteMember(String id)
{
PreparedStatement pstmt = null;
try {
pstmt = connection.prepareStatement("delete from member where id = ?");
pstmt.setString(1, id);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
if(pstmt != null)
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public Member selectOne(String id)
{
PreparedStatement pstmt = null;
ResultSet rs = null;
Member member = new Member();
try {
pstmt = connection.prepareStatement("select * from member where id = ?");
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next())
{
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setName(rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
try {
if(pstmt != null)
pstmt.close();
if(rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return member;
}
public List<Member> selectAll()
{
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Member> list = new ArrayList<Member>();
try {
pstmt = connection.prepareStatement("select * from member");
rs = pstmt.executeQuery();
while(rs.next())
{
Member member = new Member();
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setName(rs.getString("name"));
list.add(member);
}
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
try {
if(pstmt != null)
pstmt.close();
if(rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}

}


이렇게 클래스를 작성한 후 앞서 올린 login 예제에 적용시켜주면 끝~


회원가입 기능이 추가 되었으니 회원가입을할 수 있는 jsp파일도 만들어서 작성해주자.

joinForm.jsp, dojoin.jsp 작성


*joinForm.jsp

<body>

<center>


<table width="300" border="1">

id / pw / name 입력하고 가입누르세요.

<form action="/JSP_Basic_Ex2/ex/dojoin.jsp" method="post">

<tr>

<td width="200">아이디 : <input type="text" name="id" size="10"><br>

비밀번호 : <input type="password" name="pw" size="10"><br>

이름 : <input type="text" name="name" size="10">

</td>

<td width="50"><input type="submit" value="가입"><br>

   <input type="reset" value="다시">

</td>

</tr>


</form>


</table>



</center>

</body>




여기서 가입 submit 하면 dojoin.jsp 로 넘어가니까 dojoin.jsp 를 작성하자.


*dojoin.jsp


<body>


<%

request.setCharacterEncoding("UTF-8");

String id = request.getParameter("id");

String pw = request.getParameter("pw");

String name = request.getParameter("name");

Member member = new Member();

member.setId(id);

member.setPw(pw);

member.setName(name);

MemberDao.getInstance().insertMember(member);


response.sendRedirect("/JSP_Basic_Ex2/ex/main.jsp");

%>

</body>



DAO클래스를 이용해 데이터베이스에 추가 시켜주고, main.jsp로 이동해준다.

여기서 주의할 점은 Member 클래스와, MemberDao 클래스를 자동완성으로 아무거나 import 시키시면안되고

model 패키지 안에 있는 Member, dao패키지안에 있는 MemberDao 로 사용하자!


앞서 올린 login 예제에 는 회원가입 버튼이 없으니 loginForm.jsp 에도 회원가입 submit을 만들어주자.


<body>

<table width="300" border="1">

id / pw 입력후 로그인 버튼을 누르세요.

<form action="/JSP_Basic_Ex2/ex/dologin.jsp" method="post">

<tr>

<td width="200">아이디 : <input type="text" name="id" size="10"><br>

비밀번호 : <input type="password" name="pw" size="10">

</td>

<td width="50"><input type="submit" value="login"><br>

   <input type="reset" value="reset">

</td>

</tr>


</form>


</table>


<table>

<input type="button" value="처음으로"

 onclick="location.href='/JSP_Basic_Ex2/ex/main.jsp'">

 

 <input type="button" value="회원가입"

 onclick="location.href='/JSP_Basic_Ex2/ex/joinForm.jsp'">

</table>

 

</body>



이렇게 하고 login예제가 있는곳에 dojoin.jsp , joinForm.jsp 를 작성해주면 완성!

login예제 JSP글목록에 있습니다.