JSP(MVC)

[JSP] JSP 완벽 정리

원코딩 2022. 7. 15. 10:31

 

 

 

드디어  JSP를 배운다.

본격적인 화면 출력을 할 수 있게 되었다.

배우게 되는 내용은 방대하지만 

즐거운 마음으로 임하자 :)

 

 

 

아래의 내용은 

JSP의 목차와도 같은 부분이다. 

세부적인 내용은 천천히 다루도록 하겠다. 

 

 

 

 

 

   주석  사용법   


<%-- 여기 안에서 주석 사용 할거예요 --%>

<%-- --%> : HTML과 JAVA를 동시에 주석 처리 할 수 있다. 

 

<%--
     HTML + JAVA 를 동시에 주석 

--%>



   

 

  지시자  


1. page

JSP문서에 대한 정보를 나타내는 지시자 이다. 

contentType : 해당 문서를 HTML로 변환할건지 , XML로 변환할 건지 등을 결정한다. 또한 한글 변환을 선택할 수 있다.

errorPage : 페이지에서 에러가 났을 때 안내 문구 또는 이미지를 지정 할 수 있다.

buffer : HTML을 출력하는 메모리 공간을 나타낸다. 기본 8kb이며 16kb로 늘릴 수 있다. 

import : 외부 라이브러리 / 자바 라이브러리를 가져올 수 있다. 

* page지시자 중 import문만 동시에 여러개 사용이 가능하다. 아래의 표 참고  

한줄에 여러개 
<%@ page import="java.util.*, java.io.*"%>

각자 선언하기
<%@ page import ="java.util.*"%>
<%@ page import ="java.op.*"%>

 

 

 

2. taglib 

자바 제어문, 자바 변수 선언, 화면 이동 , 날짜 변경, String  함수 등이 tag로 형태로 만들어져 있다.

태그를 사용하면 간단한 입력이 가능하다. 

자바와 HTML문을 동시에 사용하면 굉장히 복잡하기 때문에 아래와 같이 태그를 이용하여FOR문을 출력 한다. (JSTL)

<c:forEach var="i" begin="1" end="100" step="1">
	<c:if test="i%2==0">
    	${i}&nbsp;
    </c:if>
</c:forEach>

 

 

3. include

조립식 형태이다. JSP안에 다른 다른 JSP를 첨부해서 사용이 가능하다.

파일을 나눠서 작업 후에 조립한다. 보통의 웹 사이트가 이러한 형태로 구성되어 있다. 
  

 

 

 

 


   스크립트    


1.스크립트릿 

<%    %> 

일반 자바 문을 입력할 때 사용된다. 

_jspService() 영역에서 사용된다. 

<%
     여기는 자바 코딩이 들어가는 위치 
     = 변수 선언
     = 제어문 
     = (<% %>)영역 안에서는 주석 : 자봐와 동일  //, /* */
%>

 

2. 표현식

<%=   %>

브라우저 변수 출력에 사용된다. out.println()과 같은 역할

_jspService() 영역에서 사용된다. 

 

 

3. 선언식

<%!    %> 

메소드 선언, 멤버 변수 선언 등을 하며 사용빈도가 많지는 않다.  

class 영역에서 사용된다. 

 

 

 


   내장 객체   


미리 객체를 생성를 생성해서 사용이 가능하게 만든다. 9개 정도 있다.

 

1.request

사용자 요청 값

한 번 사용하면 메모리에서 삭제되는 값이다. 

session이 static 변수라면 request는 지역변수와 같은 역할

 

2.response

응답 (화면 변환)

 

3.session

서버 일부 정보를 저장한다. 모든 JSP에서 사용이 가능하다.(static) 

로그인 후 예매를 할 때 다시 아이디를 입력하지 않는 것처럼

브라우저 실행 중에는 session 안에 있는 id를 사용한다. 

 

4. application

서버 정보를 가지고 있다. 

getRealPath() , 로그파일 

<body>
        <%= application.getRealPath("/") %>
</body>

위와 같이 입력 후 실행하면, 톰캣이 실제로 읽어가는 '실제 저장 경로'를 확인 할 수 있다. 

 

5.pageContext

페이지를 연결할 때 사용한다. 

include() : 홈페이지의 로고, 로그인 정보, 네비게이션 바는 고정되어 있는 것처럼 고정되어 있는 부분을 지정할 때 사용된다. 보통 헤더와 풋터는 include를 이용하여 고정되어 있다. 

forward() 

 

6.page

this와 같은 역할이다. 자신을 나타낸다. 

 

7.config 

환결설정에 사용된다. web.xml

 

8.exception 

예외처리 구간이다. 잘 사용하지 않으며 

실무에서는 try ~ catch문을 사용한다. 

 

9.out

화면 출력 부분이다.

out.print() 

<%= %> 

 

 

 

 

 

 

 

   JSP  액션 태그    


JSP에서 제공하는 태그이며 소스량을 줄일 수 있다. xml형식으로 되어 있다. 

 

1.<jsp:include> : 화면 조립

2.<jsp:useBean> : 객체 메모리 할당

3.<jsp:setProperty> : setter에 값을 채운다.  (밑의 소스 확인 하기 = 소스량을 확연히 줄인다)

사용자 > 이름, 성별, 주소, 전화, 소개

String name=request.getParameter("name");
String sex=request.getParameter("sex");
String addr=request.getParameter("addr");
String tel=request.getParameter("tel");
String content=request.getParameter("content");

MemberVO vo=new MemberVO();
vo.setName(name);
vo.setSex(sex);
vo.setAddr(addr);
vo.setTel(tel);
vo.setContent(content);

위의 문장을 아래의 한줄로 요약 가능하다. 
<jsp:setProperty name="vo" property="*">

4<jsp:getProperty> : 받은 데이터를 출력한다. getter의 역할 

 

 

 

 

 


   Cookie   


클라이언트의 정보를 저장하고 있다. 

최신 방문 내역 등을 확인 할 때 사용된다. 

예를 들어 쇼핑몰이라면  "최근 본 목록" 등을 출력하게 할 수 있다. 

내장 객체가 아니기 때문에 직접 생성해야 한다. 

 

세션과 쿠키 모두 사용자의 흔적을 저장하지만 저장 경로에 따라 차이점이 존재한다. 

세션은 서버에 저장하는 것이고 쿠키는 클라이언트에 저장한다. 

 

개인 노트북에 id/pwd 정보를 저장해도 피씨방에서 홈페이지에 로그인 할 때 아무런 정보를 불러올 수 없는 이유는

세션이 아닌 쿠키로 저장되었기 때문이다. 쿠키는 클라이언트 즉, 사용자의 컴퓨터 안에만 저장된다.

 

 

 

 


   EL / JSTL   


 

EL과 JSTL은 불필요한 자바 코딩을 하지 않기 위해 사용된다. 

JSP문서에서 자바코딩을 하게 되면 <% %> 을 반복적으로 사용해 가독성이 떨어진다. 

EL JSTL
화면 출력  태그형
${ }  <c:forEach> , <c:if> ... 등
<%= %> 대신 사용됨  for문, if문 대신 사용됨

 

 

 

 


   MVC   


자바와 HTML을 분리 하는 구조이다. 

자바는 객체지향 언어로 확장성이 좋고 재사용이 편리하다. 

그러나 HTML과 함께 사용한다면 이러한 이점을 완벽히 누릴 수 없기 때문에

자바와 HTML을 분리함으로써 자바의 장점을 100프로 연출하게 된다. 

확장성재사용성은 유지보수에 필수적인 요소이기 때문에 일반적인 회사 등에서는 MVC 구조를 사용한다. 

 

JSP는 절차적 언어이다. 즉 재사용이 불가능하다. 실무에서는 거의 사용되지 않는다. 이러한 방식을 model1이라고 한다. 

MVC는 객제치향 언어이다. 즉 재사용이 가능하다. model2 방식이다. 

 

 

 

2022.07.26 - [MVC 구조] - [MVC] MVC 구조가 필요한 이유와 기능 + DAO, DTO, VO 구분

 

[MVC] MVC 구조가 필요한 이유와 기능 + DAO, DTO, VO 구분

jsp를 배우면서 정말 머리 아팠던건 자바와 다양한 웹 언어들이 뒤죽박죽 섞여서 보기에도 작성하기에도 매우 불편하다는 거다. 오늘 다루려고 하는 MVC 구조는 바로 이와 같은 문제를 해결해준

codingwone.tistory.com