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글목록에 있습니다.