본문 바로가기

개발 이야기/개발일지

2018.12.17 개발일지

#2018.12.17 개발일지


1. 

지난 시간은 간단한 Javascript 구문을 통한 입력폼 값 유효성 검증을 진행

오늘은 write.jsp에서 보낸 값을 index.jsp 에서 받아서 리스트로 표현 할 예정

오늘은 유효성 검증이 끝난 데이터의 form을 Post 방식으로 JSP 페이지에 전송 (서버 측에서의 유효성 검증과 출력)


2. 게시판 만들기 Summary

[본격 게시판짜기 Part1.4 - HTML-> JSP] form 파라미터 받기 의 글을 바탕으로 개인적으로 공부한 내용을 요약했습니다.


1) <% %>, <%= %>를 이용한 게시판 표현

① <% %> 스크립트릿 태그: 자바 코드를 적어 넣을 수 있는 역할을 하는 태그

② <%= %> 태그: 값이 들어간 변수를 그대로 출력하는 역할을 하는 태그

* 1), 2)의 태그는 JSP페이직 Web서버를 통해 로드 될 때, 코드가 컴파일 되고 HTML화 되어야하기 때문에 가장 먼저 실행 됨.
즉, html의 어느 부분에 위치하더라도 가장 먼저 표현되기 때문에, 코드의 어느 부분에서 이 태그가 사용되더라도 HTML 문서에 위배되지 않는 한 문제가 없음.
(상세이론은 찾아봅시다..)


2) 1)을 사용하여 게시판 표현 (feat. 하드코딩)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!-- 스크립트릿을 열고 변수 선언 -->
<%
    int idx = 1;
    int count = 10000;
    String title = "제목란";
    String writer = "작성자";
    String regdate = "18-12-17";
%>
<body>
<h1>게시글 리스트</h1>
    <table>
        <tr>                <!-- tr: 행 -->
            <th>번호</th>    <!-- th: 테이블에서 강조하고 싶은 것은 th -->
            <th>제목</th>
            <th>작성자</th>
            <th>날짜</th>
            <th>조회수</th>
        </tr>
        <tr>
            <td><%=idx %></td>        <!-- td: 열 -->
            <td><%=title %></td>
            <td><%=writer %></td>
            <td><%=regdate %></td>
            <td><%=count %></td>
        </tr>
    </table>
    <a href="write.jsp">글쓰기</a>
</body>
cs


3) HttpServeletRequest 객체를 사용하여 데이터 받기

- HttpServeletRequest: http의 요청(=웹 요청)을 Servlet에서 받아서 처리하기 위해 사용하는 객체 

(Servlet은 또 뭐니.../ 자세한 내용은 따로 알아보시오..)

- 사용방법

1
request.getParameter("form에서 넘긴 name");
cs

- index.html에 해당 코드 넣고 실행해보면 null 값 투성이.

왜? write.jsp에서 데이터 보내준적 없기 때문!

글쓰기(write.jsp) 페이지에서 데이터 입력 후, submit 버튼 누르면 데이터가 게시 될 것이다.

- write.jsp 에서 데이터 보내준 후


- 한글깨짐 현상은 스크립트릿 최상단에 하기 코드를 한줄 추가하면 된다.

request.setCharacterEncoding("euc-kr");


4) JSP에서 받은 값에 대한 유효성 검사
- WHY? html, javascript에서 이뤄지는 유효성 검사는 클라이언트 측에서만 이루어지기 때문에, 마음만 먹으면 url 우회/from 값 조작 등이 가능. 
(정확한건 아무래도 찾아보는 것이 좋겠음, 그동안 업무상 너무 기계적으로 한 듯..)
-JSP(Java)의 정규식 사용하여, 유효성 검사


* jsp 최상단에 하기 구문 추가

<%@page import="java.util.regex.Pattern"%>


* 스크립트릿 안쪽, 파라미터를 받은 직후에 유효성 검사 코드를 추가

- 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<%@page import="java.util.regex.Pattern"%>
<!-- 생략.. -->
<%
    request.setCharacterEncoding("euc-kr"); // 한글 깨질 때, 추가
 
    int idx = 1;
    int count = 10000;
    String title = request.getParameter("title");
    String writer = request.getParameter("writer");
    String regdate = request.getParameter("regdate");
    String content = request.getParameter("content");
    
    if(title == "" ||title == nullout.println("title이 null입니다.");
     
    if(writer == "" ||writer == null)
        out.println("writer가 null입니다.");   
    else if(!Pattern.matches("^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$", writer))
        out.println("이메일 형식이 아닙니다.");
     
    if(regdate == "" ||regdate == null)
        out.println("regdate가 null입니다.");
    else if(!Pattern.matches("^[0-9]*$", regdate))
        out.println("숫자형식이 아닙니다.");
     
    if(content == "" ||content == nullout.println("content가 null입니다.");
 
%>
<body>
<h1>게시글 리스트</h1>
    <table>
        <tr>                <!-- tr: 행 -->
            <th>번호</th>    <!-- th: 테이블에서 강조하고 싶은 것은 th -->
            <th>제목</th>
            <th>작성자</th>
            <th>날짜</th>
            <th>조회수</th>
        </tr>
        <tr>
            <td><%=idx %></td>        <!-- td: 열 -->
            <td><%=title %></td>
            <td><%=writer %></td>
            <td><%=regdate %></td>
            <td><%=count %></td>
        </tr>
    </table>
    <a href="write.jsp">글쓰기</a>
</body>
cs


+ DB 연결 된 게시판이 아니기 때문에, 새로고침하면 데이터 사라짐

즉, 그냥 로컬에서 일시적으로 혼자 가지고 있는 데이터임.

DB를 통해 write.jsp에서 작성한 글을 저장해주고, index.jsp로 불러주는 과정이 필요.

'개발 이야기 > 개발일지' 카테고리의 다른 글

2018.12.15 개발일지  (0) 2018.12.15
2018.12.13 개발일지  (0) 2018.12.13