본문 바로가기
JSP

[JSP] 서버프로그래밍의 기초

by amoomar 2022. 2. 23.
반응형

해당 포스팅의 목차는 다음과 같다.

 

1. JSP의 기초
  1) JSP란?
  2) JAVA파일의 코드
  3) 예제_계산기, 3개의 정수 중 가장 큰 정수 결과 반환

 


 

1. JSP의 기초

 

1) JSP란?

 

JSP 란 JavaServer Pages 의 약자이며

HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.

JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고

그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

출처: https://javacpro.tistory.com/43

 

 

 

html파일에서는 변수를 선언하기 위해 JS의 도움이 필요하다는 한계점이 존재한다. 이 한계점을 극복하기 위한 해결방안인 JSP는 JAVA와 html템플릿을 연결하기 위해 생겨났다. html문서에 JAVA코드를 작성할 수 있다는 것이 JSP의 가장 큰 장점이다.

 

 

아래는 JSP의 파일내용이다. 11번 라인에 대한 부분은 실습 진행 중에 작성한 코드이니 참고 필요하다.

html파일과 비교했을때 1,2번 라인에 해당하는 내용이 추가된 것을 확인할 수 있다. 이때 <%@ page %>에 해당하는 내용은 페이지 지시어라고 한다.  JSP에서는 자동 임폴트가 되지 않는다. 따라서 페이지 지시어에서 임폴트에 대한 내용이 작성 가능하다.

 

형광펜으로 표시한 부분에 아래 사진과 같이 빨강색 밑줄이 생긴다면 서버 라이브러리의 추가가 진행되지 않은것이므로 프로젝트 우클릭->프로퍼티스->자바 빌드패스->add Library->Server Runtime->Apply->close를 진행하고 새로운 JSP파일을 생성하면 에러표시가 사라지게 된다.

 

오류 사진

 

 


 

2) JAVA파일의 코드_JSP

 

ⓐ JSP파일에서 생성된 JAVA파일의 확인경로

아래와 같은 경로로 접속하게 되면 사진과 같은 화면을 마주할 수 있게 된다.

 

workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\프로젝트명\org\apache\jsp

 

이때 파일 분석을 위해서는 java파일을 메모장으로 확인할 수 있고, class파일은 브라우저용이기에 확인이 어렵다. class파일이 없는 경우에는 해당 프로젝트 JSP파일의 아웃풋을 1회 이상 확인한다면 컴퓨터에 저장된다.

 


 

ⓑ init( ), destroy( )

파일을 확인하다보면 아래와 같은 메서드명을 확인할 수 있다.

이는 JSP 페이지 초기화와 종료 메서드로, JSP 페이지가 최초 생성시 호출되는 jspInit() 메서드와 종료(제거)시 호출되는 jspDestroy() 메서드가 존재한다. 즉, 연결과 연결해제의 역할을 담당하고있으며 JSP파일에 생명주기가 존재한다는 것을 알 수 있다.

 

ⓒ html에 직접 관여하는 try문

1. 페이지 선택자를 활용하여 java언어에 해당하는 코드를 작성하였기에 new Date부분은 온전한 JAVA문으로 인식하고 있다.

2. System.out에서 보았던 out과 동일한 객체이다.System이 없기 때문에 콘솔이 아닌 브라우저에서 출력될 예정이다.

3. out의 객체화 코드이다. 브라우저에 출력해달라는 의미로 해석가능하다.

4. 페이지 컨텍스트의 객체이다.

 



참조: https://dololak.tistory.com/508


 

3) 예제

 

① 계산기

주석이 상세하므로 설명을 생략하였다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="calc.CalcBean"%>
    
<% 
	int result=0;

	//초기로딩시 오류방지를 위한 코딩
	if(request.getMethod().equals("POST")){//요청하라는 부탁이 들어왔을때 실행
		//사용자가 요청(request)한 정보에서 num1(파라미터)값을 찾아내야함
		//이때 99%이상 모든 요청 정보는 string타입이다.
		int num1=Integer.parseInt(request.getParameter("num1"));
		int num2=Integer.parseInt(request.getParameter("num2"));
		String op=request.getParameter("op");
		
		if(op.equals("+")){
			result=num1+num2;
		}else if(op.equals("-")){
			result=num1-num2;
		}else if(op.equals("*")){
			 result=num1*num2;
		}else{
			System.out.println("없는 연산자입니다");
			//console은 로그 확인용 view
		}
	}

%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>계산기</h1>
<hr>
<form method="post"> <!-- 보내야할 데이터가 3개라서 많은 것 같아 post방식 사용 -->
	<input type="text" name="num1">
	<select name="op">
		<option selected="selected">+</option>
		<option>-</option>
		<option>*</option>
	</select>
	<input type="text" name="num2">
	<input type="submit" name="계산하기">
</form>
<hr>
계산결과 : <%= result %>
</body>
</html>

 

* 문제해결 *

 

실습 진행 중 위와 같은 오류를 발견하였다.

이때 url을 통해 사용자에게서 요청받은 num1을 찾지 못해서 발생한 문제로,

이를 해결하기 위해 if(request.getMethod().equals("POST"))가 true라면,

즉 사용자에게 요청하라는 부탁이 들어왔을때 로직이 실행될 수 있도록 하였다.

 

 


 

② 가장 큰 정수

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 <%
 	int max=0;
 
 	if(request.getMethod().equals("POST")){
 		int num1=Integer.parseInt(request.getParameter("num1"));
 		int num2=Integer.parseInt(request.getParameter("num2"));
 		int num3=Integer.parseInt(request.getParameter("num3")); 		
 		
 		if(num1>=num2 && num1>=num3){
 			max=num1;
 		}else if(num2>=num1 && num2>=num3){
 			max=num2;
 		}else if(num3>=num1 && num3>=num2){
 			max=num3;
 		}
 	}
 %>   
 	<%-- 페이지소스에 로직에 대한 주석이 드러나지 않도록 주석을 작성해보자! --%>
 	
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>큰 값 반환</h1>
<hr>
<form method="post"> <!-- 보내야할 데이터가 3개라서 많은 것 같아 post방식 사용 -->
	<input type="text" name="num1" required="required">
	<input type="text" name="num2" required="required">
	<input type="text" name="num3" required="required">
	<input type="submit" value="결과보기">
</form>
<hr>
가장 큰 수 : <%= max %>

</body>
</html>

 

 

 


 

 

반응형

'JSP' 카테고리의 다른 글

[View업그레이드] EL & JSTL  (0) 2022.03.03
[JDBC] MVC나누기_1 : 게시글  (0) 2022.03.02
[JDBC] Bean & JDBC연결  (0) 2022.03.01
[JSP] 내장객체  (0) 2022.02.25
[JSP] 서버프로그래밍_기초2  (0) 2022.02.24