본문 바로가기
[2020]KIC 캠퍼스 복습/JAVA SCRIPT(5,6,7)

[수업 D-31 ] JSP) 지시어, 내장객체

by 두블두블 2020. 8. 25.

2020.08.25(화) 7주차 2일

 

 

Redirect, forwarding

JSP의 라이프사이클
지시어>_java>_class>_init > _service>_destroy

1. 방명록 

Bang.html

pack3>BangServlet.java //오늘 한 부분 뭔가 이상

pack3>BangList.java

*카페 JSP Servlet 요청 관련 어노테이션

물리적 이름이 여러가지 일 수 있다.

어노테이션을 사용하지 않고 web.xml에 등록하는 경우(우선순위는 제일 높음)

(중요)

리다크? 방식 : 클라이언트의 요청이 web.xml을 통하지 않고, @webservlet(/요청변수)로

스프링은 포워딩방식 서버에 파일을 부름

* 통계 : P-value : 신뢰도?

 

BangServlet.java

자료를 입력하고 response.sendRedirect("MyBang/Bang.html"); 클라이언트를 통해(타고) 요청한다. (스프링방식)

클라이언트에서 명령을 요청한다.


2. JSP => ASP(.net)를 모방했기 때문에 

web_pro4>webcontent> jspsijak.jsp

web구성 : php > asp >jsp >python : 플라스크(라이브러리가 딸림)-장고

책 304페이지 313 319 326 330 332 359 360 386 415 (챕터별 훑기)==> 마이바티스, 쇼핑몰 샘플 , 끝.

JSP는 자바를 전부 숨기고 HTML을 정면에 내세움, 서비스 매소드로 뒤덮고 있다. =

클래스에 서비스 매소드를 오버라이드해서 모든 것이 지역변수가 된다.

1) 페이지 지시어 <%@ page %>

  (1) JSP가 서버로 넘어온 순간 servlet이 된다. HTML만 클라이언트 브라우저한테 준다.

* https서버는 자바 출력이 안 됨, 아파치톰캣서버는 됨(웹 어플리케이션)

   9개 중 5개 외우면 된다

  (2) 톰캣은 스크립트릿(<% %>) 내의 코드는 자바로 인정

 

2) exression <%= %>

* JSP의 난독을 해결하기위해서 빈즈, EL 등을 활용한다.

 

3) 전역변수 <%! %>

해당 클래스의 멤버필드로 선언


3.  페이지 지시어 이해 

web_pro4>webcontent> jspsijak2.jsp

web_pro4>webcontent> myerr.jsp

  카페 : error 목록 표시 파일 web.xml에 등록하기

web_pro4>...> web.xml

 

 

1) 일반적으로 지시어는 문서의 상단에 기술한다. 지시어 전에는 어떤 내용도 적지 않는다.

2) <생략가능> = 기본값

language="java" , session='true', buffer="8kb" autoFlush="true" isThreadSafe="true"

3) 에러와 관련된 내용

(1)실행도중에 오류 : <%= 10/2 %>는 되는데 <%= 10/0 %>은 바로 505오류가 걸림, 0의 인수가 들어올수있는 상황

(2) 그래서 페이지 지시어 에 오류페이지를 부른다(포워드!). "errorPage="myerr.jsp" "

myerr.jsp의 페이지 지시어에는 isErrorPage="true" 를 입력한다.

(3) http://localhost:8080/web_pro4/jspsijak2.jsp 포워딩, 서버가 서버를 바로 부른 것

(4) web.xml :


4. 인크루드 지시어

web_pro4>webcontent> jspsijak3.jsp

web_pro4>webcontent> top.jsp

web_pro4>webcontent> bottom.jsp

web_pro4>webcontent> tag1.jsp

web_pro4>webcontent> tag2.jsp

 

사이트 하단 공지사항 등 항상 있었으면 하는 것 => 별도의 파일로 만들고 불러쓰면 된다.

1) top, bottom을 만듬, <%@ include 로 삽입함

2) <jsp: 의 태그들 중 include 액션태그, page에 tag1, tag2을 삽입합

(1) <jsp:param value="korea" name = "msg"/>로 값을 부여

(2) tag2에서 내장객체 request로 jspsijak3의 value와 msg를 받아옴


5. 내장객체 9개 : 회원가입

web_pro4>webcontent> jspsijak3.jsp

web_pro4>webcontent> tag2.jsp

카페 JSP&Servlet : RequestDispatcher & sendRedirect 방식

request, response, out, session, application, pageContext, page, config, exception

 

 


6. redirect, forward test

web_pro4>webcontent> jsp1call.html

kr.co.pack> jsp1servlet.java

jspcalled.jsp

jsp2call.html

kr.co.pack> jsp1servlet.java

jsp2called.jsp

jsp2called2.jsp

URL 의 변화를 잘 봐야 한다. 

서버에서 서버를 부르면 안바뀜 포워딩

response.sendRedirect("jspcalled.jsp?data=" + data);

6. (1) Redirect의 URL.

"HTML <== SERVLET <==called.JSP(주소)"

1. redirect : String외에 못넘김, jsp 문서에서만 유효

서블릿이


 

6. (2) Forward의 URL.

"HTML <== SERVLET(주소)"

2. 포워딩 : dispatcher.forward(request, response); 서버에서 서버를 부른다.

(session처럼 그 클라이언트가 접근하는 모든 jsp에서 모두 공유 가능 )

키밸류 test를 부여, 콘테이너 기능을 통해 jsp파일에 request해서 보냄

완전한 public. 각각의 클라이언트들이 접근가능함/

현재 문서에서만 유효한 키밸류test, data(String 을 포함한 모든 종류의 데이터 : 컬렉션 등)를 request를 통해 뿌린다.

 

//response.sendRedirect("jsp2called2.jsp?data=" + msg); 죽여줘야함

 

<a href=WEB-INF/kbs.jsp> KBS.JSP 호출</a>

web_pro4>webcontent> WEB-INF > kbs.jsp


7. Session (로그인과 쇼핑몰에서 빛남 )

web_pro4>webcontent>session_test.html

web_pro4>session1.jsp

web_pro4>session2.jsp

<form action = "session1.jsp" method = "post">
id : <input type ="text" name = "id">
<input type ="submit" name = "Login">

session.setAttribute("idKey", id);
session.setMaxInactiveInterval(100);
....
<form action= "session2.jsp" method="post">

String dra = request.getParameter("dra");
String myId = (String)session.getAttribute("idKey");
if(myId != null){
%>
ID : <%= myId%> 고객님이 선택한 드라마는 <%="<h2>["+ dra + "]</h2>"%><br>
세션 아이디 : <%= session.getId()%><br>
세션 유효시간 : <%= session.getMaxInactiveInterval() + "초"%><br>


※ 오늘 배우고 느낀 것 

 

1. 

 

2.

 

3.