[웹 시스템 개발]중간고사 시험 정리
류명운
·2015. 10. 14. 00:02
CHAPTER1. 웹 프로그래밍의 기본 개요
1. HTML만으로는 데이터가 실시간으로 변화하는 것을 처리하거나 저장할 수 없음
-> CGI, ASP, PHP, JSP (동적으로 변화하는 데이터를 처리하고 표시하기 위해서 개발됨)
2. 웹 프로그래밍은 기본적으로 [클라이언트(Client)] / [서버(Server)] 방식
3. CGI 처리 방식(CGI)
: 웹 서버와 프로그램 사이에서 정보를 주고 받는 규칙을 뜻함
: 하나의 요청에 대해 1개의 프로세스가 생성되어 그 요청을 처리한 뒤 종료
: 서버의 자원을 과도하게 사용하기 떄문에 UNIX 플랫폼 이외에는 거의 사용x
4. 웹 애플리케이션 서버 방식(ASP, PHP, JSP)
: 동일한 페이지를 여러 사용자가 요청하면 1개의 프로세스만을 할당하고 각 사용자의 요청을 쓰레드(Thread) 방식으로 처리
: 동시에 여러 웹 브라우저가 동일한 프로그램을 요청하더라도 한 개의 메모리만 사용하기 때문에 CGI 방식보다 전체적으로 메모리 사용량이 적음
5. 웹 애플리케이션의 구조 및 처리 순서
웹 브라우저 -(요청①)> 웹 서버 -②> 웹 애플리케이션 서버 -③> 데이터베이스 -③> 웹 애플리케이션 서버 -④> 웹 애플리케이션 서버 -(응답⑤)> 웹브라우저 |
① 웹 브라우저가 웹 서버에 어떠한 페이지를 요청
② 해당 웹 브라우저의 요청을 받아서 요청된 페이지로 로직 및 데이터베이스와의 연동을 위해 웹 애플리케이션 서버에 이들의 처리를 요청
③ 웹 애플리케이션 서버는 데이터 베이스와의 연동이 필요한 경우 수행
④ 로직 및 데이터 베이스 작업 처리 결과를 웹 서버에 전송
⑤ 웹 브라우저에 결과를 응답
6. 웹 애플리케이션의 구성 요소(각 요소 및 내용 설명할 수 있도록)
1) 웹 브라우저 - 클라이언트이며, 사용자의 작업 창
2) 웹 서버 - 웹 브라우저의 요청을 받아들이는 곳
3) 웹 애플리케이션 서버(WAS) - 요청된 페이지의 로직 및 데이터 베이스와의 연동을 처리하는 부분
4) 데이터베이스 - 데이터의 저장소
7. 실행코드와 스크립트 코드 차이점
|
실행코드 |
스크립트 코드 |
코드형태 |
컴파일된 실행 프로그램 |
컴파일되지 않은 스크립트 코드 |
실행방식 |
컴파일된 기계어 코드 직접 실행 |
스크립트 코드를 해석한 뒤 실행 |
코드변경 |
소스코드를 다시 컴파일 해야 함 |
스크립트 코드만 고치면 됨 |
종류 |
서블릿, 대부분의 CGI 프로그램 |
JSP, ASP, PHP |
8. 실행코드와 스크립트 코드 실행방식의 차이
실행 코드: ①웹 브라우저 요청 전송->②웹 서버 요청 받음->③프로그램 실행
스크립트 코드: ①웹 브라우저 요청 전송->②웹 서버 요청 받음->③스크립트 코드 번역->④번역된 코드실행
9. ASP(Active Server Page)
: 마이크로소프트(Microsoft)사에서 개발
: ActiveX라는 제공된 컴포넌트를 사용할 수도 있으며, 이것을 직접 개발하기 위한 기능도 제공
: 특정 플랫폼과 특정 웹 서버에서만 동작(윈도우즈 플랫폼에서 IIS만을 사용)
10. PHP(Personal HomePage tools, Professional Hypertext Preprocessor)
: 어떤 플랫폼에서든지 동작
: C언어 문법과 유사하기 떄문에 쉬운 장점
: 적은 명령어 만으로도 프로그래밍이 가능하기 때문에 편리
: 단, 컴포넌트를 지원하지 않으며 보안이 취약해 해킹의 대상(->소규모 웹사이트에서만 사용)
11. JSP(Java Server Pages)
: Java 기반의 스크립트 언어(자바의 기능을 그대로 사용 가능)
: HTML, XML 등 웹 서비스와 관련된 문서를 생성
: 서블릿 / EJB 등 엔터프라이즈 기술과 잘 융합 됨
: 표현언어, 표현식, 스크립트 등을 이용해 쉽게 개발 가능
12. JSP 특징 6가지(객체 플랫폼 친구 멀리 뛰 네)
1) 객체 지향적
2) 플랫폼 독립적
3) 네트워크 지향적
4) 뛰어난 보안성
5) 멀티 쓰레드 기능
6) 친근한 코드
13. Servlet(Server+Applet)과 JSP(Java Server Pages)
1) 서블릿(Servlet)
: 오라클에서 발표한 기술로 Java기반으로 하는 동적 웹 페이지를 작성할 수 있도록 제공
: Java 코드에 의존적(JAVA 코드에 html 이 포함됨)
: Sevlet은 실행 코드 방식에 속함(따라서 서블릿을 이용하여 개발하면 코드 수정시 컴파일 필요)
2) JSP
: Java 언어 기반이지만 서블릿보다는 비교적 덜 의존적(html 에 JAVA 코드가 포함됨)
: JSP 표준은 서블릿 표준을 기반으로 만들어짐
: 페이지 요청이 있을 시 최초 한번 자바코드로 변환 후 서블릿 클래스로 컴파일 됨
->JSP파일을 웹 서버에 올려 놓으면 컴파일됨
->결론적으로, JSP는 실행 시 서블릿으로 변환
14. JSP를 사용하는 이유?
1) 플랫폼에 독립적
2) Java 언어에 대한 깊은 이해도 없이도 초기 학습가능(스크립트 언어는 상대적으로 Java언어보다 단순)
3) 스프링(Spring)이나 스트러츠(Struts)와 같은 프레임워크와 연동가능
15. JSP를 구성하는 기술
1) 컨테이너가 관리하는 컴포넌트 그룹
2) 서비스 API 그룹
16. 컨테이너(Container)
: 컴포넌트들이 제공하는 각종서비스를 관리하는 실행 환경 제공
17. 웹 컨테이너(Web Container)
: 웹 애플리케이션을 실행 할 수 있는 컨테이너
: 서블릿과 JSP에 대한 실행 환경을 제공
: EJB 컨테이너는 Enterprise JavaBean에 대한 실행환경 제공
: 대표적인 웹 컨테이너-톰캣,제티
18. 서비스 API(뭐가 있는지 3개정도만 알고있자)
: JDBC, XML, JavaMail, MTA, JMS, MNDI
19. JSP 페이지 구조(정적 페이지+동적 페이지=JSP)
1) 정적 페이지: 서버 안에 이미 만들어져 있는 HTML 문서 페이지(HTML태그 사용)
2) 동적 페이지: 사용자에 따라 서버로 다른 응답 값을 받는 경우(<% %> 등 스크립트 사용)
CHAPTER2. JSP 환경 설정
20. 구성 프로그램
1) JDK - jdk 1.7 version
2) 웹 컨테이너 - 톰캣 7 version
3) 개발 툴 - Eclipse luna
21. JDK(Java Development Kit)
: Java 기반에서 작성되는 Java 프로그래밍 및 JSP 페이지를 실행할 수 있는 개발 환경 도구
CHAPTER3. JSP 기본 문법(1)
22. JSP페이지의 구성요소는 디렉티브와 스크립트 등으로 구성
23. JSP 페이지 디렉티브(directive:지침,지시)
: JSP 페이지에 대한 설정 정보를 지정할 때 주로 사용
: 필요한 정보를 JSP 컨테이너에게 알려서 어떻게 처리되도록 하는 지시자
: 디렉티브는 태그 안에서 @로 시작
24. JSP 페이지 디렉티브 태그 종류: page, include, taglib
25. Page 디렉티브 <@page>
: 서버에 요청한 결과를 응답 받을 때 생성되는 페이지 타입, 스크립트 언어, import할 클래스, 세션 및 버퍼의 사용 여부 및 버퍼의 크기 등의 JSP페이지에서 필요한 설정 정보 지정
: <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
info 속성 |
페이지를 설명하는 문자열 |
language |
스크립트 요소에서 사용할 언어 지정, "java" |
contentType |
생성할 문서의 타입을 지정, "text/html" |
buffer |
출력 버퍼의 크기 지정, "none" 가능, 생략 시 "8kb" |
autoFlush |
출력 버퍼가 다 찰 경우 처리방법을 지정, 생략 시 "true" 기본 값 |
Import |
다른 패키지에 있는 클래스를 가져다 쓸 때 |
Session |
HttpSession 사용 여부, 생략 시 "true" 기본 값 |
pageEncoding |
문자의 인코딩 지정 |
26. include 디렉티브 <@include>
: 공통적으로 포함될 내용을 가진 파일을 해당 JSP내에 삽입
: <%@ include file ="url" %>
: 복사 & 붙여 넣기 방식으로 두 개의 파일이 하나의 파일로 합쳐진 후 하나의 파일로서 변환되고 컴파일
27. taglib 디렉티브 <@taglib>
: JSP 페이지에 사용할 태그 라이브러리를 지정하는 것
: <%@ taglib prefix="c" uri="http://myeonguni.tistory.com" %>
prefix: uri 대신 사용되는 네임스페이스
uri: 태그의 설정 정보
28. JSP 페이지의 스크립트 요소 3가지
1) 선언문 : 전역 변수 선언 및 메소드 선언 <%! %>
2) 스크립트릿 : 프로그래밍 코드 기술 <% %>
3) 표현식 : 화면에 출력할 내용 기술 <%=변수명 %>
29. 조건 분기문 - if / 반복문 - for, while
29. JSP 페이지의 주석 스크립트
1) HTML 주석 : <!-- -->
2) JSP 주석 : <%-- --%>
3) JAVA 주석 : //, /* */
CHAPTER3(2). JSP 기본 문법(2)
30. GET과 POST 방식 전송
: 웹 브라우저와 서버간에 정보를 주고 받을 때 사용하는 방식으로 [GET]과 [POST] 두 가지 방식으로 나눔
31. GET 방식
: 서버에 있는 정보를 클라이언트로 가져오기 위한 방법
: 서버는 최대 240Byte까지 데이터 전달할 수 있음
: (단점)URL에 노출되기 때문에 보안에 문제가 생기며 보낼 수 있는 크기가 한정
* GET 전송 방식 1) 브라우저 주소 표시줄에 주소를 직접 입력해서 요청을 전송하는 경우 - http://www.x.co.kr/list.jsp?page=2&id=ryu 2) HTML의 <a> 태그를 사용해서 전송하는 경우 - <a href="list.jsp?page=2&id=ryu"></a> 3) HTML의 폼 태그에서 method 속성을 GET으로 지정하는 경우 - <form action="" name="" method="GET"> |
32. POST 방식
: 클라이언트에서 서버로 정보를 올리기 위한 방법
: 특정 페이지를 요청하는 것이 아니라 특정 페이지로 많은 양의 파라미터를 전송하여 파라미터에 관한 처리를 할 때 POST 방식으로 요청
: URL에는 매개변수가 표시되지 않기 때문에 보안 문제가 없으며 서버에 전달할 수 있는 데이터 크기에는 제한이 없음
* POST 전송 방식 : HTML의 폼 태그에서 method 속성을 POST로 지정 - <form action="" name="" method="POST"> |
33. GET / POST 전송 값 받아오기
: <%=request.getParameter("name속성명") %>
34. GET/ POST 전송에서 한글 깨짐 발생
: 웹 브라우저는 웹 서버에 파라미터를 전송할 때 알맞은 캐릭터 셋을 이용해서 파라미터 값을 인코딩 함
: 반대로, 웹 서버는 알맞은 캐릭터 셋을 이용해서 웹 브라우저가 전송한 파라미터 데이터를 디코딩 함
-> 따라서, 웹브라우저(캐릭터 셋)[인코딩] = 웹서버(캐릭터 셋)[디코딩]을 맞춰줘야 함
35. 파라미터 값의 인코딩 / 디코딩 처리
1) POST
- 인코딩 : 적용한 캐릭터 셋에 따라 파라미터 값을 인코딩 함
- 디코딩 : request.setCharacterEncoding("euc-kr"); 코드를 사용해서 파라미터 값을 디코딩 함
2) GET
- 인코딩 : <a>태그 방식과 <form>방식은 적용한 캐릭터 셋을 따르지만, 직접 URL입력은 웹 브라우저마다 다르다
- 디코딩 : request.setCharacterEncoding("euc-kr"); 코드를 사용해서 파라미터 값을 디코딩 함
36. 톰캣 GET 방식 파라미터를 위한 인코딩 처리하기
: GET 방식으로 전달된 파라미터 값을 읽어올 때 기본 캐릭터 셋 값을 설정
: Server.xml 파일을 수정해야 함
1) Server.xml파일에서 <Connector>의 useBodyEncodingForURI 속성의 값을 true로 지정
-> request.setCharacterEncoding("")에 지정한 캐릭터 셋이 적용
2) Server.xml파일에서 <Connector>의 URIEncoding 속성의 값을 원하는 캐릭터 셋으로 지정
-> request.setCharacterEncoding("")에 지정한 캐릭터 셋은 무시
37. 문자열 비교: .equals("")
38. int형으로 형변환: int num = Integer.parseInt(request.getParameter("num"));
CHAPTER4. JSP 내장 객체(1)
39. JSP 내장 객체(Implicit Object)
: 웹 프로그래밍을 하는 데 필요한 기본적인 기능을 제공
: 내장 객체란 JSP내에서 선언하지 않고 사용할 수 있는 객체라는 의미
40. JSP 내장 객체의 종류
- request : 웹 브라우저의 요청 정보를 저장
- respone : 웹 브라우저의 요청에 대한 응답 정보를 저장
- out : JSP페이지가 생성하는 결과를 출력하는 기능
- pageContext : 주로 다른 내장 객체를 구하거나 페이지의 흐름제어 그리고 에러데이터를 얻어낼 때 사용
- session : HTTP 세션정보를 저장
- application : 웹 애플리케이션에 대한 정보를 저장
- page : JSP 페이지를 구현한 자바 클래스
- config : JSP 페이지에 대한 설정 정보를 저장
- exception : 예외 객체, 에러페이지에서만 사용
41. request 내장 객체
: 클라이언트(웹브라우저)의 요청 정보를 저장하고 있는 객체
: 주로 클라이언트에서 서버로 전달되는 정보를 처리하기 위해 사용(즉, 사용자 요청과 관련된 기능을 제공하는 내장 객체)
대표적인 예) HTML 폼을 통해 입력된 값을 JSP에서 가져올 때 사용
42. request 내장 객체 메소드(파라미터 값을 가져오는)
리턴 타입 |
메소드 |
설명 |
String |
getParameter(String name) |
파라미터 변수에 저장된 값을 얻어냄 * 단독 값을 입력하는 text, select, radio 등에서 사용 |
String[] |
getParameterValues(String name) |
파라미터 변수에 저장된 모든 값을 얻어냄 * 다중 값을 입력하는 checkbox에서 선택한 값을 얻어낼 때 주로 사용 |
Enumeration |
getParameterNames() |
요청에 의해 넘어오는 모든 파라미터 변수를 열거형태로 넘겨줌 |
43. getParameterValues 예제(checkbox 내용 다 출력)
<% String[] hobby = request.getParameterValues("hobby"); for(int i=0; i<hobby.length; i++){ %><%=hobby[i]%> <%}%> |
44. request 내장 객체가 제공하는 기능
1) 클라이언트와 관련된 정보 읽기 기능
2) 서버와 관련된 정보 읽기 기능
3) 클라이언트가 전송한 요청 파라미터 읽기 기능
4) 클라이언트가 전송한 요청 헤더 읽기 기능
5) 클라이언트가 전송한 쿠키 읽기 기능
6) 속성 처리 기능
45. request 내장 객체 종류
클라이언트 IP : <%=request.getRemoteAddr()%>
요청정보 인코딩 : <%=request.getContentType()%>
요청정보 프로토콜 : <%=request.getProtocol()%>
요청정보 전송방식 : : <%=request.getMethod()%>
요청 URI : <%=request.getRequestURI()%>
컨텍스트 경로 : <%=request.getContextPath()%>
서버 이름 : <%=request.getServerName()%>
서버 포트 : <%=request.getServerPort()%>
헤더 정보 : <%=request.getHeader("헤더명")%>
46. response 내장 객체
: 클라이언트(웹브라우저)의 요청에 대한 응답 정보를 저장하고 있는 객체
: 응답 정보와 관련하여 주로 헤더 정보 입력, 리다이렉트 등의 기능을 제공
47. redirect 객체
: respone.sendRedirect("test.jsp");
: 주로 게시판에 글 쓰고 DB에 저장한 후 게시판의 글 목록을 보여주는 시스템
1) (요청) a.jsp요청 ->
2) a.jsp의 내용 수행 ->
3) 출력 버퍼의 내용을 비운 후, b.jsp로 이동 ->
4) b.jsp의 내용 수행 ->
5) (응답) b.jsp의 내용이 응답됨
48. out 내장 객체
: JSP 페이지의 출력할 내용을 가지고 있는 출력 스트림 객체
: 표현식 <%= %>과 같음
1) clear() - 출력버퍼에 저장된 내용을 버림, 만일 이미 버퍼가 다 채워져서 클라이언트에 전송되었을 경우 예외 발생 시킴
2) cleraBuffer() - 출력버퍼에 저장된 내용을 버림, 예외 발생시키지 않고, 현재 저장되어 있는 버퍼만을 버림
3) isAutoFlush() - 출력버퍼가 다 찼을 때 처리 여부를 결정
4) getBuffersize() - 전체 출력버퍼의 크기를 리턴
5) getRemaining() - 현재 남아있는 출력 버퍼의 크기 리턴
6) print(string str) - 주어진 내용을 출력[out.print("")]
49. pageContext 내장 객체
: 다른 내장 객체를 구하거나 페이지의 흐름제어 그리고 에러 데이터를 얻어낼 때 사용
1) getRequest() - request 내장 객체를 리턴[pageContext.getRequest();]
2) getOut() - out 내장 객체를 리턴[pageContext.getOut.println("안녕");]
3) forward(String url) - 현재 페이지의 요청과 응답에 관한 제어권을 URL로 지정된 주소로 영구적으로 넘김
4) include(String url) - 현재 페이지의 요청과 응답에 관한 제어권을 URL로 지정된 주소로 임시적으로 넘김
CHAPTER4_(2). JSP 내장 객체(2)
50. pageContext.forward("");
: response의 내장객체의 sendRedirect()를 사용했을 경우와는 다르게 처음 실행된 jsp 페이지 주소가 그대로 유지됨
: 따라서, forward 방식은 요청과 응답에 대한 제어권을 다른 페이지로 넘기더라도 브라우저에 표시되는 주소가 유지되고 현재 페이지의 요청과 응답의 정보가 유지되는 장점이 있음
51. session 내장 객체
: 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체(ex:회원관리 시스템)
: 웹 브라우저(클라이언트) 당 1개가 할당
session.getId() //해당 웹 브라우저에 대한 고유한 세션 ID를 리턴 session.getCreationTime() //해당 세션이 생성된 시간을 밀리 초로 계산하여 long형으로 리턴 session.getLastAccessedTime() //마지막 접근시간을 리턴 session.setMaxInactiveInterval(10) //세션 유지 시간을 초단위의 정수로 지정 session.getMaxInactiveInterval() //세션 유지 시간 리턴(기본 값30분) session.isNew() //세션 생성, 새로 생성된 세션의 경우 true값을 리턴 session.invalidate //세션을 무효화 session.getAttribute("id") //세션 id에 지정된 값을 리턴 session.setAttribute("id", id) //세션 id에 id값 저장 |
52. application 내장 객체
: 웹 애플리케이션 정보를 저장하고 있는 객체
: 웹 애플리케이션 당 1개의 객체가 생성(ex: 방문자 카운트 같은 하나의 웹 애플리케이션에 보유하는 변수에 사용)
application.getServerInfo(); //웹 컨테이너의 이름과 버전을 리턴 application.getMimeType(String fileName); //지정한 파일 이름을 MIME 타입을 문자열로 리턴 application.getRealPath("/"); //현재 웹 애플리케이션 시스템상(절대)의 경로로 변경하여 리턴 application.log(message); //로그 파일에 message를 기록 |
53. config 내장 객체
: JSP 페이지 대한 설정 정보를 저장하고 있는 객체
: 서블릿이 초기화되는 동안 참조해야 할 정보를 전달
: 초기 설정 정보들은 웹 컨테이너가 구동될 때 내부에서 자체적으로 생성/관리됨
: 컨테이너 당 1개의 객체가 생성
config.getServletName(); //서블릿의 이름을 문자열로 리턴 |
54. page 내장 객체
: JSP 페이지를 구현한 자바 클래스 객체에 대한 설정 정보를 저장하고 있는 객체
: 웹 컨테이너는 자바만을 스크립트 언어로 지원하기 때문에 page 객체는 현재 거의 사용되지 않음
55. exception 내장 객체
: JSP 페이지에서 예외가 발생한 경우에 사용되는 객체
1) exception.getMessage(); //발생된 예외의 메시지를 리턴
2) exception.toString(); //발생된 예외 클래스명과 메시지 리턴
3) exception.printStackTrace(); //예외 발생 시 예외가 발생한 곳을 추적함
56. 내장객체의 영역 4가지
* 내장 객체의 영역은 객체의 유효기간이라고도 불림(객체를 누구와 공유할 것인가를 나타냄)1) page : 단 한개의 페이지만 대응
2) request :같은 요청을 공유하는 페이지가 대응
3) session : 같은 브라우저페이지들끼리 공유
4) application :같은 웹애플리케이션페이지들끼리 공유
CHAPTER5. JSP 액션태그
57. 액션태그
: JSP 페이지에서 Java코드 등의 스크립트 언어를 사용하지 않고도 다른 페이지에 접근할 수 있도록 태그를 이용해 구현된 기능
58. 액션태그의 종류
1) forward / include : 페이지 흐름제어 액션
2) plug-in : 자바 애플릿 사용 액션
3) useBeaen : 자바빈 사용 액션
4) setProperty : 프로퍼티의 값을 세팅할 때 사용 액션
5) getProperty : 프로퍼티의 값을 얻을 때 사용 액션
59. include 액션 태그 : <jsp:include>
: 다른 페이지의 실행 결과를 현재의 페이지에 포함시킬 때 사용(페이지 모듈화를 할 때)
: 템플릿 페이지 사용, 중복되는 페이지의 호출은 include 액션 태그를 사용함
: <jsp:include page="url" flush="false"/>
*page 속성=포함될 페이지 명
*flush 속성=포함될 페이지로 제어가 이동될 때, 지금까지 출력 버퍼에 저장한 결과를 처리하는 방법(false이면 flush하지 않음)
*response.sendRedirect(""); 는 출력버퍼를 비운 후 이동함
60. include 액션 태그의 처리 과정
|
1) 웹 브라우저가 a.jsp 페이지를 웹 서버에 요청 2) 서버는 요청받은 a.jsp 페이지를 처리->출력 내용은 출력 버퍼에 저장 3) 프로그램 제어를 b.jsp 페이지로 이동 4) b.jsp 페이지를 처리, b.jsp 페이지 내에 출력내용을 출력 버퍼에 저장 5) b.jsp 페이지 처리가 끝나면, 다시 a.jsp 페이지로 프로그램의 제어가 이동->이동 위치는 <jsp:include page="b.jsp" flush="false"/> 문장 다음 6) a.jsp 페이지의 나머지 부분을 처리, 출력할 내용이 있으면 출력 버퍼에 저장 7) 출력버퍼의 내용을 웹 브라우저로 응답 * include 액션 태그를 사용하는 두 페이지는 같은 request 객체를 공유 |
61. <jsp:param>
: include 액션 태그에서 포함되는 페이지에 값 전달
<jsp:include page="b.jsp" flush="false"> <jsp:paramname="id" value="myeonguni"> </jsp:include> |
<% Stringid = request.getParameter("id"); %> |
62. include 디렉티브<%@include file>과 include<jsp:include> 액션 태그와의 차이점
: include 디렉티브는 조각 코드를 삽입할 때 주로 사용
: 코드 차원에서 포함되므로 주로 공용변수, 저작권 표시와 같은 중복 문장에서 사용
비교항목 |
include 액션 태그 |
include 디렉티브 |
처리시간 |
요청시간에 처리 |
JSP파일 자바 소스로 변환할 때 처리 |
기능 |
별도의 파일로 요청 처리 흐름을 이동 |
현재 파일에 삽입시킴 |
데이터 전달방법 |
request 내장객체나 <jsp:param>을 이용한 파라미터 전달 |
페이지 내의 변수 선언한 후, 변수에 값 저장 jspf 파일 확장자 사용 |
용도 |
화면의 레이아웃의 일부분을 모듈화 할 때 주로 사용 |
다수의 JSP페이지에서 공통으로 사용되는 변수를 지정하는 코드나 저작권 같은 문장을 포함 |
63. forward 액션 태그 : <jsp:forward>
: 웹 페이지 간의 제어를 이동 시킬 때 사용
: pageContext 내장객체의 forward() 메소드가 태그로 구현된 기능
: forward 액션 태그를 만나게 되면 그 전까지 출력 버퍼에 저장되어 있던 내용을 제거한 후 forward 액션 태그가 지정하는 페이지로 이동
: <jsp:forward page="이동할페이지"/>
64. forward 액션 태그의 처리 과정
|
1) 웹 브라우저에서 웹 서버로 a.jsp 페이지를 요청 2) 요청된 a.jsp 페이지를 수행 3) a.jsp 페이지를 수행하다가 <jsp:forward> 액션 태그를 만나면 이제까지 저장되어 있던 출력 버퍼의 내용을 제거하고 프로그램 제어를 b.jsp페이지로 이동 4) b.jsp 페이지를 수행 5) b.jsp 페이지를 수행한 결과를 웹 브라우저에 응답 * forward 액션 태그를 사용하는 두 페이지는 같은 request 객체를 공유 |
65. plugin 액션 태그 : <jsp:plugin>
: 웹 브라우저에서 자바 애플릿 또는 자바 빈 실행시킬 때 사용
: plugin 액션태그를 사용하면 서버의 부하를 줄여주는 장점
<jsp:plugin type="applet" codebase="./" code="code.class" width="30" height="30"> <jsp:param name="id" value="myeonguni"> |
66. 템플릿 페이지
: 웹 브라우저에 표시되는 하나의 페이지는 다수의 페이지로 구성(top.jsp,left.jsp...등)
1) include 액션 태그를 사용해 페이지 모듈을 템플릿페이지에 로드
2) forward 액션 태그를 사용해 템플릿페이지를 포워딩
67. 500페이지 결과 화면 안된 이유
: 전체 응답 결과 데이터 길이가 513바이트보다 작을 때, 인터넷 익스 플로러의 경우 자체적으로 제공하는 화면을 출력
-> HTML 주석을 포함시켜서 응답화면의 데이터 크기가 513바이트를 넘도록 해주면 500페이지가 안뜨고 원하는 결과 화면이 출력됨
CHAPTER7. 자바빈(JavaBean)
68. 지금까지 코딩 방법의 문제점
1) 가독성이 떨어짐: 화면 표시 부분과 로직 코드가 같은 페이지 내에 기술되어
2) 코드를 재사용하기 어려움
69. 자바빈(JavaBean)
: 자바로 작성되어진 컴포넌트
: 클래스들로 이루어진 복합적인 구조
: 자바 언어의 프로그램 작성 규칙과 문법을 따름
70. 자바빈을 사용하는 이유
1) 가독성을 높임: 디자인 부분과 로직 부분을 나눔으로써 복잡한 JSP코드를 줄임(디자이너는 디자이너 역할만, 프로그래머는 프로그래머 역할만 할 수 있음)
2) 프로그램의 재사용성을 증가시킴
71. 자바빈 클래스 작성
: 자바의 클래스를 만드는 것과 같은 규칙(Pagkage, Import, Class)
: public class test{} //접근제어자[public]
72. 자바빈 Setter/Getter 메소드 작성
: 프로퍼티(property) - 값을 지정하기 위한 멤버 필드 private로 선언해 getter/setter를 사용함
: setter- public void setId(String id){ this.id=id.trim(); }
: getter- public String getId(){ return id; }
73. useBean 액션태그 <jsp:useBean>
: 자바빈 객체를 생성하기 위한 태그
: <jsp:useBean id="빈이름" class="자바빈클래스이름" scope="사용범위"/>
*id : 생성될 자바빈 객체의 이름을 쓰는 곳, 생략불가능/ 같은 이름의 useBean 객체를 중복 생성할 경우 기존에 생성된 객체를 그대로사용(재생성x)
*class : 패키지명을 포함한 자바클래스의 풀 네임 기술
*scope : 객체의 유효범위로 page, request, session, application중 택, 기본값은 page
74. 자바빈의 영역(scope)
-page: 현재 페이지의 범위에만 한정된 scope
-request: request요청을 받고 처리를 완료할 때까지 생존하는 scope
-session: 클라이언트 당 하나씩 할당되는 영역, 브라우저를 종료하기 전까지 유지되는 scope(ex:로그인,장바구니)
-application: 사이트 전체의 범위를 가지며, 서버가 종료되기 전에는 계속 유지되는 scope(ex:전체방문자수계산)
75. setProperty 액션태그 <jsp:setProperty>
: 자바빈 클래스의 속성 값(프로퍼티)을 설정하기 위한 태그
<jsp:useBean id="test" class="tesjsp.test" scope="page"> <jsp:setProperty name="빈이름(test)" property="속성이름(id)" value="설정할값(id)"/> </jsp:useBean> <%=test.getId() %> //test빈의 id 값을 가져와 출력함 |
* 전체 프로퍼티 설정: property="*"
* value로 직접 값을 주는게 아닌 클라이언트에서 전송되어오는 파라미터 값을 프로퍼티값으로 할당할 경우
-> value 대신 param을 사용(value="id"->param="id")
76. getProperty 액션태그 <jsp:getProperty>
: 자바빈 클래스의 속성 값(프로퍼티)을 가져오기 위한 태그
<jsp:useBean id="test" class="tesjsp.test" scope="page"/> <jsp:getProperty name="빈이름(test)" property="속성이름(id)"/> |
77. 회원가입 시스템 개요
: 회원가입, 회원인증, 회원정보수정, 회원탈퇴로 이루어짐..............아언제다해ㅐㅐㅐㅐㅐㅐㅐㅐ
* 회원 가입 부분의 구조 |
78. 4개의 프로퍼티를 가진 데이터 저장 자바빈 작성
import java.sql.Timestamp; public class RegisterBean{ private String id; private String password; private String name; private Timestamp reg_date; public String getId(){ return id; } public void setId(String id){ this.id=id; } ....(setter, getter반복) } |
79. css 파일 포함하기
: <link rel="stylesheet" href="../css/style.css"/>
80. 현재 날짜와 시간을 가입일로 지정
: new Timestamp(System.currentTimeMillis()));
81. 액션 태그의 종류 한번 더 보기
jsp:include, jsp:forward, jsp:plugin, jsp:useBean, jsp:param, jsp:setProperty, jsp:getProperty
CHAPTER8. 쿠키와 세션
82. HTTP 프로토콜의 비연결성
: HTTP 프로토콜은 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않음
83. 쿠키(Cookie)
: 클라이언트 측에서 관리/보관되는 정보를 의미
: 상태가 없는 프로토콜을 위해 상태를 지속 시키기 위한 방법
: 쿠키의 정보는 브라우저를 종료해도 생존 기간이 지정되면 생존기간동안 데이터가 사라지지 않음
* 쿠키는 하드디스크에 파일로 저장되기 때문에 그 파일이 남아 있는 한 항상 유지됨
* 쿠키는 클라이언트에서 관리되기 때문에 보안적으로 매우 취약한 면을 가지고 있음
* '아이디 저장' 기능은 쿠키를 사용한 대표적인 예
84. 쿠키의 사용
- 쿠키 생성: Cookie cookie = new Cookie(String name, String value);
- 생성한 쿠키를 클라이언트에 전송: response.addCookie(cookie); //메모리에 쿠키 값이 저장
- 클라이언트에 전송된 쿠키 읽어올 때: Cookie[] cookie = request.getCookies();
- 쿠키의 값을 새 값으로 변경할 때: cookie.setValue(String value);
- 쿠키의 수명(지속시간) 지정 방법: cookie.setMaxAge(int seconds);
85. 쿠키 작성 순서
1) 쿠키를 생성: Cookie cookie = new Cookie("test", "test");
2) 쿠키에 필요한 설정을 함: cookie.setMaxAge(120); //유효시간2분설정
3) 클라이언트에게 생성된 쿠키 전송: response.addCookie(cookie);
86. 웹 브라우저에 저장된 쿠키를 사용하는 순서
1) 웹 브라우저의 요청에서 쿠키를 얻어옴: Cookie[] cookie = request.getCookies();
2) 리턴된 쿠키의 배열에서 쿠키 이름을 가져옴: cookie.getName();
3) 쿠키 이름을 통해 쿠키 값을 가져옴: cookie.getValue();
87. 쿠키 값의 인코딩 / 디코딩 처리
: 쿠키는 값으로 한글과 같은 문자를 가질 수 없기 때문에 인코딩해야함
* 값 설정 시: Cookie cookie = new Cookie("name", URLEncoder.encode("값", "euc-kr"));
* 갑 조회 시: String value = URLDecoder.decode(cookie.getValue(), "euc-kr");
88. 쿠키의 도메인 - cookie.setDomain("");
: 도메인 지정 시, 해당 도메인에 쿠키 전달
1) .(점)으로 시작하는 경우 관련 도메인에 모든 쿠키를 전송
->ex) cookie.setDomain(".blog.com");
2) 특정 도메인에 대해서만 쿠키를 전송
->ex) cookie.setDomain("myeonguni.tistory.com");
* 주의할 점: setDomain()의 값으로 현재 서버의 도메인 및 상위 도메인만 전달 할 수 있음
89. 쿠키의 경로 - cookie.setPath("");
: 경로 설정시 해당 경로를 기준으로 하위 경로에 대해서 쿠키 전달
* 경로 미 설정 시, 요청 URL의 경로에 대해서만 쿠키 전달
90. 세션(Session)
: 웹 서버 쪽의 웹 컨테ㅔ이너에 상태를 유지하기 위한 정보를 저장(웹 브라우저 당 1개씩 생성)
: 컨테이너에 접속해서 종료되기 전까지 정보유지 / 접속시간에 제한을 두어 응답이 없다면 유지종료
: 웹 브라우저와 웹서버의 상태 유지가 훨씬 안정적이고 보안상의 문제도 해결
: 웹 서버는 각각의 웹브라우저를 식별자(세션ID)를 통해 구분 및 유지
91. 세션의 사용
메소드 |
설명 |
isNew() |
세션 생성, 생성에 성공하면 'true' 반환 |
setAttribute(String name, Object value) |
세션 객체에 속성을 저장 |
removeAttribute(String name) |
세션 객체에 저장된 속성을 제거 |
getAttribute(String name) |
세션 객체에 저장된 속성을 반환 |
getId() |
클라이언트의 세션ID 값을 반환 |
setMaxInactiveInterval(int seconds) |
세션의 유지 시간을 설정 |
getMaxInactiveInterver(int seconds) |
세션의 유지 시간을 반환 |
invalidate() |
현재의 세션 정보들을 모두 제거 |
CHAPTER9. 데이터 베이스 기초
92. 데이터 베이스(Database)
: 데이터의 효율적인 관리를 목적으로 하는 데이터의 집합
93. DBMS(Database Management System)
: 데이터베이스를 관리하는 프로그램
1) 데이터의 삽입[create,insert]/수정[alter,update]/삭제[drop,delete]
2) 데이터의 무결성 유지
3) 트랜잭션 관리
4) 데이터의 백업 및 복원
5) 데이터 보안
94. 대표적인 DBMS 종류
1) MySQL
2) Oracle
3) DB2
4) MS-SQL
95. 기본 포트번호: 3306
96. SQL(Structure Query Language)
: 데이터베이스에 데이터를 삽입, 수정, 삭제, 검색을 하기 위한 데이터베이스 질의 언어
97. SQL의 3종류(DDL, DML, DCL)
1) DDL(데이터 정의어) - 테이블을 생성하거나 재정의 및 제거 기능
2) DML(데이터 조작어) - 데이터를 검색 및 삽입, 수정, 삭제 기능
3) DCL(데이터 제어어) - 데이터베이스의 사용자의 권한을 생성, 제거
98. DDL - 데이터 정의어
ex1) 테이블 생성 CREATE TABLE TESTDB( name VARCHAR(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, id VARCHAR(10) NOT NULL, passwd VARCHAR(10) NOT NULL, ); ex2) 필드 수정 및 삭제 (modfiy:변경, add:추가, drop: 삭제) ALTER TABLE TESTDB MODFIY( name VARCHAR(20) ); ALTER TABLE TESTDB DROP name; ex3) 테이블 삭제 DROP TABLE TESTDB; |
99. DML - 데이터 조작어 (INSERT, UPDATE, DELETE, SELECT)
1) SELECT 문
ex1) testdb 테이블 전체 검색 SELECT * FROM testdb; ex2) Like 조건을 사용해서 특정문장을 포함하고 있는지 여부 검사 SELECT * FORM testdb where name like '명%'; |
100. 끝!!!!!!!!!!!!!!!!!!!!!!!!!났!!!!!!!!!!!!!!!!!!!!!!!!!!다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!언!!!!!!!!!!!!!!!!!!!!!!!!!!제!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!외!!!!!!!!!!!!!!!!!우!!!!!!!!!!!!!!!!!!!!!!!!!!!!냐!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[레포트 - 아동 및 청소년 문화] 서평 : 청소년 이젠 이해할 수 있다(오윤선) (0) | 2015.10.25 |
---|---|
한국성서대학교 15년도 2학기 9주차 묵상지[한국성서대 묵상지] (0) | 2015.10.20 |
한국성서대학교 15년도 2학기 8주차 묵상지[한국성서대 묵상지] (0) | 2015.10.13 |
[설계패턴]요구 분석 정리 (0) | 2015.10.12 |
[네트워크 프로그래밍2]스윙 컴포넌트와 이벤트 핸들링 정리 (0) | 2015.10.12 |