Land of Joe
jsp 백엔드 개발 정리 본문
[ 로그인 ]
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %>
<!-- 라이브러리 import -->
<%@ page import="java.sql.DriverManager" %> <!-- 데이터베이스 탐색 라이브러리 -->
<%@ page import="java.sql.Connection" %> <!-- 데이터베이스 연결 라이브러리 -->
<%@ page import="java.sql.PreparedStatement" %> <!-- 데이터베이스 SQL 전송 라이브러리 -->
<%@ page import="java.sql.ResultSet" %> <!-- 데이터베이스에서 값 받아오기 라이브러리 -->
<%
request.setCharacterEncoding("utf-8");
String idValue = request.getParameter("id_value");
String pwValue = request.getParameter("pw_value");
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost/stageus", "JKE", "1234");
String sql = "SELECT * FROM account WHERE id = ? AND password = ?";
PreparedStatement query = connect.prepareStatement(sql);
query.setString(1, idValue);
query.setString(2, pwValue);
ResultSet result = query.executeQuery();
if (result.next()) {
session.setAttribute("idx", result.getString(1));
session.setAttribute("id", result.getString(2));
session.setAttribute("name", result.getString(3));
session.setAttribute("password", result.getString(4));
session.setAttribute("email", result.getString(5));
session.setAttribute("birthday", result.getString(6));
session.setAttribute("phoneNumber", result.getString(7));
response.sendRedirect("../index.jsp");
}
%>
String sql = "SELECT * FROM account WHERE id = ? AND password = ?"
>> account 테이블에서 id가 ?이고, password가 ?인 행을 가져온다는 의미의 sql을 만들었다.
PreparedStatement query = connect.prepareStatement(sql);
>> sql을 전송하는 query를 만들었다.
query.setString(1, idValue);
query.setString(2, pwValue);
>> 그때 첫 번째 ?는 idValue이고, 두 번째 ?는 pwValue야.
ResultSet result = query.executeQuery();
>> result라는 테이블은 위에서 만든 query에서 값을 받아온 거야.
result.next();
>> result 테이블의 한 줄을 읽는다.
>> 즉, 로그인 페이지에서 입력한 idValue가 id column에 있고, pwValue가 password column에 있는 행이 존재한다.
if (result.next()) {
>> result 테이블을 읽을 수 있다면
session.setAttribute("idx", result.getString(1));
>> result 테이블의 첫 번째 열을 "idx"라는 이름으로 세션에 저장한다.
session.setAttribute("id", result.getString(2));
>> result 테이블의 두 번째 열을 "id"라는 이름으로 세션에 저장한다.
session.setAttribute("name", result.getString(3));
session.setAttribute("password", result.getString(4));
session.setAttribute("email", result.getString(5));
session.setAttribute("birthday", result.getString(6));
session.setAttribute("phoneNumber", result.getString(7));
response.sendRedirect("../index.jsp");
>> "../index.jsp" 이 링크로 넘어간다.
[ 회원가입 ]
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %>
<!-- jsp에서 라이브러리 import -->
<%@ page import="java.sql.DriverManager" %> <!-- 데이터베이스 탐색 라이브러리 -->
<%@ page import="java.sql.Connection" %> <!-- 데이터베이스 연결 라이브러리 -->
<%@ page import="java.sql.PreparedStatement" %> <!-- 데이터베이스 SQL 전송 라이브러리 -->
<%
request.setCharacterEncoding("utf-8");
String idValue = request.getParameter("id_value");
String pwValue = request.getParameter("pw_value");
String nameValue = request.getParameter("name_value");
String emailValue = request.getParameter("email_value");
String birthdayValue = request.getParameter("birthday_value");
String phoneNumberValue = request.getParameter("phoneNumber_value");
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost/stageus","JKE","1234");
String sql = "INSERT INTO account (id, password, name, email, birthday, phone_number) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement query = connect.prepareStatement(sql);
query.setString(1, idValue);
query.setString(2, pwValue);
query.setString(3, nameValue);
query.setString(4, emailValue);
query.setString(5, birthdayValue);
query.setString(6, telValue);
// query 전송
query.executeUpdate();
%>