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

23.06.28 수업 정리 (JSP / Java Server Pages)

by Hwanii_ 2023. 6. 28.
728x90

1.

JSP 문법 >> 에러 페이지 처리.

 

 

상단 페이지 지시어에 isErrorPage = "true" 를 명시해 준다.

 

( == 자바로 따지면, try-catch를 한 느낌 이다. )

 

 

<body> 태그 내부에 위의 이미지와 같이,

 

표현식 내부에 exception을 적으면 끝이다.

 

이것을 확인 하기 위해서, 일부러 에러 페이지를 만들어 보자.

 

 

상단 페이지 지시어에, errorPage = "Test03.jsp" 라고 적혀 있다.

 

Test03.jsp 는,  위의 isErrorPage = true 를 했던, 즉, 에러 페이지를 처리 하기 위한 페이지 이다.

 

말 그대로, 페이지에 에러가 발생 했어 ? 그러면 에러 페이지 처리 해주는 페이지로 가 ~

이런 뉘앙스 이다.

 

 

위의 이미지와 같이, 일부러 오류를 내보자.

 

str은 String 타입인데, int 타입으로 parsing을 시키는 상황 이다.

 

해당 에러 페이지를 열면, 다음과 같이 에러 원인을 명시해 준다.

 

 

2.

 

 

웹에서, 한글로 데이터를 전송하거나 하면, 인코딩 에러가 떠서 한글이 깨지는 현상이 발생.

 

위의 이미지 처럼, 저 문구를 추가 하면, 인코딩 에러를 해결할 수 있다.

 

3.

데이터 전송 방식 개념 복습.

 

데이터 전송을 위한 form 태그를 만드는 경우.

 

get 방식은 url에 값을 넣어서 보내기 때문에, 데이터를 많이 전송 하는게 힘들다.

 

데이터를 많이 전송 하고 싶으면, post 방식으로 데이터를 전송 한다.

 

4.

★★★★★★★★★★★★★★★★★★★★★★

<select> 태그와 <option> 태그는 한쌍을 이룬다.

즉, 부모와 자식 태그의 느낌 이다.

 

원하는 값을 전송하고 싶으면 option 태그 안에 value = "원하는값" 을 해서 데이터를 전송 한다.

 

5.

 

 

다음과 같은 form 태그가 있다.

 

form 태그 내부에는 사용자가 선택을 할 수 있도록, select 태그가 있고,

select 태그가 있기 때문에, 자식 태그인 option 태그도 있는것을 확인 할 수 있다.

 

 

이런 느낌이다.

 

select 태그는 선택을 할 수 있게 해주는 기능적인 태그 이고,

 

option 태그는 사과, 바나나, 키위의 옵션을 나타내는 것들 이다.

 

여기서 짚고 넘어가야 하는 개념은, 다음과 같다.

 

 

한글로 사과, 바나나, 키위는 정말 단순하게 한글에 불과 하다.

즉, 사용자에게 보여주는 글자에 불과 하다.

 

얘네를 눌렀을 때, 실제로 value (값) 이 들어가게 하기 위해서,

option 태그 내부에 value = "값" 을 해놓은 모습을 확인 할 수 있다.

 

input 태그는, 앞에서 공부했던 것 처럼,

submit (전송 / 제출) 을 사용자가 누르면, 데이터 (값) 이 전송 되게 되는데,

 

<input type = "text"> 가 아니라서, 즉, 사용자에게 텍스트로 입력 받는 상황이 아니고,

 

checkbox (== 콤보박스) 로 값을 입력 받는 상황이라,

지정해 놓은 value 가 없으면 원하는 값을 입력 받을 수가 없는 상황 이다.

 

실제로 value = "값" 이 없으면 어떻게 되는지 확인 해 보자.

 

 

현재는 이렇게 value = "영화" 식으로 값이 지정 되어 있는 상황 이다.

즉, checkbox를 사용자가 선택하고, submit을 누르면 각각의 value 들이 전송 되는 상황.

 

 

값을 없애 보자.

 

 

사용자가 체크박스를 선택 해서, 데이터 전송 (submit) 을 눌렀을 때,

 

 

 

on이 나오는 모습을 확인 할 수 있다.

 

지정해준 값이 없기에, 기본으로 on으로 나오는 모습.

 

 

드라마랑 애니메이션에 value 를 주고, 다시 해보자.

 

 

사용자가 체크박스 3개를 전부 선택했을 때,

 

 

위와 같이 뜨는 모습을 확인 할 수 있다.

 

 

 

위의 데이터 (값) 들을 submit 했을 때, post 방식으로, 

Test06.jsp 로 전송이 되게끔 해두었다.

 

 

 

 

 

 

getParameter("name")

:

이미지에서는, box라는 이름을 가진 속성값 내부에 value (값) 를 가져온다.

근데, select 태그 특성상, option 태그에 있는 것을 1개만 고를 수 있기에,

value를 1개만 가져올 수 있다.

그래서, getParameter() 으로 가져 온다.

 

getParameterValues("fav")

:

fav라는  이름을 가진 속성값 내부에 value (값) 를 가져온다.

근데, checkbox 속성 특성상 (다중 선택이 가능), 다수의 값을 가져올 수 있다.

즉, value를 여러개 가져올 수 있다. 

그래서 getParameterValues("fav") 처럼 표기 한것이고,

getParameterValues("fav") 얘는, output으로 String 타입의 배열을 던지네 ?

 

그래서, String[] datas = request.getParameterValues("fav");

 

이렇게 표현하고,

 

그 아래는 배열 for 문 돌리면서, 데이터를 출력 하는 것이다.

 

 

6.

 

 

가장 대표적인 2가지의 데이터 전송 방식이 있다.

 

(GET, POST 하고는 다른 개념 이다.)

(얘는 form 태그 내부에서 사용자가 submit을 했을 때, 데이터가 전송되는 방식을 의미.)

 

1)

데이터를 유지 해야 한다면 ?

forward 액션을 사용 !

 

forward 액션 태그를 활용하면, 처음에 요청했던 (전송했던) 데이터들이 유지 된다.

 

특징 :

 

URL이 변경되지 않는다. == 별도의 새 요청이 아니다. == 내부적으로 요청 처리를 한다.

 

즉, URL이 변경되지 않았다는 의미는 새 요청이 아니라는 말이다.

 

주소는 Test08.jsp 인데, Test10.jsp 의 결과 페이지의 코드가 있다.

 

 

 

2)

데이터를 유지 하지 않아도 된다면 ? (단발성)

response.sendRedirect() 사용 !

 

Redirect == 새로고침을 의미 한다.

(우리가 새로고침 하면, 데이터 다 날라 가잖아.)

 

처음에 전송한 (요청한) 데이터가 유지 되지 않는다.

URL도 변경 된다.

(Test09 주소가 아니라, Test10 주소로 뜬다.)

 

 

 

 

Test08.jsp

 

Test10.jsp

 

 

 

반응형