JSP
[JSP] 간단 회원관리 실습
jackypark
2022. 10. 11. 16:41
요구조건


loginForm.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%
session.invalidate();
%>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<center>
<h1>로그인 폼페이지</h1>
<form action="/loginProcess.jsp" method="post">
<table border="1">
<tr>
<td colspan="2">
LOGIN
</td>
</tr>
<tr>
<td>
아이디
</td>
<td>
<input type="text" name="id" required>
</td>
</tr>
<tr>
<td>
비밀번호
</td>
<td>
<input type="password" name="pw" required>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="로그인">
<input type="button" onclick="location.href='joinForm.jsp'" value="회원가입">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
joinForm.jsp
밑 프로젝트 코드와 같음
https://jackycode.tistory.com/66?category=1035658
유효성 검사(정규식사용)
정규식을 사용해서 유효성 검사를 진행했다... 나는 http부분의 input에 있는 pattern을 사용하여 정규식을 사용해서 검사를 진행했다. 과제 1 회원 기본 정보 아이디: 4~12자의 영문 대소문자와 숫자
jackycode.tistory.com
LoginProcess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.*" %>
<%
String id= request.getParameter("id");
String pw=request.getParameter("pw");
Connection conn=null;
String sql="Select * from member where id=? and pw=?";
try{
Context init = new InitialContext();
DataSource ds=(DataSource)init.lookup("java:comp/env/jdbc/OracleDB");
conn=ds.getConnection();
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setString(2,pw);
ResultSet rs=pstmt.executeQuery();
while(rs.next()) {
session.setAttribute("sessionId",id);
}
rs.close();
}catch(Exception e){
out.println("<h3>레코드 등록실패</h3>");
e.printStackTrace();
}
%>
<script>
if(<%=session.getAttribute("sessionId")==null%>){
alert("아이디 혹은 비밀번호 불일치 혹은 회원정보없음");
location.href="index.jsp";
}else{
location.href="Main.jsp";
}
</script>
JoinProcess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.*" %>
<%
request.setCharacterEncoding("UTF-8");
String id=request.getParameter("id");
String pw=request.getParameter("pw");
String email=request.getParameter("email");
String myName=request.getParameter("myName");
String year=request.getParameter("year");
String month=request.getParameter("month");
String day=request.getParameter("day");
String[] hobby= request.getParameterValues("hobby");
String intro=request.getParameter("intro");
String hobby2="";
String birth=year+"/"+month+"/"+day;
for (int i = 0; i < hobby.length; i++) {
hobby2+=hobby[i]+" ";
}
Connection conn=null;
String sql="INSERT INTO member (ID,PW,EMAIL,NAME,birthday,hobby,intro) VALUES (?,?,?,?,?,?,?)";
try{
Context init = new InitialContext();
DataSource ds=(DataSource)init.lookup("java:comp/env/jdbc/OracleDB");
conn=ds.getConnection();
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setString(2,pw);
pstmt.setString(3,email);
pstmt.setString(4,myName);
pstmt.setString(5,birth);
pstmt.setString(6,hobby2);
pstmt.setString(7,intro);
if(pstmt.executeUpdate()!=0) {
response.sendRedirect("index.jsp");
}
}catch(Exception e){
out.println("<script>alert('회원정보 등록실패');location.href='joinForm.jsp';</script>");
}
%>
<html>
<head>
<title>Title</title>
</head>
<body>
</body>
</html>
Main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><%=session.getAttribute("sessionId")%>님이 로그인 한 상태입니다.</h3>
<%
if(session.getAttribute("sessionId").equals("admin")){
%>
<a href="Member_list.jsp">관리자모드 접속(회원목록 보기)</a>
<%}%>
<input type="button" onclick="location.href='index.jsp'" value="로그아웃">
</body>
</html>
Member_list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="model.*"%>
<%@ page import="java.util.ArrayList" %>
<%
MemberListDAO dao = new MemberListDAO();
ArrayList<MemberDTO> memberList = dao.getList();
%>
<html>
<head>
<title>Title</title>
</head>
<body>
<center>
<table border="1">
<tr>
<td colspan="2">
회원목록
</td>
</tr>
<%
for(int i = 0; i <memberList.size(); i++) {
MemberDTO member=memberList.get(i);
%>
<tr>
<td>
<a href="Member_into.jsp?id=<%=member.getId()%>"><%=member.getId()%></a>
</td>
<td>
<a href="Member_delete.jsp?id=<%=member.getId()%>">삭제</a>
</td>
</tr>
<%
}
%>
<tr>
<td colspan=2>
<input type="button" onclick="location.href='index.jsp'" value="로그아웃">
</td>
</tr>
</table>
</center>
</body>
</html>
Member_into.jsp

<%--
Created by IntelliJ IDEA.
User: Jacky Park Jong Hyun
Date: 2022-10-11
Time: 오후 1:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="model.*"%>
<%
String id= request.getParameter("id");
MemberListDAO dao = new MemberListDAO();
MemberDTO member= dao.memberInfo(id);
%>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<td colspan="2">
회원목록
</td>
</tr>
<tr>
<td>
아이디:
</td>
<td>
<%=member.getId()%>
</td>
</tr>
<tr>
<td>
비밀번호:
</td>
<td>
<%=member.getPw()%>
</td>
</tr>
<tr>
<td>
이름:
</td>
<td>
<%=member.getName()%>
</td>
</tr>
<tr>
<td>
Email:
</td>
<td>
<%=member.getEmail()%>
</td>
</tr>
<tr>
<td>
생년월일:
</td>
<td>
<%=member.getBirthday()%>
</td>
</tr>
<tr>
<td>
관심분야:
</td>
<td>
<%=member.getHobby()%>
</td>
</tr>
<tr>
<td>
자기소개:
</td>
<td>
<%=member.getIntro()%>
</td>
</tr>
<tr>
<td colspan="2">
<a href="Member_list.jsp">리스트로 돌아가기</a>
</td>
</tr>
</table>
</body>
</html>
Member_delete.jsp
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String id= request.getParameter("id");
String sql = "Delete from member where id=?";
Connection conn=null;
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,id);
if(pstmt.executeUpdate()!=0) {
response.sendRedirect("Member_list.jsp");
}
} catch (Exception e) {
}
%>
MemberListDao.java
더보기
package model;
import java.sql.*;
import java.util.*;
import javax.naming.*;
import javax.sql.*;
public class MemberListDAO {
private static MemberListDAO instance;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
public ArrayList<MemberDTO> getList() {
String sql = "Select * from member";
ArrayList<MemberDTO> list = new ArrayList<MemberDTO>();
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
MemberDTO member = new MemberDTO();
member.setId(rs.getString("ID"));
member.setPw(rs.getString("PW"));
member.setEmail(rs.getString("EMAIL"));
member.setName(rs.getString("NAME"));
member.setBirthday(rs.getString("Birthday"));
member.setHobby(rs.getString("Hobby"));
member.setIntro(rs.getString("Intro"));
list.add(member);
}
return list;
} catch (Exception e) {
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
}
}
return null;
}
public MemberDTO memberInfo(String id) {
String sql = "Select * from member where id=?";
MemberDTO member = new MemberDTO();
System.out.println(id);
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,id);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
member.setId(rs.getString(1));
member.setPw(rs.getString(2));
member.setEmail(rs.getString(3));
member.setName(rs.getString(4));
member.setBirthday(rs.getString(5));
member.setHobby(rs.getString(6));
member.setIntro(rs.getString(7));
}
return member;
} catch (Exception e) {
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
}
}
return null;
}
}
MemberDTO.java
더보기
package model;
public class MemberDTO {
String id;
String pw;
String email;
String name;
String birthday;
String hobby;
String intro;
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
}