본문 바로가기
Front-end (국비)/이론

23.06.29 수업 정리 3 (JSP / Java Server Pages)

by Hwanii_ 2023. 6. 29.
728x90

개념 및 흐름과 코드 정리 하기.

 

(코드가 훨씬 간결하고 깔끔하다..)

 

 

실제 웹 페이지와 유사하게,

로그인을 하지 않으면 글을 작성하지 못하도록 구현 했다.

 

로그인을 하지 않으면, 글 작성하기 기능이 아예 안보이는게 아니라,

 

무언가, 회색 느낌을 주면서, 작성 자체가 안되도록

+

글을 작성 하려면 로그인을 하라고 안내해주는 느낌 이다.

 

코드를 확인 해 보자.

 

 

이렇게, 로그인한 회원의 정보 중에 하나인 name이 null 인 경우와

그렇지 않은 경우로 if - else 문을 구현한 모습이다.

 

mid가 아니고 name인 이유는

 

 

이렇게,, 

session 주체가 name 속성의 값을 get 했기 때문이다.

 

그리고 String name에 담은 이유는, name 속성의 값을 이 페이지에서 사용하려고 !

 

여기서 (String) 을 적어줘서, 다운 캐스팅 하는 모습을 볼 수 있는데,

 

이유는 getAttribute() 메서드가 object 타입의 값 이기 때문 이다.

 

이렇게 적으면 빨간 밑줄이 뜨게 되는데, 확인해보면 된다.

 

 

 

getAttribute(String name) : Object 인것을 확인할 수 있다.

 

 

 

 

암튼 회색 효과를 주면서 하는 기능이 disabled 이다.

 

if - else 문 (자바 문법) 하고 같이 사용 하려고,

스크립트릿 내부에 태그 언어를 사용한 모습이다.

 

아예 분리해도 되긴 하는데, 그러면 스크립트릿을 열고 닫고를 몇번 해줘야 한다.

 

size = '숫자' 는 사용자에게 보여지는 입력받는 란의 크기를 의미 한다.

 

100으로 바꾸게 되면 

 

 

이런식으로 길이가 길어지고,

 

30으로 바꾸게 되면

 

 

길이가 짧아 진다.

 

 

이런식으로 name이 null인 경우와 아닌경우로 해서 보이는것을 다르게 줄 수 있다.

 

 

 

 

글 목록을 출력 해주는 코드도 표현법이 조금 다른데,

 

이전 게시글 에서는 <ol> 태그를 스크립트릿 외부에 빼뒀더라면,

 

이번에는 스크립트릿 내부에 모두 가둬서 사용하는 모습을 확인할 수 있다.

 

<ol> 태그와 <li> 태그는 부모 자식 관계의 태그 이다.

 

그리고, <p> 태그의 p는 paragraph를 의미한다.

줄 바꿈이 필요한 단락을 나누고 싶을 때 사용 하면 된다.

 

(지금 상황에서는 사실 굳이 필요 없는듯..)

 

 

 

태그를 작성할 때, 목적에 따라 분리된 div 태그가 여러개면,

해당 영역의 전체 div 태그를 묶어 주면 좋다.

 

 

 

 

다음은 로그인 페이지 이다.

 

 

로그인 실패시,

alert 를 띄우고,

이전 다시 aa.jsp (메인 페이지) 로 돌아 가야 하는데,

 

이전 게시글에서 정리했듯이,

response.sendRedirect("aa.jsp") 를 하면,

alert 를 읽지도 않고 aa.jsp 페이지로 가게 되버린다.

 

참고

 

그래서, 대신에,

history.go(-1)를 볼 수 있다.

 

location.href 를 사용해도 무관하다.

 

 

 

다음은, 글 작성 페이지 이다.

 

 

 

aa.jsp의 form 태그 내부에서 사용자가 입력한  text (글)을 name = 'msg' 로 보내줬기 때문에,

 

cc.jsp 에서, request.getParameter("msg") 로 받고 있는 모습이다.

 

받은 데이터가 !

 

isBlank() 야 ?

 

그러면, 내용을 입력 해달라고 멘트 하고, history.go(-1) 해줘 ~

(메인페이지로 보내줘 ~)

 

이 코드는 이제, 글을 작성할 때, 스페이스바를 눌러서 공백을 주고,

글 작성을 하면,

required 속성 조건을 뚫기 때문에 그것을 방지하고자 작성한 코드 이다.

 

아래를 확인 해보자.

 

참고

 

Returns true if the string is empty or contains only white space codepoints,

otherwise false.

 

뭔진 잘 몰라도, 대충 해석하더라도,

 

만약 string이 empty 거나 (아예 빈값이거나 == 입력 자체를 안했거나)

또는

white space 를 포함했으면 (스페이스 바가 있으면)

 

return true를 해준다는 느낌이다.

 

string이 비어있지 않거나, 또는 스페이스도 없어 !

그러면 string 값이 있다는 거니까, == 비어있지 않다는거니까,

 

return false 이다.

 

[ 참고 ]

 

 

isEmpty() 랑 느낌이 비슷한데, 조금 다르다.

 

isEmpty() 는 

return 값으로 true 혹은 false를 주는것은

isBlank() 와 동일한데,

 

length 가 0인지 아닌지를 보는 것이다.

 

즉, 메서드의 주체가 배열일 때 사용 하는 메서드 이다.

 

배열의 길이가 1이상 이야 ? == 비어있지 않다.

 

그러면 return false 이고,

 

배열의 길이가 0이야? == 비어있다.

 

그러면 return true 이다.

 

 

 

 

else 문 내부의 첫 2줄 코드를 해석해 보자.

 

msg는 

 

 

이것인데,

 

writer은 뭘까 ?

 

속성 이름만 보면 글쓴이 인데, writer 속성의 값은 그러면

각 회원의 name 이어야 하지 않을까 ?

또는 mid 이거나 ?

 

그래서 aa.jsp 를 확인 해보면,

 

 

name = "writer" value = "<%=name%>" 을 확인할 수 있다.

 

type = "text" 식이 아니라,

 

type = "hidden" 인것을 확인 할 수 있는데,

 

이것은, 사용자에게 보이지 않는다.

 

즉, 이 코드는 무엇을 의미하냐면,

 

정말 그냥, value = name 을 넘겨주기 위해서 ~~~

보내는 장치인 것이다.

 

마치 자바에서 서치 키워드나 이런것 처럼 set 해주는 것과 동일한 개념 이다.

 

이 value =  name은 어디서 왔냐면,

 

회원이 로그인을 했어.

그러면 M에서 selectOne() 을 하겠지.

그때 유효한 회원이였으면 객체로 받았을 것이고,

그 객체가 들고 있는 멤버변수 (속성) 을 session 주체가 setAttribute("name",getName())

식으로 해서 멤버변수 (속성) name의 값을 set 하는 것이다.

 

그래서 name을 사용할 수 있는 것이다.

 

 

 

반응형

'Front-end (국비) > 이론' 카테고리의 다른 글

EL (Expression Language) 식  (0) 2023.07.04
JSTL 이란 ?  (0) 2023.07.04
23.06.29 수업 정리 2 (JSP / Java Server Pages)  (0) 2023.06.29
23.06.29 수업 정리 (JSP / Java Server Pages)  (0) 2023.06.29
내장 객체  (0) 2023.06.29