본문 바로가기

JSP

JSP페이지의 구성요소 / JSP기본태그

# 저장하기
Tomcat/webapps/프로젝트명/WEB-INF/web.xml
Tomcat/webapps/프로젝트명/xxx.jsp

# 실행하기
http://localhost:8080/프로젝트명/xxx.jsp

# 한글처리 - jsp는 아래가 가장 기본임!!!아래와같이 jsp만든뒤 그냥 톰캣으로 호출해볼것!
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
가나다




# JSP 페이지의 구성요소 
-디렉티브(지시문)
-스크립트 : 스크립트릿, 표현식, 선언부
-표현언어EL
-기본객체(내장객체)
-정적인데이터
-표준액션태그
-커스텀태그 와 표준태그라이브러리 (JSTL)

1.디렉티브(지시문)
    -    디렉티브이름 : page, taglib, include
 <%@ 디렉티브이름 속성1="값1" ... %>

2.스크립트
    -    표현식( 값출력 )   
<%= %>        

    -    스크립트릿( 자바코드실행 )
<% %>

    -    선언부( 자바 메서드생성 )
<%! %>

3.표현언어EL
     :  간단한걸 자바로 구현시 내용이 길어짐
        그래서 JSP페이지 내부에서 사용되는 간단한 스크립트언어가 EL
        jsp 2.0버전부터 추가된것으로 스크립트릿과 표현식대신에 쉽고간단히 사용가능

4.기본객체 9개( jsp 내장객체 )

5.표준액션태그
    -    XML의 태그와 같은모양 
<jsp:액션태그명 속성=값 ... ></jsp:액션태그명>

6.커스텀태그
    -    액션태그와 비슷하지만 개발자가 직접 개발해주어야함
    -    JSP를 확장시켜주는 기능

7.표준태그라이브러리( JSTL )
    -    커스텀태그중 자주사용되는것들을 별도로 표준화한 태그라이브러리가있는데
         이게바로 JSTL( JavaServer Pages Standard Tag Library )임
    -    조건문,반복문등도 처리가능( 자바에익숙치않아도사용가능 )
     





# jsp 6가지 기본태그 ( 겹쳐서(jsp태그안에 jsp태그) 사용불가! )
1. 지시자(디렉티브)           <%@           %>                  
2. scriptlet                 <%              %>
3. 표현식                     <%=             %>
4. 선언문                     <%!              %>
5. 주석문                     <%--         --%>
6. 액션태그                   <jsp:액션태그명 속성=값 .....></jsp:액션태그명>

    -    자바문법을 그대로 사용가능!    
    -    jsp주석문은 톰캣이 해석함
    -    script주석( // /* */ )이나 htm주석 ( <!--  -->  ) 은 톰캣이해석하지않고 html로 주석까지 뿌려줌
    -    jsp파일안에 톰캣이 % %안을 해석하고 html로 바꿔줌 이걸 웹브라우저가 번역해서보여줌
          jsp -> 톰캣이해석해서 html로뿌려줌 -> 웹브라우저가 해석해서보여줌
    -    스크립트릿을 메인메서드안이라생각하고 , 표현식을 System.out.println( 여기 ) 라고생각할것

4.선언문
a.jsp
========
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="kr.co.joo.member.to.Member" %>
<%@ page import="java.io.*" %>

<jsp:useBean id="member" class="kr.co.joo.member.to.Member" scope="request" />
<jsp:setProperty name="member" property="id" value="aa" />
<%!
      public void A(HttpServletRequest request, HttpServletResponse response)
                                                       throws ServletException, IOException{
            request.getRequestDispatcher("b.jsp").forward(request, response);
     }
%>
<%
      A(request,response);
%>

b.jsp
=======
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="kr.co.joo.member.to.Member" %>

<jsp:useBean id="member" class="kr.co.joo.member.to.Member" scope="request" />
<jsp:getProperty name="member" property="id" />


-    A이라는메서드를 내가 임의로 선언문안에만듬... 거기서 request와 response를 이용하려고 매개변수쪽에
추가해줌... 그래야 A메서드안에서 사용가능
그리고 <%%>에서 그메서드를 호출을해줌...
-    사실 이파일은 jsp에서 서블릿(a_jsp.java)으로 전환되는데 다른건 _jspServices메서드안에다들어가는데 선언문은
a_jsp파일의 멤버함수로 등록된다!



[ex]선언부예제 - p.85 
<%!    %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%!
      void a(JspWriter out)throws Exception{
                  out.println("aaa");
         }
%>

<html>
     <body>
        <%
              a(out);      // out객체를 던저줌... 왜냐하면 out은 서비스메서드의 지역변수라서
        %>                 // 선언부에서 out객체를 인식하지못함 ( 서비스메서드에서 out객체생성하기때문 )
     </body>
</html>


a()메서드가 던진 Exception은 서비스메서드가 처리함










# <% %> 안은 메인메서드안이라생각하고
    <%= %> 는 System.our.println(  여기 ) 라고생각할것
[ex] 
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%
     String id="aaa";
     int pw=111;

     out.println("아이디 : "+id);
%>

<%="아이디 : "+id+"<br>"%>
<br>
비번   : <%=pw%>





# 주석문
jsp주석문은 톰캣이 해석해서 처리함



# 내장객체 api




# jsp파일을 실행하는 순서

          내가 http://192.168.1.20:8080/pro1/t1.jsp?id=111&pw=222 을 요청하면
                      --> t1_jsp.java  -->  t1_jsp.class  -->  메모리에 로딩 -->  html문서    -->   나에게 다시전달
-    D:\Tomcat 7.0\work\Catalina\localhost\p1\org\apache\jsp 에 .java와 .class파일있음
-    컴파일은 톰캣이 설치되어있는 서버컴에서 실행됨( 즉, 클라이언트는 톰캣이 필요없음! 단지
 html문서를 읽을수있으면됨 )
-    _jspService를 호출함
-     D:\Tomcat 7.0\work\Catalina\localhost\p1\org\apache\jsp\~~.java 안에 _jspService메서드
-    .java파일보면     <%="aaa"%>   =>   out.print("aaa")  로 바뀜

          만약 이걸 다시 다른사람이 실행하면 http://192.168.1.20:8080/pro1/t1.jsp?id=333&pw=444
                       -->  메모리에 로딩  -->  html문서  -->  다른사람에게 다시 전달
-    컴파일단계는 최초 요청단계에서만 실행됨
-    하지만 새로 호출하더라도 _jspService는호출함












'JSP' 카테고리의 다른 글

캐쉬삭제법( 삭제라기보단 캐쉬저장 안하는법 )  (0) 2019.03.08
JSP한글전송(인코딩, 디코딩)  (0) 2019.03.08
서블릿의 get, post방식  (0) 2019.03.08
JSP기본객체와 영역  (0) 2019.03.08
JSP 내장객체 9개  (0) 2019.03.07