course 2021/JSP

JSP04 - 03module

코딩하는토끼 2021. 11. 17. 03:14

모듈은 파일을 여러개 동시에 선택, 모아서 사용

.jspf 파일

그리고 include : <%@ include file ="포함할 파일 경로" %> 

 

계속해서 sub 이 main 에 삽입되는 형식

그리고 sub 파일은 코드가 위의 <%@ %> 이런 것들이 있기는 한데 아마 자동 템플릿을 설정해둬서 그런것 같다

(아닐수도..필요한거일수도) 근데 없어도 잘만 실행된다 그냥 삽입할 내용 그뿐이면 됨

01

sub 콘텐트는 include directive 로 <%@ include file ="포함할 파일 절대경로" %> 이렇게 삽입한다

01include-directive-sub 이 01include-directive-main 으로 삽입됨

02

마찬가지. 02sub 이 02page1, 02page2 에 삽입됨. 볼 것 없음.

03include-action

액션태그 standard action tag 표준 액션 태그

예) jsp:include, jsp:forward, jsp:param, jsp:body

그 중 include 액션태그

<jsp:include page="절대경로"></jsp:include>

경로는 "/(해당 파일이 위치한 폴더명)/(파일명.jsp)" 로 작성되었음

이 태그 위치에 그대로 삽입됨

*주제와 무관하지만, head 부분에 icon을 넣기 위한 링크가 걸려있는데 (여기서 아이콘 사용이 없으므로 주석처리해도 동일하게 작동됨)

그래도 설명해보자면, 일단 코드는 다음과 같다

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">

전에 html 에서 사용하던 것과 별다를 것이 없지만, href 를 보면, 일단 <%= request.getContextPath() %> 가 쓰였다 

바로 전 폴더에서 경로를 쓸 때 사용한다고 했었다

그 이후는 경로인데, 우리는 이클립스에서 webcontent 안에 resource>css>icon>css 폴더를 만들고 그 안에 all.css 파일을 넣어두었다

04

마찬가지

05

마찬가지

* 주제와 무관하지만, <%= request.getParameter("name") %> 가 있는데 입력하도록 하는 코드가 없기 때문에 null 로 출력된다

하지만 쿼리스트링에 (주소창에) 직접 ?name=somehting 입력해주면 페이지에 값이 표시됨

06

이번엔 <jsp:param /> (빈요소_시작태그만 존재)

검색결과↓

<jsp:include> 혹은 <jsp:forward> 요소 안에서 (자식요소로) 사용됨 (단독 불가) 

데이터 전달 목적으로 사용됨

name 과 value 로 이루어져있음

이에 대해서는 아래 07에서 더 이해하기 쉽다

이건뭐지

07

main 파일 코드
<jsp:include page="07request-param-ex-sub.jsp">
	<jsp:param value="apple" name="food"/>
	<jsp:param value="bts" name="group"/>
	<jsp:param value="butter" name="song" />
</jsp:include>
sub 파일 코드
city : <%= request.getParameter("city") %> <br>
food : <%= request.getParameter("food") %> <br>
group : <%= request.getParameter("group") %> <br>

<jsp:include> </jsp:include> 안에 <jsp:param value="" name=""/> 태그가 있다

이 태그는 include 가 지정한 파일에 있는 같은 name 에 value 값을 전달하는 역할을 한다

즉, food=apple, group=bts, song=butter 가 되는 것

sub 파일은 이 값을 전달받았기 때문에 request.gerParameter 을 작성하면 페이지에 전달받은 값이 표시된다

하지만 주소창에 쿼리스트링으로 표시되지는 않음!!

* 07번부터 include 태그에서 경로 전달할 때 그냥 파일명만 작성

*include 태그에서 file 을 써도되고 page 를 써도 되나보다? (02page 내용?)

08

main 파일, main1 파일, sub 파일이 있는데, 

main에서는 sub파일로 menu1,2,3 을 각각 link1,2,3으로 전달

main1에서는 sub파일로 menu1,2,3을 각각 city1,2,3으로 전달

→ 이 경우, main 을 실행하면 link 로 출력, main1 을 실행하면 city 로 출력된다

09

param 으로 값을 받아서 더하기 연산을 해보자

그런데 getParameter 로 받았다 

getParameter 는 문자열로 받는다 그런데 이때 형변환 없이 더하면 문자열이 더해진다 5+6=56

따라서 형변환을 해서 더해야한다 5+6=11

형변환: int a = Integer.parseInt(request.getParaneter("num")); → 그니까 Integer.parseInt() 라는 소리

여기서 왜 이렇게 (<%= %> 없이) 썼나면 이 코드 전체가 지금 <% %> 안에 있음 자바코드임

10

param 으로 전달한건 person=trump 뿐이어서 초기 화면에서 trump 만 출력, 나머지는 null

대신 위에 입력 창을 만들었다 (input text) 따라서 입력하는대로 출력됨

(초기값을 value 로 적어두어서 입력창에 처음부터 써있음. 또한 post 방식으로 작성하여서 쿼리스트링으로 표시되지 않음)