# 저장하기
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파일을 실행하는 순서
--> 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 |