수업/웹프

웹프 정리

맏리믓 2022. 10. 19. 18:51

1. JSP페이지의 처리 과정

- 동적 웹페이지  지원 : 저장된 내용을 다른 변수로 가공처리 하여

보여주는 방식

- 페이지 처리 과정

1. 클라이언트가 웹 브라우저를 통해 웹 서버에 원하는

JSP페이지 요청

2. 서버에서 요청한 JSP 파일 탐색

3. 해당 JSP 파일을 JSP컨테이너를 통해 .java 파일로 번역

4. 번역된 .java 파일을 JSP컨테이너를 통해 컴파일하여 .class

파일 생성

5. .class 파일을 가공된 html 문서로서 웹 브라우저로 반환

- JSP컨테이너

. jsppirnt(), _jspService(), jspDestroy() 등의 메소드를 가진

JSP파일의 생명주기를 담당하는 프로그램으로 JSP파일을 java

file 로 번역하고 java 파일을 컴파일 하는등의 역할을 한다.

- java, class 저장 위치 -> ‘jsp java, class 저장 위치

 

2. JSP 스크립틀릿 태그와 표현문 태그의 사용법

- 표현문

. 웹브라우저에 출력 하고 싶은 부분을 표현

. 숫자, 문자, bool 등의 기본 데이터 타입, java 객체 타입 가능

- 스크립틀릿

. 자바 코드로 이루어진 로직 부분을 표현

. out 객체를 사용하지 않고 쉽게 html 응답 제작

 

3. page 디렉티브 속성중 ~ 에 대해 설명 하시오

- 검색

 

4. forward 액션태그와 include 액션태그

- forward 액션태그

. 현재 JSP페이지에서 다른 페이지로 이동하는 태그

. JSP컨테이너는 forward를 만나면 출력버퍼를 삭제하고 설정된

페이지로 이동

. 이때 출력 버퍼를 출력 하는 것이 아닌 삭제하기 때문에 forward

선언 이전에 생성된 html 코드가 손실된다. 하지만 현재 페이지가

이미 전달 버퍼로 채워진 경우전달이 중단 될 때까지 해당 내용을

웹 서버에서 응답으로 보내기 때문에 잘못된 페이지가 전송 가능

- include 액션태그

. 현재 JSP페이지의 영역에 외부 파일의 내용을 포함 하는 태그

. html, jsp, 서블릿 페이지 등을 포함 할 수 있다.

- 둘의 차이점

. include 액션태그는 포함 된 외부 페이지가 실행 완료 된 후 현재

JSP 페이지로 제어권을 반환 한다는 점이다.

 

5. 자바빈즈

- 정의

. 동적 콘텐츠 개발을 위해 자바코드를 사용하여 자바 클래스로 로직

작성 하는 방법

. JSP 페이지에서 화면 표현을 위한 식이나 자료 처리를 위한 코드를

따로 분리하여 작성하는 것

. 이렇게 하면 JSP 파일에는 html처럼 쉽고 간단한 코드만으로 구성

할 수 있다.

- 규칙

. 자바 클래스는 java.io.Serializable 인터페이스를 구현 해야함

. 인수가 없는 기본 생성자 필요

. 모든 멤버 변수인 property private 로 설정

. property getter()/setter() 메소드가 존재 해야 함

 

6. useBeans

. JSP페이지에서 자바빈즈를 사용할 때 실제로 자바 클래스를 선언 후

초기화 하는 태그

. 사용법

<jsp:useBean id=" ... " class=" ... " scope=" ... " />

- id : 자바빈즈 식별 id

- class : path를 포함 한 자바빈즈의 class 이름

- scope : 자바빈즈가 저장 되는 영역

 

7. 내장객체

. 내장 객체들은 선언 없이 사용할 수 있는 것은 JSP 페이지가 서블릿

형태의 클래스로 변환 될 때 자동으로 생성되기 때문

. 내장 객체들이 JSP 파일이 서블릿으로 변환 되면서 미리 정해진

이름으로 선언 되거나 파라미터 형식으로 전달 받기로 약속 됨

. 서블릿 변환 시 자동 생성 되는 _jspService() 메소드도

request response를 입력 파라미터 변수로 사용하고 다른

내장 객체들 또한 _jspService() 메소드에서 선언과 초기화를 해줌

 

8. forward 방식과 redirect 방식

- forward 방식

. JSP 페이지에서 이동할 URL 로 요청 정보를 그대로 전달함

. 사용자가 최초로 요청한 정보가 이동된 URL 에서도 유효

. 이동된 URL 주소가 브라우저에 표기 되지 않음

- redirect 방식

. 현재 JSP 페이지로부터 이동할 URL을 브라우저로 반환

. 이때는 브라우저에서 새로운 요청을 하기 때문에 처음보낸 정보가

이동된 URL 에서는 유효하지 않음

. 이동된 URL 주소가 브라우저에 표기됨

 

9. MultipartRequest

- 파일 업로드 하는 순서

1. file을 업로드 하는 jsp 파일에 MultipartRequest 메소드를 통해

MultipartRequest 클래스를 생성 한다.

2. form 태그에서 업로드 하고자 하는 file을 보낸다

3. MultipartRequest 를 통해 서버에 file을 업로드 한다.

4. 추가적으로 file 의 정보를 얻고 싶다면 MultipartRequest

메소드를 이용해 확인 할 수 있다.

- MultipartRequest 클래스를 이용하기 위해서

. cos.jar 라이브러리가 필요하며

. 항상 import 두줄 해줘야 한다.

 

9. 5초마다 갱신되는 화면 만들기

<%@page contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html>
	<head>
		<title>Scripting Tag</title>
	</head>
	<body>
		<p>
			이 페이지는 5초마다 refresh 됩니다
			<% response.setIntHeader("Refresh", 5); %>
		</p>
		<%=(new java.util.Date())%>
	</body>
</html>

10. 파일 업로드 한거 받아서 파일 이름 표로 만들어서 출력 하는거

<%@page contentType="text/html; charset=utf-8"%>
<%@page import="com.oreilly.servlet.*"%>
<%@page import="com.oreilly.servlet.nultipart.*"%>
<%@page import="java.util.*" %>
<%@page import="java.io.*" %>
<html>
	<head>
		<title>Scripting Tag</title>
	</head>
	<body>
		<%
			MultipartRequest multi = new MultipartRequest(request, "C:\\upload", 5*1024*1024, "utf-8", 
															new DefaultFileRenamePolicy());
															
			String name1 = multi.getParameter("name1");
			String subject1 = multi.getParameter("subject1");

			String name2 = multi.getParameter("name2");
			String subject2 = multi.getParameter("subject2");

			String name3 = multi.getParameter("name3");
			String subject3 = multi.getParameter("subject3");
			
			Enumeration files = nulti.getFileNames();
			
			String file3 = (String) files.nextElement();
			String filename3 = multi.getFilesystemName(file3);

			String file2 = (String) files.nextElement();
			String filename2 = multi.getFilesystemName(file2);

			String file1 = (String) files.nextElement();
			String filename1 = multi.getFilesystemName(file1);
		%>
		<table border="1">
			<tr>
				<th width="100">이름</th>
				<th width="100">제목</th>
				<th width="100">파일</th>
			</tr>
			<%
				out.print("<tr><td>" + name1 + " </td>");
				out.print("<td>" + subject1 + " </td>");
				out.println("<td>" + filename1 + " </td></tr>\n");

				out.print("<tr><td>" + name2 + " </td>");
				out.print("<td>" + subject2 + " </td>");
				out.println("<td>" + filename2 + " </td></tr>\n");

				out.print("<tr><td>" + name3 + " </td>");
				out.print("<td>" + subject3 + " </td>");
				out.println("<td>" + filename3 + " </td></tr>\n");
			%>
		</table>
	</body>
</html>

* upload.setHeaderEncoding("utf-8")