이것저것

[Spring] JSTL 사용하기 본문

Spring

[Spring] JSTL 사용하기

곰태태 2020. 6. 16. 17:48
반응형
SMALL

tigerView에서 홈으로 이동하는 url을 집어넣어주기 위해서 jstl을 사용할 것이다.

jstl은 index.jsp의 위쪽을 보면 아래와 같이 코드가 있을 것이다.

이 jstl 코드를 쓰기 위해서 pom.xml에 dependency로 이미 설치를 해주었다.

우선 t5 controller를 만들고 index.jsp에 링크 5를 만들어준다.

그리고 tigerView에서 home으로 가는 링크를 만들기 위해서 jstl을 사용할 것이다.

c:url을 사용해 home으로 가는 태그를 생성해준다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>tiger View</h1>
	<!-- <c:url value='index.jsp' /> -->
	<a href="<c:url value='index.jsp' />">Home</a>
</body>
</html>

 

 

controller에서 배열을 불러오는 법이다.

controller에 배열을 생성해주고 tigerView.jsp에서 c:forEach문을 사용한다.

package pack01;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class tiger {
	
	
	@RequestMapping("/t8")
	public String func08(Model m) {
		String ar[] = {"호랑이", "고양이", "강아지", "고슴도치"};
		System.out.println("f8");
		m.addAttribute("ar", ar);
		return "tigerView";
	}
}

tigerView에 jstl이 없으면 c:forEach문을 쓸 수 없다. 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>tiger View</h1>
	<!-- <c:url value='index.jsp' /> -->
    <% String name = (String)request.getAttribute("name"); %>

	<% String age = (String)request.getAttribute("age"); %>
    
    <%= name %>
	<%= age %>
	<a href="<c:url value='index.jsp' />">Home</a>
	<ul>
		<c:forEach var="im" items="${ar}">
			<li>${im}</li>
		</c:forEach>
	</ul>
</body>
</html>

c:forEach는 ar이라는 아이템을 가지고 var의 im에 하나씩 넣어주겠다. 라는 뜻이다.


Apple.java를 생성해줘서 Apple에 name과 age객체를 생성해주었다.

package pack01;

public class Apple {
	String name;
	int age;
	
	public Apple(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
}

 

그리고 tiger.java에서 Apple 객체를 생성해준다. 그리고 Model을 사용해서 Apple을 가져온다

package pack01;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class tiger {
	
	@RequestMapping("/t9")
	public String func09(Model m) {
		Apple apple = new Apple("호랑이", 30);
		m.addAttribute("apple", apple);
		System.out.println("f9");
		return "tigerView";
	}

}

 

tigerView에서는 h1태그에 ${apple.name}을 이용해서 출력해준다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>tiger View</h1>
	
	<h1>${apple.name}</h1>
	<h1>${apple.age}</h1>
	
</body>
</html>

Apple 객체를 이용해서 배열을 생성한 뒤 배열을 list로 출력해준다.

package pack01;

import java.util.LinkedList;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class tiger {
	
	@RequestMapping("/t10")
	public String func10(Model m) {
		Apple ar2[] = {
				new Apple("호랑이", 30), 
				new Apple("독수리", 40),
				new Apple("코끼리", 50)};
		m.addAttribute("ar2", ar2);
		System.out.println("f10");
		return "tigerView";
	}
	
}

 

tigerView에는 c:forEach를 사용했던 것을 응용해서 Apple 배열을 출력해준다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>tiger View</h1>
    
	<h1>${apple.name}</h1>
	<h1>${apple.age}</h1>
	
	<ul>
		<c:forEach var="apple" items="${ar2}">
			<li>${apple.name}, ${apple.age}</li>
		</c:forEach>
	</ul>
</body>
</html>

LinkedList를 사용할 것이다.

LinkedList<>의 형식을 사용한다.

li를 새로운 객체로 생성해 주면 li는 자료를 관리하는 주체가 된다.

package pack01;

import java.util.LinkedList;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class tiger {
	@RequestMapping("/t11")
	public String func11(Model m) {
		LinkedList<String> li = new LinkedList<String>();
		li.add("호랑이2");
		li.add("코끼리2");
		li.add("독수리2");
		m.addAttribute("li", li);
		System.out.println("f11");
		return "tigerView";
	}
	
}

 

마찬가지로 tigerView에 forEach를 사용해서 출력해주자

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>tiger View</h1>
	<h1>${apple.name}</h1>
	<h1>${apple.age}</h1>
	
	<ul>
		<c:forEach var="apple" items="${ar2}">
			<li>${apple.name}, ${apple.age}</li>
		</c:forEach>
	</ul>
	
	<ul>
		<c:forEach var="list" items="${li}">
			<li>${list}</li>
		</c:forEach>
	</ul>
	
</body>
</html>

LinkList에 String대신에 Apple 객체를 사용할 것이다.

Apple은 name과 age 두 개를 가지고 있으니 age도 적어줘야지 오류가 나지 않는다.

package pack01;

import java.util.LinkedList;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class tiger {
	
	@RequestMapping("/t12")
	public String func12(Model m) {
		LinkedList<Apple> li2 = new LinkedList<Apple>();
		li2.add(new Apple("호랑이3", 50));
		li2.add(new Apple("강아지", 20));
		li2.add(new Apple("고양이", 25));
		m.addAttribute("li2", li2);
		System.out.println("f12");
		return "tigerView";
	}
}

 

tigerView에서 forEach를 이용해서 출력해준다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>tiger View</h1>
	<h1>${apple.name}</h1>
	<h1>${apple.age}</h1>
	
	<ul>
		<c:forEach var="apple" items="${ar2}">
			<li>${apple.name}, ${apple.age}</li>
		</c:forEach>
	</ul>
	
	<ul>
		<c:forEach var="list" items="${li}">
			<li>${list}</li>
		</c:forEach>
	</ul>
	
	<ul>
		<c:forEach var="al" items="${li2}">
			<li>${al.name}, ${al.age}</li>
		</c:forEach>
	</ul>
	
</body>
</html>

반응형
LIST

'Spring' 카테고리의 다른 글

[Spring] Mybatis  (0) 2020.06.19
[Spring] ajax로 페이지 refresh없이 출력하기  (0) 2020.06.18
[Spring] axios로 spring 구현  (0) 2020.06.18
[Spring]환경설정(약식2)  (0) 2020.06.15
[Spring] Spring 환경설정(약식)  (0) 2020.06.11
Comments