ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • taglib문법
    JAVA/웹 프로그래밍 - JSP 2020. 11. 17. 11:01

    ${ } <- 값
    태그(html에서 넘어온 문법)와 setAttribute함수(자바 문법)에서 쓸 수 있다.

     

    새 프로젝트를 생성한다. 다이나믹 프로젝트로 만드는데 이름은 El 이라 하자.

    차분히 Next를 선택하다가 아래와 같이 Generate web.xml 을 체크한다.

    그리고 Finish를 선택한다.

    프로젝트 아이콘에 X가 뜰 때가 있다. 

    자바 버전이 맞지 않아서 그렇다.
    자바 버전을 맞추는 방법은 아래와 같다. 
    프로젝트를 선택하고 속성 탭을 선택
    프로젝트 facets를 선택해서
    자바에서 자기가 설치한 자바 버전을 맞추도록 한다.

    문제가 없으면 변경하지 않아도 된다.

     

    그리고, jstl-1.2.jar파일 복사해서 현재 프로젝트의 WebContent/WEB-INF/lib 폴더에 붙여넣기를 한다. 

    jstl-1.2.jar
    0.40MB

    그러면 아래와 같은 모습을 볼 수 있다.


    그리고 서버를 현재의 프로젝트로 설정을 한다.
    서버 탭에서 tomcat을 우클릭해서
    Add and remove선택해서 현재 프로젝트만 add하고 나머지는 remove한다.
    그리고 컨텍스트 경로를 다시 설정해주자.
    tocat을 더블클릭해서 modules로 가서 현재 프로젝트 선택하고
    Edit 눌러서 /만 입력하고 확인

     

    우선 서버가 여러 개가 있을 수 있다. 그러면 현재의 프로젝트를 제외한 나머지 프로젝트들의 서버를 중지해야 한다.

    위와 같이 서버 탭에서 Tomcat v9.0 마우스 우클릭해서 Add and Remove를 선택한다.

    위와 같이 현재 프로젝트만 오른쪽으로 남기고 나머지는 Remove버튼을 선택해서 모두 왼쪽으로 보낸댜.

    그리고 Finish를 선택한다.

    그리고 Context path를 설정하자.

    그리고 다시 서버 탭으로 넘어와서 Tomcat v9.0을 더블 클릭하자.

    그리고 좌측 하단의 Modules를 선택한다.

    그리고 아래에서 Document Base El을 선택하고 Edit 를 클릭해서 아래와 같이 /만 적는다.

    그리고 세이브를 한다.

     

    그리고 서버가 제대로 동작되는지 확인하자.

    webcontent에 index.jsp 파일을 만들어서 내용을 입력하고 실행하자.

    index.jsp

    <%@ 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>
    	index.jsp
    </body>
    </html>

     

     

    FormEL.jsp 파일을 만들자.

    FormEL.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>FormEL.jsp</title>
    </head>
    <body>
    	
    	<form action="paramEL.jsp">
    		이름 : <input type="text" name="name"><p>
    	
    		좋아하는 프로그래밍 언어를 선택하세요.<br>
    		<input type="checkbox" name="lang" value=C>C
    		<input type="checkbox" name="lang" value=C++>C++
    		<input type="checkbox" name="lang" value=JAVA>JAVA
    		<input type="checkbox" name="lang" value=Python>Python
    		<p>
    		
    		<input type="submit" value="전송"><p>
    	</form>
    		
    </body>
    </html>

     

     

    다중 선택시 모두 선택을 반드시해야 오류가 안 뜬다.
    그 이유는 nullpoint 에러가 발생한다.
    그래서 값이 비어있으면 안된다.
    표현하는 방법만 알아보는 것이므로 지금현재는 모두 선택 해야 한다.
    값을 확인하는 작업을 하지 않고 있다.

    paramEL.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>paramEL.jsp</title>
    </head>
    <body>
    <!--  -->
    -------------------------------------------------------------<p>
    	이름 : ${param.name}<p>
    	이름 : <%=request.getParameter("name") %><p>
    	<%request.setAttribute("name","김길동"); %>
    	이름 : ${name}<p>	<!-- 저장소에 있는 name을 출력. name은 변수이다. -->
    	이름 : ${param.name}<p>
    	이름 : ${"박길동"}<p>
    -------------------------------------------------------------<p>
    <!--다중 선택-->
    	좋아하는 과목 : 
    	${paramValues.lang[0]},
    	${paramValues.lang[1]},
    	${paramValues.lang[2]},
    	${paramValues.lang[3]} <p>
    -------------------------------------------------------------<p>
    내장객체를 이용한 EL표현<p>
    <!--pageContext 내장 객체, request 객체를 사용해도 된다.-->
    	<% pageContext.setAttribute(
    			"subjects", new String[]{"C","C++","JAVA","Python"}); 
    			%><p>
    	${subjects[0]},	${subjects[1]},	${subjects[2]},	${subjects[3]}<p>
    -------------------------------------------------------------<p>
    폼에서 전송된 이름이 같은 데이터<p>
    <%String [] lang = request.getParameterValues("lang"); %>
    <%=lang[0] %>,<%=lang[1] %>,<%=lang[2] %>,<%=lang[3] %><p>
    <% pageContext.setAttribute("langs",lang); %>
    ${langs[0]},${langs[1]},${langs[2]},${langs[3]}<p>
    -------------------------------------------------------------<p>
    
    </body>
    </html>

     

     

    여러가지 List에 대해 알아보자.

    WebContent폴더에 list.jsp 파일을 만들자.

    우선 아래의 내용은 ArrayList에 대한 내용이다.

    list.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.List" %>		<!-- List를 사용하기 위해 임포트 -->
    <%@ page import="java.util.ArrayList" %><!-- ArrayList를 사용하기 위해 임포트 -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>list.jsp</title>
    </head>
    <body>
    	
    	<% List<String> list = new ArrayList<String>(); 
    	
    	list.add("111");
    	list.add("222");
    	list.add("333");
    	pageContext.setAttribute("list",list);
    	%>
    	
    	${list[1]}
    </body>
    </html>

     

    아래는 LinkedList에 대한 내용이다.

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.List" %>		<!-- List를 사용하기 위해 임포트 -->
    <%@ page import="java.util.ArrayList" %><!-- ArrayList를 사용하기 위해 임포트 -->
    <%@ page import="java.util.LinkedList" %><!-- LinkedList를 사용하기 위해 임포트 -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>list.jsp</title>
    </head>
    <body>
    	
    	<% //List<String> list = new ArrayList<String>(); 
    	List<String> list = new LinkedList<String>(); 
    	
    	list.add("111");
    	list.add("222");
    	list.add("333");
    	pageContext.setAttribute("list",list);
    	%>
    	<%=list.get(2)%>
    	${list[1]}
    </body>
    </html>

     

     

    그리고, 아래는 HashMap에 대한 내용이다.

    list.jsp파일에 아래의 내용을 복사해서 그 실행시켜 그 결과를 보자.

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.List" %>		<!-- List를 사용하기 위해 임포트 -->
    <%@ page import="java.util.ArrayList" %><!-- ArrayList를 사용하기 위해 임포트 -->
    <%@ page import="java.util.LinkedList" %><!-- LinkedList를 사용하기 위해 임포트 -->
    <%@ page import="java.util.Map" %>		<!-- Map을 사용하기 위해 임포트 -->
    <%@ page import="java.util.HashMap" %>	<!-- HashMap을 사용하기 위해 임포트 -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>list.jsp</title>
    </head>
    <body>
    -------------------------<p>
    	LIST<p>
    -------------------------<p>	
    	<% //List<String> list = new ArrayList<String>(); 
    	List<String> list = new LinkedList<String>(); 
    	
    	list.add("111");
    	list.add("222");
    	list.add("333");
    	pageContext.setAttribute("list",list);
    	%>
    	<%=list.get(2)%>
    	${list[1]}<p>
    	
    -------------------------<p>
    	MAP<p>
    -------------------------<p>	
    	<% 
    	Map<String,String> map = new HashMap<String,String>();
    	map.put("1","a");
    	map.put("2","b");
    	map.put("3","c");
    	pageContext.setAttribute("map",map);
    	%>
    	<%=map.get("2") %>
    	${map["1"]}
    </body>
    </html>

     

     

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.List" %>		<!-- List를 사용하기 위해 임포트 -->
    <%@ page import="java.util.ArrayList" %><!-- ArrayList를 사용하기 위해 임포트 -->
    <%@ page import="java.util.LinkedList" %><!-- LinkedList를 사용하기 위해 임포트 -->
    <%@ page import="java.util.Map" %>		<!-- Map을 사용하기 위해 임포트 -->
    <%@ page import="java.util.HashMap" %>	<!-- HashMap을 사용하기 위해 임포트 -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>list.jsp</title>
    </head>
    <body>
    -------------------------<p>
    	LIST<p>
    -------------------------<p>	
    	<% //List<String> list = new ArrayList<String>(); 
    	List<String> list = new LinkedList<String>(); 
    	
    	list.add("111");
    	list.add("222");
    	list.add("333");
    	pageContext.setAttribute("list",list);
    	%>
    	<%=list.get(2)%>
    	${list[1]}<p>
    	
    -------------------------<p>
    	MAP<p>
    -------------------------<p>	
    	<% 
    	Map<String,String> map = new HashMap<String,String>();
    	map.put("Insert.do","class insert");
    	map.put("List.do","class select");
    	map.put("Delete.do","class delete");
    	map.put("Update.do","class update");
    	pageContext.setAttribute("map",map);
    	%>
    	<%=map.get("Insert.do") %>
    	${map["Delete.do"]}
    </body>
    </html>

     

     

     

    아래는 Map에 키 값을 정수값으로 사용하는 방법이다.

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.List" %>		<!-- List를 사용하기 위해 임포트 -->
    <%@ page import="java.util.ArrayList" %><!-- ArrayList를 사용하기 위해 임포트 -->
    <%@ page import="java.util.LinkedList" %><!-- LinkedList를 사용하기 위해 임포트 -->
    <%@ page import="java.util.Map" %>		<!-- Map을 사용하기 위해 임포트 -->
    <%@ page import="java.util.HashMap" %>	<!-- HashMap을 사용하기 위해 임포트 -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>list.jsp</title>
    </head>
    <body>
    -------------------------<p>
    	LIST<p>
    -------------------------<p>	
    	<% //List<String> list = new ArrayList<String>(); 
    	List<String> list = new LinkedList<String>(); 
    	
    	list.add("111");
    	list.add("222");
    	list.add("333");
    	pageContext.setAttribute("list",list);
    	%>
    	<%=list.get(2)%>
    	${list[1]}<p>
    	
    -------------------------<p>
    	MAP<p>
    -------------------------<p>	
    	<% 
    	Map<Integer,String> map = new HashMap<Integer,String>();
    	map.put(1,"a");
    	map.put(2,"b");
    	map.put(3,"c");
    	pageContext.setAttribute("map",map);
    	%>
    	<%=map.get(2) %>
    	${map[1]}
    </body>
    </html>

     

    사칙 연산을 해보자.

    계산하자. 값을 입력할 때 Exception에 위배되지 않게 값을 주자.
    예를 들어, 4 / 0 과 같은상황은 피하자.

    CalForm.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Calform.jsp</title>
    </head>
    <body>
    	<form action="calForm_proc.jsp">
    		x : <input type="text" name="x"><p>
    		y : <input type="text" name="y"><p>
    		<input type="submit" value="계산">
    	</form>
    </body>
    </html>

     

     

    연산자를 문자로도 사용할 수 있도록 만들어 두었다.

    calForm_proc.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>EL식으로 계산하기(산술연산)</title>
    </head>
    <body>
    	더하기 :	${param.x + param.y}<br>
    	빼기 :  	${param.x - param.y}<br>
    	곱하기 :	${param.x * param.y}<br>
    	나누기 :	${param.x / param.y}<br>
    	나머지 : 	${param.x % param.y}<br>
    	나누기 :	${param.x div param.y}<br>
    	나머지 : 	${param.x mod param.y}<br>
    </body>
    </html>

     

     

    논리 관계 연산

    아래를 실행시켜서 그 결과를 확인하자.

    empty라는 단어를 사용해서 비었는지 아닌지를 확인할 수 있다.

    Logic_Relative.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Logic_Relative.jsp(논리_관계 연산)</title>
    </head>
    <body>
    논리연산<p>
    	AND 연산 : ${true && true}, ${true and false}<p>
    	OR 	연산 : ${true || true}, ${true or false}<p>
    	NOT 연산 : ${!true}, ${not false}<p>
    관계연산<p>
    > 	: ${10 > 11},  ${10 gt 11}<p>
    < 	: ${10 < 11},  ${10 lt 11}<p>
    >= 	: ${10 >= 11}, ${10 ge 11}<p>
    <= 	: ${10 <= 11}, ${10 le 11}<p>
    == 	: ${10 == 11}, ${10 eq 11}<p>
    != 	: ${10 != 11}, ${10 ne 11}<p>
    <% pageContext.setAttribute("title", "logic"); %>
    비어있다.empty : ${empty title}, ${empty title2}<p>
    
    </body>
    </html>

     

     

    Ctag.jsp파일을 WebContent폴더에 만든다.

    Ctag.jsp 파일 내용

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>c lib tag (C tag.jsp)</title>
    </head>
    <body>
    	<c:out value="${'hello'}" />
    	<c:set var="i" value="${1}" />	<!-- set은 변수 선언 -->
    	<c:remove var="i"/>  			<!-- i변수를 제거 -->
    	
    	<!-- 반복문 -->
    	<c:forEach var="i" begin="${1}" end="${10}">
    		Hi
    	</c:forEach>
    	
    	<!-- if문장 -->
    	<c:if test="${1!=0}">
    		참 입니다.
    	</c:if>
    	
    	<!-- if ~ else 문장 -->
    	<c:choose>
    		<c:when test="${10>9}">
    			참일 때 실행
    		</c:when>
    		<c:otherwise>
    			거짓일 때 실행
    		</c:otherwise>
    	</c:choose>
    	
    </body>
    </html>

     

    Ctag.jsp를 실행하면 다음과 같은 결과를 볼 수 있다.

     

     

     

    인클루드에 대해 알아보자.

    header.jsp, body.jsp, footer.jsp를 다음과 같이 만들자.

    header.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <div>
    header
    </div>

     

    body.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <div>
    body
    </div>

     

    footer.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <div>
    footer
    </div>

     

    index.jsp

    더보기
    <%@ 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>
    	<jsp:include page="header.jsp"></jsp:include>
    	<jsp:include page="body.jsp"></jsp:include>
    	<jsp:include page="footer.jsp"></jsp:include>
    </body>
    </html>

    index.jsp를 실행하면 다음과 같은 결과를 얻을 수 있다.

     

    'JAVA > 웹 프로그래밍 - JSP' 카테고리의 다른 글

    게시판 만들기 - 2. 로그인 폼 만들기  (0) 2020.11.23
    게시판 만들기 - 1. 기본 설정  (0) 2020.11.20
    MVC(Model View Control)2  (0) 2020.11.13
    MVC(Model View Control)1  (0) 2020.11.11
    간단한 게시판 만들기  (0) 2020.11.09

    댓글

Designed by Tistory.