여름은 덥고 안개의 호흡은 시원하다

 

<% 자바 코드 %> : 스크립틀릿 : 안에 자바코드만 쓸 수 있다

결국 JSP는 뷰를 담당한다.

스크립틀릿(자바코드)는 서버에서 실행되고,

html ,css, js 는 클라이언트에서 실행된다.

JSP 구성요소

  • html 태그, css ,js 코드
  • JSP 기본태그
  • JSP 액셔태그
  • ( 개발자가 직접만들거나 framework에서 제공하는 custom 태그)

컨테이너의 JSP 변환과정

  1. 변환 단계 : JSP→.java파일로 변환
  2. 컴파일 단계 : .java → class파일로 변환
  3. 실행단계 : class파일 실행

디렉티브 태그

  • 페이지 디렉티브 태그 : JSP 페이지의 전반적인 정보 설정 <%@ page ~~%>
  • include 디렉티브 태그 : JSP페이지를 다른 JSP페이지에 추가할때
    • ex) 쇼핑페이지에서 상단 메뉴는 고정이고, 상품상세보기 페이지만 바뀔때 등 사용
    • ⇒ header를 공통으로 사용할때 header.jsp를 만들고, include시켜서 header사용
    1. directive : 소스를 가져와서 실행
    2. action tag : 실행하고 가져옴 , 파라미터 전달 가능, 동적처리 가능
    	<%//@ include file="header.jsp" %>                //directive
    	<jsp:include page="header.jsp"></jsp:include>     //action tag
    	//둘이 같은 코드임.
    
    대부분 directive를 쓰지만, 파라미터를 넘겨줄때는 action을 쓰는 경우가 있음
    //header.jsp
    <div>여기는 헤더</div>
    <%=request.getParameter("name")%>
    
    //main.jsp
    	<jsp:include page="header.jsp">
    		<jsp:param value="moonswings" name="name"/>
    	</jsp:include>
    
  • ex)
  • 태그라이브 디렉티브 태그 : 커스텀or 프레임워크에서 제공하는 태그

script + java code

<script>
<% int a = 1; %>
<% if(a==1){ %>
	alert('a는1');
<% }else { %>
	alert("호호");
<% } %>
</script>
//자바는 태그로 묶고, script는 그냥 script안에서 돌게

or

<%
	int a = 2;
	String v = a%2 == 1 ? "홀수" : "짝수";
%>
<script>
	alert('<%= v %>입니다.');
</script>
//이렇게 써도 댐

에러처리

webapp 밑에 err 폴더 생성

web.xml에 코드 추가

  <error-page>
	  <error-code>404</error-code>
	  <location>/err/err404.html</location>
  </error-page>
    <error-page>
	  <error-code>500</error-code>
	  <location>/err/err500.html</location>
  </error-page>

⇒ 오류페이지 대신 html파일이 나온다.

 

jsp포워드

//a.jsp
<%
	request.setAttribute("email", "hong@gmail.com");
	//response.sendRedirect("b.jsp");
%>
<jsp:forward page="b.jsp"></jsp:forward>

//b.jsp
<body>
<h1> b.jsp </h1>
	<%= request.getAttribute("email") %>
</body>

 

우선순위

같은 속성에서의 우선순위 (page가 먼저)

page > request > session > application

 

 

ID중복 여부

	public boolean overlappedID(String id) {
		boolean result = false;
		try {
			conn = dataFactory.getConnection();
			String query = "SELECT COUNT(*) AS cnt FROM USERS WHERE ID=?";
			pstmt = conn.prepareStatement(query);
			pstmt.setString(1, id);
			ResultSet rs = pstmt.executeQuery();
			rs.next();
			if(rs.getInt("cnt")==1) {
				result = true;
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally {

			try {pstmt.close();}catch(Exception e) {}
			try {conn.close();}catch(Exception e) {}
		}
		
		return result;
	}
hanjuCoding