TODAY TOTAL
분류 전체보기 (78)
[JSP] 2. 버퍼와 기본객체

 

 

1.JSP 처리 과정

 

JSP 처리 과정

 

WAS(Web Application Server)는 웹 서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현 하여

다양한 역할을 수행할 수 있는 서버를 말한다.

또 여기서 웹 컨테이너란? 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을

다시 클라이언트에 전달해주는 역할을 하는 것이 웹 컨테이너이다.

JSP에 해당하는 서블릿이 존재하지 않을 경우

- JSP 페이지로부터 자바 코드를 생성한다.

- 자바 코드를 컴파일해서 서블릿 클래스를 생성한다.

- 서블릿에 클라이언트 요청을 전달한다.

- 서블릿이 요청을 처리한 결과를 응답으로 생성한다.

- 응답을 웹 브라우저에 전송한다.

JSP에 해당하는 서블릿이 존재하는 경우 ( 1.1 ~ 1.3 거친 경우)

- 서블릿에 클라이언트 요청을 전달한다.

- 서블릿이 요청을 처리한 결과를 응답으로 생성한다.

- 응답을 웹 브라우저에 전송한다.

즉, JSP 페이지를 요청할 때에는 JSP를 직접 실행하는 것이 아니라, JSP를 자바 소스 코드로 변환한 뒤

컴파일해서 생성한 서블릿을 실행하는 것이다.

 

버퍼가 다 차면 자동으로 데이터를 전송함

 

버퍼(Buffer)는 응답결과를 저장했다가 한 번에 웹 브라우저에 전송하는 것

<%@ page buffer = "1kb" autoFlush "false" %>

page buffer : 버퍼의 크기를 지정해주는 것이고 default 값은 8kb이다. 안써도 실행은 된다.

autoFlush : (true) 버퍼가 다 차면 버퍼를 플러시 하고 계속 작업

(false) 버퍼가 다 차면 익셉션을 발생시키고 작업 중지

 

2. 기본 객체

 

8가지 기본 객체와 오류페이지만 사용하는 exception 객체

 

기본 객체 8가지와 오직 오류페이지에서만 사용할 수 있는데 exception

out 기본 객체는 언제 사용할까?

 

 

<% if(grade > 10) { %>
<%= gradeStringA %>
<% }else if (grade > 5) { %>
<%= gradeStringB %>
<% } %>
--------------------------------
//if-else블록과 스크립트를 구분하기 위한 태그(<%와 %>)때문에 코드가 복잡하다
//하지만 out 객체를 사용하면 좀 더 간편해진다.
--------------------------------
<%
   if (grade > 10){
       out.println(gradeStringA);
   } else if(grade > 5) {
       out.println(gradeStringB);
   }
%>

 

하지만 out 객체를 직접 응답 결과를 생성한 경우가 많지 않고, 복잡해지는 경우 아니라면

out 객체를 사용하지 않는 것이 좋다.

 

application 기본 객체가 제공하는 자원 접근 메소드

 

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import = "java.io.*" %>
<html>
<head>
<title>절대 경로 사용하여 자원 읽기</title>
</head>
<body>

<%
	char[] buff = new char[128];
	int len = -1;
	
	String filePath = "C:\Users\ducjs\Desktop\chap5\notice.txt";
//절대 경로
	try(InputStreamReader fr = new InputStreamReader(
	new FileInputStream(filePath), "UTF-8")) {
//notice.txt로부터 내용을 읽어오는 스트림을 생성한다
		while ((len = fr.read(buff)) != -1{
			out.print(new String(buff, O, len));
		}
	} catch(IOException ex) {
		out.println("익셉션 발생 : " + ex.getMessage());
	}
%>

</body>
</html>

 

3.JSP 기본객체와 영역

 

application 기본 객체가 제공하는 자원 접근 메소드

 

- PAGE 영역 : 하나의 JSP 페이지를 처리할 때 사용되는 영역

- REQUEST 영역 : 하나의 HTTP 요청을 처리할 때 사용되는 영역

- SESSION 영역 : 하나의 웹 브라우저와 관련된 영역

- APPLICATION 영역 : 하나의 웹 어플리케이션과 관련된 영역

 

 

application 기본 객체가 제공하는 자원 접근 메소드

 

PAGE 영역은 한번의 클라이언트 요청에 대해서 하나의 JSP 페이지를 범위로 갖는다.

REQUEST 영역은 한본의 웹 브라우저 요청, 브라우저가 웹 서버에 전송하는 요청이

하나의 REQUEST 영역이 됨

SESSION 영역은 하나의 웹 브라우저와 관련되어 있고, 하나의 웹 브라우저와 관련된 모든 요청은

하나의 SESSION 영역에 포함된다.

APPLICATION 영역은 하나의 웹 어플리케이션과 관련된 전체 영역을 포함한다.

모든 요청 그리고 브라우저의 세션은 모두 하나의 APPLICATION 영역에 속함

  Comments,     Trackbacks
[JSP] 1. 기본 코드 구조와 request,response 처리
1. 기본 코드 구조

 

<%@ page contentType = "text/html;charset=utf-8" %>

이 코드는 JSP 페이지가 생성할 문서가 HTML이며, 문서의 캐릭터 셋(character set)이 UTF-8인 것을

나타낸다. 캐릭터 셋(Character Set : 기호나 문자의 집합을 말한다.)

<%@ 디렉티브이름 속성1 ="값1" 속성2= "값2 .." %>

- 디렉티브는 기본적으로 '<%@'으로 시작 하고 속성과 값을 정해준다.

<%@ page contentType = "text/html;charset=utf-8" %>

- 디렉티브 이름 : page, 속성 : contentType, 속성 값 : "text/html;charset=utf-8"

 

2. request 기본 객체

 

request 기본 객체는 가장 많이 사용하는 기본 객체이고, 웹 브라우저 요청과 관련이 있다.

웹 브라우저에 주소를 입력하면 웹 브라우저는 해당 서버에 연결 후 요청을 보내는데

이 요청 정보를 제공하는 것이 'request' 기본 객체이다.

request 기본 객체의 클라이언트 및 서버 정보 관련 메서드

getRemoteAddr() : 웹 서버에 연결한 클라이언트의 IP 주소를 구한다.

getRequestURI() : 웹 브라우저가 요청한 URL에서 경로를 구한다.

getContextPath() : JSP 페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 구한다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>폼 생성</title>
</head>
<body>
<form action="/chap03/viewParameter.jsp" method="post">
이름 : <input type = "text" name="name" size="10"> <br>
주소 : <input type = "text" name="address" size="30"> <br>
좋아하는 동물 : <input type ="checkbox" name ="pet" value ="dog">강아지
<input type ="checkbox" name ="pet" value ="cat">고양이
<input type ="checkbox" name ="pet" value ="pig">돼지
<br>
<input type = "submit" value="전송">
</form>
</body>
</html>

<form.jsp> > 입력한 뒤 전송 버튼을 누르면 (파라미터이름 - 값)형식으로 서버로 전송된다.

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.util.Enumeration" %>
<%@ page import="java.util.Map" %>
<%
	request.setCharacterEncoding("UTF-8"); //폼의 값들을 UTF-8로 변환 시킴
%>
<!DOCTYPE html>
<html>
<head>
	<title>요청 파라미터 출력</title>
</head>
<body>
	<b>request.getParameter() 메서드 사용</b><br>
	name 파라미터 = <%=request.getParameter("name") %> <br>
	address 파라미터 = <%=request.getParameter("adress") %> <p>
	
	<b>request.getParameterValues()메서드사용</b><br>
	<%
		String[] values = request.getParameterValues("pet");
		if (values != null) {
			for(int i =0; i< values.length;i++){
	%>
				<%= values[i] %>
	<%
			}
		}
	%>
	<p>
	<b>request.getParameterNames() 메서드 사용</b> <br>
	<% 
		Enumeration paramEnum = request.getParameterNames();
		while(paramEnum.hasMoreElements()) {
			String name = (String)paramEnum.nextElement();
	%>	
			<%=name %>
	<%
		}
	%>
	<p>
	<b>request.getParameterMap()메서드 사용</b><br>
	<%
		Map parameterMap = request.getParameterMap();
		String[]nameParam = (String[])parameterMap.get("name");
		if (nameParam !=null){
	%>
			name = <%= nameParam[0] %>
	<%
		}
	%>	
</body>
</html>

 

3. response 기본 객체

 

resoponse 기본 객체는 request 기본 객체와 반대의 기능을 수행한다.

요청 정보를 담고 있다면 rsponse 기본 객체는 웹 브라우저에 보내는 응답 정보를 담는다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
	String id = request.getParameter("memberId");
	if(id != null && id.equals("madvirus")){
		response.sendRedirect("/chap03/index.jsp");
		}else {
			//response.sendRedirect("/chap03/form.jsp");
	%>
<!DOCTYPE html>
<html>
<head>
<title>로그인에 실패</title>
</head>
<body>
잘못된 아이디입니다.
</body>
</html>
<%
	}
%>

 

response.sendRedirect("/chap03/index.jsp");

파라미터 값이 madvirus”이면 ”/chap03/index .jsp” 페이지로 이동한다.

 

  Comments,     Trackbacks
[JSP] 0. 첫걸음에 대한 준비

최범균의 JSP 2.3 웹 프로그래밍: 기초부터 중급까지


서버 웹 기술로 사용되는 JSP. 웹 사이트를 만들기 위한 기본기를 쌓을 수 있다.

하지만 JSP 혼자 쓰는건 아니고 스프링,MVC 등 다양한 기술 중 하나로 JSP를

사용하게 된다.

 

 

JSP를 이용한 웹사이트 개발
서버코드의 구조
서블릿,MVC의 기초
JSP와 DB를 연동한 게시판 개발

 

  Comments,     Trackbacks
[정보처리기사] 1. 소프트웨어 생명주기

 

소프트웨어 주기 -> 소프트웨어 개발단계와 각 단계별 주요활동 그리고 활동의 결과에 대한 산출물로 표현

(=소프트웨어 수명 주기)

 

 

  • 폭포수 모형(Waterfall)
  • 프로토타입 모형(Prototype Model, 원형모형)
  • 나선형 모형(Spiral Model, 점직적모형)
  • 애자일 모형(Agile Model)

 

폭포수 모형

말 그대로 폭포 흘러가면 되돌릴 수 없다고 생각

오랫동안, 폭넓게 사용된 전통적,고전적인 생명주기모형 매뉴얼을 작성해야 한다.

 

타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현(코딩) -> 시험 -> 유지보수

 

프로토타입 모형

프로토타입 = 시제품이라고 생각 그리고 인터페이스 중점

폭포수 모형 단점을 보안한 모형

 

 

나선형 모형

보헴이 제안 폭포수,프로토타입 장점에 위험분석기능을 추가한 모형

점진적 모형, 위험을 관리하고 최소화하는 것을 목적

 

 

계획 및 정의 -> 위험 분석 -> 공학적개발 -> 고객 평가

 

애자일 모형

고객과 소통에 초점을 맞춘 방법론

고객의 요구사항 변화에 유연하게 대응

짦은 개발주기 대응

 

 

애자일 방법론
프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
방대한 문서보다는 실행되는 SW에 더 가치를 둔다
계약협상보다는 고객과 협업에 더 가치를 둔다
계획을 따르기보다는 변화에 반응하는 것에 더 가치를 둔다

고객부터! 생각

 

폭포수 애자일
새로운 요구사항 반영 어려움 지속적으로 반영
계획,문서 고객
마지막에 모든 기능 테스트 반복되는 일정주기가 끝날때마다 테스트
  Comments,     Trackbacks
[Java]1. 변수와 타입
1. 변수

변수란, 하나의 값을 저장할 수 있는 메모리 공간입니다. 여러 값을 저장 할 수 없고, 실수는 실수값, 정수는 정수값만 저장 할 수 있습니다.

int age; //int는 타입이고, age는 변수이름이다.

int x,y,z; //여러 변수를 지정할 수도 있다.

변수 작성 규칙

▷첫번째 글자는 문자이거나 '$','_'이어야 하고 숫자로 시작할 수 없다. ex_price,$price(O),@speed(X)

영어 대소문자가 구분된다 ex_ firstname과 firstName은 다른 변수

▷첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다. (관례)

▷문자 수(길이)의 제한은 없다.

▷자바 예약어는 사용할 수 없다.

int score; // 변수 선언

score = 90; // 90을 score에 저장

 

 

값의 종류 기본타입 메모리사용크기 저장되는 값의 범위
정수 byte 1 byte 8 bit -128 ~ 127
char 2 byte 16 bit -215 ~ (215 - 1)
short 2 byte 16 bit -32,768 ~ 32,767
int 4 byte 32 bit -231 ~ (231 -1)
long 8 byte 64 bit -2,147,483,648 ~
2,147,483,647
실수 float 4 byte 32 bit -263 ~ (263 -1)
double 8 byte 64 bit -9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
논리 boolean 1 byte 8 bit true, false

 

강제 타입 변환

long longValue = 300;

int intValue = (int) longVaule; //intValue는 300이 그대로 저장된다.

public class CastingEx {
	public static void main(String[] args) {
		int intValue = 44032;
		char charValue = (char) intValue;
		System.out.println(charValue); //유니코드에 해당하는 문자가 출력
		
		long longValue = 500;
		intValue = (int) longValue; //intValue는 500이 그대로 저장된다.
		System.out.println(intValue);
		
		double doubleValue = 3.14;
		intValue = (int) doubleValue; //intValue는 정수 부분인 3만 저장된다.
		System.out.println(intValue);
	}
}

결과 : 가

500

3

'Back-End > Java' 카테고리의 다른 글

[Java] 2. 조건문과 반복문  (0) 2021.06.09
[Java] 0. 첫걸음에 대한 준비  (0) 2021.06.02
  Comments,     Trackbacks
[Java] 0. 첫걸음에 대한 준비

공부할 책은~~~~~~~

이것이 자바다


Java는 다양한 운영체제에서 실행되는 프로그램을 개발 할 수 있고, 단순한 콘솔

프로그램에서부터 모바일까지 다양하게 개발 할 수 있다.

또한 멀티 스레드,동적 로딩,자동 메모리관리 등 장점이 많은 언어가 Java다

이 책에서는 자바에 대한 기초적인것부터 자세히 시작해 클래스 및 스레드, 제네릭,

람다식,JavaFx 등을 배우게 된다.

 

 

 

 

 

배우게 될 내용​

객체와 클래스

기본 API 클래스

멀티 스레드, 제네릭,람다식

프레임워크,JavaFx


기초부터 차근차근 열심히 할 수 있을까?

 

'Back-End > Java' 카테고리의 다른 글

[Java] 2. 조건문과 반복문  (0) 2021.06.09
[Java]1. 변수와 타입  (0) 2021.06.03
  Comments,     Trackbacks