https://wintmoca.tistory.com/40
[SERVLET] 서블릿에 데이터 베이스 연동하기(SELECT 구문)
서블릿에 데이터 베이스를 연동해보는 예제이다. 서블릿에서 데이트 베이스로 연동 접근이 가능한 구문은 DML(INSERT,DELETE,UPDATE,SELECT)가 있는데 이 중 SELECT를 이용해 오라클 서버를 서블릿에 연동
wintmoca.tistory.com
서블릿에 데이터 베이스를 연동해 SELECT 구문으로 출력하는 예제를 만들어 보았으니,
이번에는 JSP에서 로그인 창을 만들어 아이디와 비밀번호를 입력했을 때
데이터 베이스의 정보와 일치하면 로그인 성공 페이지로 이동하는 코드를 구현해보자 😇
데이터 베이스에는 테이블을 만들어 이렇게 필드와 레코드를 넣어 두었다.
COMMIT 후 먼저 JSP로 이동했다.
로그인을 실행할 JSP 페이지
<body>
<form action="DATABASE_5">
<table>
<tr>
<td>아이디</td>
<td><input name="ID" placeholder="아이디를 입력하세요."></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input name="PASSWORD" placeholder="비밀번호를 입력하세요."></td>
<tr>
<td id="sub"><input type="submit" value="로그인"></td>
</tr>
</table>
</form>
</body>
ID와 PASSWORD를 입력하고 로그인 버튼을 누르면 DATABASE_5 서블릿 페이지로 이동한다.
서블릿 페이지에서 이용할 자바 빈 페이지
package DATABASE;
public class DATABASE_5_BEAN {
DATABASE_5_BEAN() {}
private String id;
private String pw;
public void setid(String a) {
this.id=a;
}
public String getid() {
return this.id;
}
public void setpw(String b) {
this.pw=b;
}
public String getpw() {
return this.pw;
}
}
JSP, 데이터 베이스의 정보를 받아 수행할 서블릿 페이지
package DATABASE;
// import 구문
import jakarta.security.auth.message.callback.PrivateKeyCallback.Request;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
// sql연동에 쓰일 import 구문
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
// List와 ArrayList, 자바 빈 페이지, PrintWriter, 쿠키 import 구문
import java.util.List;
import java.util.ArrayList;
import DATABASE.DATABASE_5_BEAN;
import java.io.PrintWriter;
import jakarta.servlet.http.Cookie;
public class DATABASE_5 extends HttpServlet {
private static final long serialVersionUID = 1L;
//오라클 서버 연동
public Connection Data(){
Connection con=null;
try {
Class.forName("oracle.jdbc.OracleDriver");
try {
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "C##ABC", "1234");
}catch(SQLException e) {
e.printStackTrace();
}
return con;
}catch(ClassNotFoundException e) {
e.printStackTrace();
return null;
}
}
public void Select(HttpServletRequest request, HttpServletResponse response) {
Connection con=null;
Statement state=null;
ResultSet result=null;
try {
con=Data();
state=con.createStatement();
result=state.executeQuery("SELECT ID,PASSWORD FROM LOGIN");
System.out.print("연결 성공");
List<DATABASE_5_BEAN> list=new ArrayList<DATABASE_5_BEAN>();
//자바 빈에 데이터 베이스의 데이터 저장 후 list에 저장
while(result.next()) {
DATABASE_5_BEAN BEAN = new DATABASE_5_BEAN();
BEAN.setid(result.getString("ID"));
BEAN.setpw(result.getString("PASSWORD"));
list.add(BEAN);
}
System.out.print("저장 성공");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
// JSP에서 input으로 받아온 데이터 각각 변수 i, p에 저장
String i=request.getParameter("ID");
String p=request.getParameter("PASSWORD");
for(int j=0; j<list.size(); j++)
{ // 사용자의 입력 데이터(변수 i,p)가 저장된 데이터(list)와 같다면 실행
if(list.get(j).getid().equals(i) && list.get(j).getpw().equals(p)) {
Cookie c=new Cookie("c_id",i); // 로그인 결과 페이지에 아이디 데이터 전달에 쓰일 쿠키
c.setMaxAge(60*10);
c.setPath("/");
response.addCookie(c);
response.sendRedirect("DATABASE_5_JSP_2.jsp");
}
}
//System.out.print("출력 성공");
}catch(Exception e) {
e.printStackTrace();
System.out.print("실패");
}
try {
if(result != null)
result.close();
if(state != null)
state.close();
if(con != null)
con.close(); }
catch(Exception e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Select(request,response);
}
JSP 로그인 결과 페이지
<body>
<form action="DATABASE_5_JSP_1.jsp">
<fieldset>
<legend>로그인 결과</legend>
<% Cookie[] c=request.getCookies(); %>
<%= c[1].getValue() %>님이 로그인 하셨습니다.
<input type="submit" value="로그아웃"> // 로그아웃을 누르면 처음 JSP 페이지로 이동한다.
</fieldset>
</form>
</body>
결과 페이지로 이동한 뒤 아이디 값을 받아와서
[아이디]님이 로그인 하셨습니다. 라는 안내 문구를 넣고 싶었는데,
값을 어떻게 받아올까 고민하다가 이번에는 쿠키 기능을 이용해보았다. 🍪
아직 허술하지만 로그인 성공 구현하기 예제 완성 ! :D
'JSP, SERVLET' 카테고리의 다른 글
[JSP, SERVLET] getAttribute과 getParameter, int형 변환하기 (0) | 2023.04.28 |
---|---|
[SERVLET] 서블릿에 데이터 베이스 연동하기(SELECT 구문) (1) | 2023.04.27 |
[JSP] 스크립트 태그(Script Tag)란? (0) | 2023.04.26 |
[JSP] JSP(Java Server Pages) 기초 개념과 특징, JSP 디렉티브 (0) | 2023.04.24 |
[JSP,SERVLET] JSP에서 보낸 데이터 SERVLET에서 쿠키로 저장하기 (0) | 2023.04.20 |