JSP 쇼핑몰 만들기

38. JSP Session 을 이용한 로그인처리

세션을 적용은 했지만 실무에서 어떻게 로그인처리하나
로그인이 되면 유지되게끔하자.

38.1 Center

먼저 Center값을 변경해주기 위해서 requeset객체를 이용하여 center값을 받아오기
String center = request.getParameter("center");
처음 SessionMain.jsp를 실행하면 null값이 실행되니 null처리해주자.

if (center == null){
        center = "Center.jsp";
    }

그리고 센터는 고정으로 하고 선택에 따라 바뀌기
<jsp:include page=<%=center %>/>

38.2 top

세션으로 아이디값 가져오기

<%
    //세션에서 id값 가져오기
    String id = (String) session.getAttribute("id");
    //로그인이 되어 있지 않다면 session값 null처리
    if (id == null){
        id = "손님";
    }
%>

38.3 left

<a href ="SessionMain.jsp?center='Snowpeak.jsp'">
<a href ="SessionMain.jsp?center=Coleman.jsp">
<a href ="SessionMain.jsp?center=Jeep.jsp">
"SessionMain.jsp?center=Kovea.jsp">
각 링크마다 맞는 jsp파일을 넘겨주도록 하자.

로그인 버튼 만들어주기

39. JSP Session 을 이용한 로그인처리

39.1 top 로그인됫을때와 아닐때의 처리를 해주자

<td width = "200" align = "center">
<%
    if (id =="손님") {
 %>
    <%=id %> 님 <button onclick="location.href='SessionMain.jsp?center=SessionLoginForm.jsp'">로그인</button>
 <% } else { %>
    <%=id %> 님<button onclick="location.href='SessionMain.jsp?logout=1'">로그아웃</button>
<%    }%>
</td>        

39.2 로그인 처리 페이지

세션으로 값을 담아서 보내준다.

<h2>세션 로그인 처리1</h2>
<%
    request.setCharacterEncoding("UTF-8");

    //사용자로부터 데이터 읽어들임
    String id = request.getParameter("id");
    String pass = request.getParameter("pass");

    //아이디와 패스워드를 저장
    session.setAttribute("id", id);
    session.setAttribute("pass", pass);

    session.setMaxInactiveInterval(60*2); //2분간 아이디 유지

    response.sendRedirect("SessionMain.jsp");
%>

39.3 로그아웃

세션을 끊으면된다. id에 null값을 넣어주자.
top에서 처리를 해줘야한다.

<%    
    //로그아웃 클릭시 파라미터를 통해서 로그아웃인지 확인
    String logout = request.getParameter("logout");

    if (logout != null){
        session.setAttribute("id", null);
        session.setMaxInactiveInterval(0);
    }
%>

39.4 left값

snowpeak만 만들어보자
다른페이지는 사진만 바꾸어주면된다.

<body>
<!-- Center -->
    <table width = "600">
        <tr height="400">
            <td align="center">
            <img alt="" src="images/snow.png" width="500" height="350">
            </td>
        </tr>
    </table>
</body>

40. 게시판 - 시스템구조

jsp 게시판에 대해서 보자
게시판정도는 만들어야한다.가 이전의 속설이엇다.
게시판을 통해 JSP와 데이터베이스와 자바빈 커넥션풀 연동을 통한 JSP전체흐름 이해해보자.

시스템 구조설정해보자.

게시판 구조

글쓰기 -> 전체글보기 ->글읽기(->답변글쓰기) -> 글삭제 / 글수정 ->전체글보기
전체글보기를 끝나면 count 페이징까지 하기

테이블 구조 11개 컬럼을 가지고 있다. Num은 자동증가 autoincrease


날짜는 sysdate

Ref 글그룹
Re_step 글 스텝
Re_level 글레벨
이파트를 정확히 알아야한다.

답변형 구조를 만들 것이다.

글그룹 :
글 밑에 리플을 달 것이다. 그래서 글에 대해 그룹을 만들어야한다.
1번글에 4번글 답변이 달리면 그룹이 같은것 이다. 부모글 그룹이면 부모로 따라가기

이답변형을 쓸때 부모글에 대해 그대로 따라가야한다.

글 스텝 : 답변에 답변이냐 답변이냐 답변에답변에 답변이냐

글레벨:
글을 어떤순서로 보여줄 것인지 최신이 글레벨이다.

글 번호 | 글제목 | ref | Re_step | Re_level
1 | 봄아~ |1 |1 |1
2 |여름아~ |2 |1 |1
3 |[re]봄 |1 |2 |3
4 |[re]봄2 |1 |2 |2

이걸화면에 뿌리면
2 여름아 2 1 1
1 봄아 1 1 1
4 re 봄2 1 2 2
3 re 봄1 1 2 3

스탭이 추가되면 레벨은 1씩 증가시켜야함
스탭은 같은 레벨

41. 빈클래스,테이블,Dao만들기

Num컬럼은 자동으로 증가해야한다.
오라클은 시퀀스 mysql은 auto increment 해주기

맞춰서 Bean클래스도 만들어주자.
reg_date는 스트링으로 뿌려주기때문에 스트링으로 받자.

public class BoardBean {
    private int num;
    private String writer;
    private String email;
    private String subject;
    private String password;
    private String reg_date;
    private int ref;
    private int re_step;
    private int re_level;
    private int readcount;
    private String content;

    //getter setter들
}

42. Dao만들기,BoardWriteForm

42.1 BoardDAO클래스를 만들어주자.

public class BoardDAO {
    //커넥션 설정
    Connection con;
    PreparedStatement pstmt;
    ResultSet rs;

    //데이터 베이스의 커넥션풀을 사용하도록 설정하는 메소드
    public void getCon() {
        try {
            Context initctx = new InitialContext();
            Context envctx = (Context) initctx.lookup("java:comp/env");
            DataSource ds = (DataSource) envctx.lookup("jdbc/pool");
            //datasource에서 값가져오기
            con = ds.getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

42.2 boardwritform만들기

<div align="center">
    <h2>게시글 쓰기</h2>
    <form action="BoardWriteProc.jsp" method="post">
        <table border="1">
            <tr height="40">
                <td align="center" width="150px">작성자</td>
                <td width="450px"><input type="text" name="writer" size="60"/> </td>
            </tr>

            <tr height="40">
                <td align="center" width="150px">제목</td>
                <td width="450px"><input type="text" name="subject" size="60"/> </td>
            </tr>

            <tr height="40">
                <td align="center" width="150px">이메일</td>
                <td width="450px"><input type="email" name="email" size="60"/> </td>
            </tr>

            <tr height="40">
                <td align="center" width="150px">비밀번호</td>
                <td width="450px"><input type="password" name="writer" size="60"/> </td>
            </tr>

            <tr height="40">
                <td align="center" width="150px">내용</td>
                <td width="450px"><textarea rows="10" cols="50" name="content"></textarea> </td>
            </tr>

            <tr height="40">
                <td align="center" colspan="2">
                    <input type="submit" value="글쓰기"> &nbsp;&nbsp;
                    <input type="reset" value="다시작성"> &nbsp;&nbsp;
                    <button onclick="location.href='BoardList.jsp'">전체 글 보기</button>
                </td>
            </tr>
        </table>
    </form>
</div>

'기초단계 > JSP&Servlet' 카테고리의 다른 글

2023.03.27 JSP  (0) 2023.03.27
2023.03.26 JSP  (0) 2023.03.26
2023.03.23 JSP  (0) 2023.03.23
2023.03.22 JSP  (0) 2023.03.22
2023.03.21 JSP  (0) 2023.03.21

+ Recent posts