JSP, Servlet login web 구현

강정우·2022년 8월 3일
0

JSP, Servlet, JDBC

목록 보기
8/19
post-thumbnail

Main 홈페이지

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>회원관리 시스템</h1>
		<a href = "join.html"><button>회원가입</button></a>
		<a href = "delete.html"><button>회원삭제</button></a>
		<a href = "update.html"><button>회원수정</button></a>
		<a href = "Select.jsp"><button>회원전체검색</button></a>
		<a href = "selectOne.html"><button>회원개별검색</button></a>
		<a href = "Login.html"><button>로그인</button></a>
</body>
</html>

순서대로 정적페이지 구현

  • 왜 정적페이지인가? 굳이 java 코드가 들어갈 필요가 없기때문에 서버에 소요를 만들 필요가 없다.

1-1. join html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>회원가입페이지</h1>
	<form action="JoinCon" method="post">
	<input type="text" name="id" placeholder = "ID입력" required="required"><br>
	<input type="password" name="pw" placeholder = "PW입력" required="required"><br>
	<input type="text" name="nick" placeholder = "NICK입력" required="required"><br>
	<input type="submit" value="회원가입">
	<!-- re 치고 자동완성하면 required 속성이 나오는데 이것이 백앤드의 not null과 같은 역할을 함 -->
	</form>
</body>
</html>

1-2. join servlet

<style>

package com.Controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/JoinCon")
public class JoinCon extends HttpServlet {

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");

		PreparedStatement psmt = null;
		Connection conn = null;

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

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String dbid = "hr";
			String dbpw = "hr";
			conn = DriverManager.getConnection(url, dbid, dbpw);

			String sql = "insert into web_member values(?,?,?)";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, id);
			psmt.setString(2, pw);
			psmt.setString(3, nick);


			int cnt = psmt.executeUpdate();

			if (cnt > 0) {
				response.sendRedirect("main.html");
			} else {
				System.out.println("input failed");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

}

</style>

2-1. delete HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>회원삭제페이지</h1>
	<form action="DeleteCon" method="post">
	<input type="text" name="id" placeholder="ID입력"><br> 
	<input type="submit" value="회원삭제">
	</form>
</body>
</html>

2-2. delete servlet

</style>
package com.Controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/DeleteCon")
public class DeleteCon extends HttpServlet {

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");

		String id = request.getParameter("id");
		
		PreparedStatement psmt = null;
		Connection conn = null;

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String dbid = "hr";
			String dbpw = "hr";
			conn = DriverManager.getConnection(url, dbid, dbpw);

			String sql = "delete from web_member where id=(?)";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, id);

			int cnt = psmt.executeUpdate();

			if (cnt > 0) {
				response.sendRedirect("main.html");
			} else {
				System.out.println("delete failed");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}

}
</style>

3-1. update HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>회원수정페이지</h1>
	<form action="UpdateCon" method="post">
	<input type="text" name="id" placeholder = "ID입력"><br>
	<select name="select">
		<option>pw</option>
		<option>nick</option>
	</select>
	<input type="text" name="data" placeholder = "변경할 data 입력"><br>
	<input type="submit" value="회원수정">
	</form>
</body>
</html>

3-2. update servlet

<style>
package com.Controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/UpdateCon")
public class UpdateCon extends HttpServlet {

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");

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

		PreparedStatement psmt = null;
		Connection conn = null;

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String dbid = "hr";
			String dbpw = "hr";
			conn = DriverManager.getConnection(url, dbid, dbpw);

			String sql = "";
			
			if (select.equals("pw")) {
				sql = "update web_member set pw= ? where id = ?";
			} else if (select.equals("nick")) {
				sql = "update web_member set nick= ? where id = ?";
			}
			
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, data);
			psmt.setString(2, id);

			int cnt = psmt.executeUpdate();

			if (cnt > 0) {
				response.sendRedirect("main.html");
			} else {
				System.out.println("update failed");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}

}
</style>

4. select JSP

<style>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>회원 전체 검색</h1>
	<table border=1>
		<tr>
			<th>ID</th>
			<th>PW</th>
			<th>NICK</th>
		</tr>
		<%
		PreparedStatement psmt = null;
		Connection conn = null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String dbid = "hr";
			String dbpw = "hr";
			conn = DriverManager.getConnection(url, dbid, dbpw);
			String sql = "select * from web_member";
			psmt = conn.prepareStatement(sql);
			
			ResultSet rs =  psmt.executeQuery();
			
			while (rs.next()) {
				String id = rs.getString(1);
				String pw = rs.getString(2);
				String nick = rs.getString(3);
				
				out.print("<tr>"+"<td>"+id+"</td>");
				out.print("<td>"+pw+"</td>");
				out.print("<td>"+nick+"</td>"+"</tr>");

			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		%>
		
	</table>
	<a href="main.html"><button>메인페이지로</button></a>
	
</body>
</html>
</style>

5-1. selectone HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="SelectOne.jsp" method="post">
<h1>회원 검색 페이지</h1>

	id 입력
	<input type="text" name="id" placeholder = "ID입력" required="required"><br>
	<input type="submit" value="찾기">

</form>
</body>
</html>

5-2. selectone jsp

<style>

<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>회원 개별 검색</h1>
	<table border=1>
		<tr>
			<th>ID</th>
			<th>PW</th>
			<th>NICK</th>
		</tr>
		<%
		String userId = request.getParameter("id");
		
		PreparedStatement psmt = null;
		Connection conn = null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String dbid = "hr";
			String dbpw = "hr";
			conn = DriverManager.getConnection(url, dbid, dbpw);
			String sql = "select * from web_member where id = ?";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, userId);
			ResultSet rs =  psmt.executeQuery();
			
			if(rs.next()) {
				String id = rs.getString(1);
				String pw = rs.getString(2);
				String nick = rs.getString(3);
				
				out.print("<tr>"+"<td>"+id+"</td>");
				out.print("<td>"+pw+"</td>");
				out.print("<td>"+nick+"</td>"+"</tr>");

			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		%>
		
	</table>
	<a href="main.html"><button>메인페이지로</button></a>
</body>
</html>

</style>

6-1. login HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인</h1>
	<form action="LoginCon" method="post">
		id : <input type="text" name="id" placeholder="id를 입력하세요."><br>
		pw : <input type="password" name="pw" placeholder="pw를 입력하세요."><br>
		<input type="submit" value="로그인"><br>
	</form>
</body>
</html>

6-2. login servlet

<style>

package com.Controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/LoginCon")
public class LoginCon extends HttpServlet {

	protected void service(HttpServletRequest request, HttpServletResponse response) 
    		throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");

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

		PreparedStatement psmt = null;
		Connection conn = null;

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String dbid = "hr";
			String dbpw = "hr";
			conn = DriverManager.getConnection(url, dbid, dbpw);

			String sql = "";
			
			sql = "select pw from web_member where id = ? and pw = ?";
			
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, id);
			psmt.setString(2, pw);

			ResultSet rs =  psmt.executeQuery();
			
			if(rs.next()) {
				Cookie cookie = new Cookie("id",id);
				response.addCookie(cookie);
				
				response.sendRedirect("LoginS.jsp");
			}else {
				response.sendRedirect("LoginF.html");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		
	}
}

</style>

6-3. loginS jsp

  • 얘는 왜 jsp인가? 바로 session이나 cookie를 가져와서 사용자의 id를 확인하는 code가 필요하기 때문에 java코드가 필수적이다. 따라서 jsp로 작성해야만 한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	Cookie[] cookies = request.getCookies();

	for (int i = 0; i < cookies.length; i++) {
		if (cookies[i].getName().equals("id")) {
			out.print(cookies[i].getValue() + "님 환영합니다." + "<br>");

		}
	}
	%>
</body>
</html>

6-4. loginF html


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>ID나 PW를 한 번 더 확인해주세요.</h1>
</body>
</html>
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글