서블릿으로 화면 구현 시 문제점

    기존 서블릿에는 자바 코드를 기반으로 문자열을 사용해 html와 자바스크립트로 화면을 구현했다.

    JSP는 이와 반대로 html, css, 자바스트립트를 기반으로 JSP 요소들을 사용해 화면을 구현한다.

     

    서블릿 자바+화면구현디자인 분리가 안되어있음 유지보수에 합리적이지 않다.

    JSP => view 부분을 JSP단으로 분리

    처리하는 기능, 화면디자인 분리했다.

     

    자바빈(클래스의 또 다른 용어)

     

    JSP는 view단을 위해 존재하고 Servlet은 Controller역할(클라이언트에서 받았을때 필터링)을 한다.

     

    JSP의 3단계 작업과정

    클라이언트가 웹브라우저로 JSP를 호출하면 JSP-> .java로 변경됨 => 컴파일자동(class) => 브라우저에 응답 (반복 

     


    JSP의 내장객체

    new를 해주지않아도 사용가능한 객체

     

    기본 작성 경로 예제

    <%-- <%@부분은 페이지 지시자이다. 페이지 속성이나 improt할때 자주 사용함. --%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
    </head>
    <body>
    	<h1>안녕하세요. JSP파일입니다.</h1>
    	<h1>정답은 HTML코드로 합니다.</h1>
    </body>
    </html>
    
    <!-- 실제 hello_jsp.java, hello_jsp.class파일을 확인하는 경로 
    C:\workspace-jsp\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\Chap05_JSP-01\org\apache\jsp -->

    경로 java, class 파일위치

    C:\workspace-jsp\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\Chap05_JSP-01\org\apache\jsp

     


    스크립트릿 사용 예제

    <%JAVA%> 예제

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>스크립트릿</title>
    </head>
    <body>
    	<%
    		int i = 0;
    		while(true){
    			i++;
    			//out 내부객체
    			out.println("2 * " +i+ " = " +2*i+ "<br/>");
    			
    	%> 
    	
    	======================================<br/>
    	
    	<%
    			if(i >= 9)
    				break;
    		}
    	
    	
    	%>
    </body>
    </html>


    <%= %> 표현식 예제

    <%@page import="java.util.Calendar"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
    </head>
    <body>
    	<%
    		Calendar calendar = Calendar.getInstance();
    		int hour = calendar.get(Calendar.HOUR_OF_DAY);
    		int minute = calendar.get(Calendar.MINUTE);
    		int second = calendar.get(Calendar.SECOND);
    	%>
    	<!-- 표현식으로 출력 -->
    	<h1>현재시간 : <%=hour%>시 <%=minute%>분 <%=second%>초입니다.</h1>
    	
    </body>
    </html>


    스크립트릿 중간에 html 넣기 예제

    <%@page import="java.util.Calendar"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
    </head>
    <body>
    	<%
    		Calendar calendar = Calendar.getInstance();
    		int hour = calendar.get(Calendar.HOUR_OF_DAY);
    		int minute = calendar.get(Calendar.MINUTE);
    		int second = calendar.get(Calendar.SECOND);
    	%>
    	<!-- 표현식으로 출력 -->
    	<h1>현재시간 : <%=hour%>시 <%=minute%>분 <%=second%>초입니다.</h1>
    	
    	<%
    		if(hour >= 12) {
    	%> 
    		<h2>오후입니다.</h2>
    	<%
    		}else {
    	%>
    	    <h2>오전입니다.</h2>
    	<%
    			
    		}
    	%>
    </body>
    </html>


    <%! %> 선언문 

    전역으로 선언됨

    표현식에는 ;을 붙이지 않음

    <%@page import="java.util.Calendar"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>선언문, 표현식</title>
    </head>
    <body>
    	<%!
    		int i = 10;
    		String str = "이순신";
    		
    		public int add(int x, int y){
    			return x+y;
    		}
    	%>
    	<!-- 표현식에는 ;을 붙이지 않음 -->
    	<%=i %><br/>
    	<%=str %><br/>
    	<%=add(100,2) %>
    	
    </body>
    </html>


    스크립트릿 스코프 예제

    <%@page import="java.util.Calendar"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>선언문, 표현식</title>
    </head>
    <body>
    	<%-- 선언부는 전역스코프 --%>
    	<%!
    		public int sum() {
    			int total = 0;
    			for(int i=0; i<=100; i++){
    				total += i;
    			}
    			return total;
    		}
    	%>	
    	
    	<%
    		String str = "1부터 100까지의 합";
    	%>
    	
    	<h2><%= str %>은 <b><%=sum() %>입니다.</b></h2>
    	
    	<!-- 1부터 100까지의 합에 3을 곱하면 15150입니다. -->
    	<h2><%= str %>에 3을 곱하면 <b><%=sum() * 3 %>입니다.</b></h2>
    	
    	<!-- 1부터 100까지의 합에 1000을 나누면 5.05가 됩니다. -->
    	<h2><%= str %>에 1000을 나누면 <b><%=sum() / 1000.0 %>가 됩니다.</b></h2>
    	
    </body>
    </html>

    스크립트릿 예제

    <%@page import="java.util.Calendar"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>선언문, 표현식</title>
    </head>
    <body>
    	<%!
    		int i = 10;
    		String str = new String("abcde");
    		
    		public int add(int x, int y){
    			return x+y;
    		}		
    	%>
    	
    	id값 : <% out.println(i + "<br/>"); %>
    	str값 : <% out.println(str + "<br/>"); %>
    	add(100, 500)값 : <% out.println(add(100, 500)); %>
    </body>
    </html>

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading