toggle menu

JSP 정리 - Java Server Page

2012.08.13 09:17 JAVA/JSP

JSP는 서버측에서 실행. 

<% 여기에 JSP 문법이 들어감 %>

Apache Tomcat이 웹서버와 WAS의 역할을 동시에 감당..한다고하네..
WAS는 BEA의 웹로직, IBM의 웹스피어, Tmax의 Jeus, 아파치의 톰캣 등.

톰캣은 http://tomcat.apache.org 에서 받을 수 있다.


Applet - Sevelet - JSP 의 순서로 등장.
JSP는 HTML 부분과 JAVA 관련 부분을 태그를 활용해 분리해 볼 수 있도록.. 협업이 편해지겠네
JSP로 만든 문서는 서블릿 문서(.class)로 변환됨. 보안이 뛰어남.



이클립스는 톰캣 서버와 별개로 자신만의 가상 서버로 작업하게 된다.
따라서 이클립스로 작업할 때는 실제 톰캣은 중지한 상태에서 해야한다.

C:\Program Files\Java\jdk1.7.0_05\jre\lib\ext 와 C:\Program Files\Java\jre7\lib\ext 의 경로에 servlet-api, jsp-api 두 개의 파일을 복사해 붙여넣는다.
그 외에도 여러군데에 붙여넣네.. el.jar 파일도.. 



<% 여기는 JSP 영역이고 여기서 선언되는 변수는 지역변수다. 따라서 반드시 초기화가 필요하다. %>

선언문 
<%! 여기는 메소드 전역 변수 등을 선언하는 선언문이다 %>

<%=이거는 프린트로 출력된다. 변수를 출력할 때%>

<%@ 페이지 지시어. 문서 전체에 적용되어야할 내용.. 인코딩셋.. 한글을 지원하려면 이 부분이 필요. %>





페이지 지시어

import " 여러개의 ., , , , "

Exception을 쓰려면 isErrorPage 가 true로 되어 있어야 한다.





** 인클루드 두가지 형태
<%@ include file =" URL" %>
은 소스 자체가 가져와짐 따라서 java 파일도 하나만 만들어짐!

<jsp:include page="URL">

</jsp:include> 

액션태그에 있는 인클루드는 따로 컴파일되서 결과를 가져오게 됨. 




** request -> HttpServletRequest

Form으로 입력받은 값들을 
request.getParameter("korea") 으로 받아온다?

한글이 깨질 수 있는데, 결과값이 출력되는 위치가 호출한 곳이기 때문에(?)

호출파일에서 request.setCharacterEncoding("UTF-8"); 를 실행해주어야한다.
그러나 이것은 post 방식에서만 가능하고 get 방식에서는 불가능하다.





** forward 액션태그
<jsp:forward page=" URL " />

히스토리를 증가하지 않고 그냥 페이지의 내용을 완전히 새롭게 쓰는 방식.
따라서 request, response 등이 지속적으로 가능.


JSP 들어서는 왜이렇게 정리를 제대로 못하냐..ㅠㅠ



sendRedirect는 forward와는 달리 페이지를 이동하긴하는데 히스토리가 남으므로 request, response 등이 불가.

setHeader 는 뭐 다운로드 등을 위해 헤더를 설정해야할 경우..
잘 아다시피 보통은 text/html 등으로 헤더가 나가는데 그걸 데이터 등으로 바꾸어주면 다운로드 모드로 변하는거임!


동적 페이지 요소와 정적 페이지 요소가 있다면, 처리되는 것은 동적페이지 요소가 먼저이다.
따라서 response.sendRedirect 와 같은 요소가 HTML 페이지 출력보다 먼저 진행된다.



** session -> HttpSession

세션에 값을 지정할 때
session.setAttribute("이름", "값");
이름은 String
값은 Object

값을 가져올 때
session.getAttribute("이름")
이름은 String
리턴값은 Object

세션 ID : session.getId()

세션 유지 시간 설정
session.setMaxInactiveInterval(10) //10초간 

세션 유지 시간
session.getMaxInactiveInterval()

세션 시작(생성) 시각
session.getCreationTime()
-> new Date(session.getCreationTime()).toLocaleString() 

세션이 현재 처음 생성되었는지 여부!
seesion.isNew()





** application -> ServletContext 

특정 정보를 서버가 시작해서 종료될 때까지 유지되도록 함.

application.setAttribute 정보 저장..

application.getRealPath ...


어플리케이션은 서버가 죽지 않는 이상 항상 값이 존재한다.
클라이언트들이 모두 공유한다. 

 

** 로그아웃 했는데, 뒤로가기에서 접근 가능한 것을 막기 위해 캐시를 제거하는 방법

  response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);


 이렇게 하면 아마도 모든 브라우저에서 되는듯.

 

JAVA/JSP 관련 포스팅 더보기