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]+"&nbsp;";
    }

    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;
    }




}