목차 | |
1. | 설정 |
2. | 기초 |
1. 설정
D드라이브에서 폴더 하나를 생성함 -> 이클립스에서 File > Switch > workspace > other에서 생성했던 폴더를 선택함
- utf-8
- jdk
- compiler
- 톰캣 다운로드
- 톰캣 연결
- Dynamic Project 생성
만약 web.xml 없다면...
- servers 설정
- package Explorer
- 파일 생성 및 실행
- JSTL 다운로드
- JSTL 파일 연결
※ java와 webapp 파일은 합치면 안 됨!! 합친 순간 java의 성격을 잃어버리고 복구 안 됨
2. 기초
▣ web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>jstl_study</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
▣ 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>
<h1>Hello JSP World~!!</h1>
<!-- 스크립틀릿 방식 -->
<% for (int i = 0; i < 10; i++){ %>
<h1><%= i %></h1>
<% } %>
<a href="step-1.jsp?name=홍길동&age=12"> step-1.jsp로 이동</a>
<a href="step-2.jsp?name=귤&addr=제주"> step-2.jsp로 이동</a>
</body>
</html>
▷ 출력
▣ step-1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>step-1.jsp</h1>
<!-- queryString에서 보낸 데이터 받기 param.key -->
<!-- EL 방식으로 받기 -->
<h3>index.jsp에서 보낸 데이터</h3>
<h3>이름 : ${param.name }</h3>
<h3>나이 : ${param.age }</h3>
<!-- c:if : if명령어 JSTL 명령어 - 별도의 라이브러리 생성 -->
<!-- test = "조건식 eq ne" name eq 홍길동 -->
<c:if test="${param.age <= 18 }">
<h3>${param.name }님은 미성년자입니다.</h3>
</c:if>
<!-- queryString name=귤&addr=제주 step-2.jsp 보내고 -->
<!-- step-2.jsp 생성 후 상품명: 귤 / 원산지: 제주 출력 -->
</body>
</html>
▷ 출력
▣ step-2.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>
<h1>step-2.jsp</h1>
<!-- el 방식으로 파라미터 받기 -->
<h3>상품명: ${param.name }</h3>
<h3>원산지: ${param.addr }</h3>
<h2>스클립틀릿 방식으로 파라미터 받기</h2>
<h3>상품명: <%= request.getParameter("name") %></h3>
<h3>원산지: <%= request.getParameter("addr") %></h3>
<!-- form tag로 데이터 전송 -->
<!-- queryString 방식은 get방식으로 전송 -->
<!-- form tab에서 데이터를 전송하는 방식 get / post 방식 중 선택 가능 생략하면 get -->
<form action="step-3.jsp">
이름 : <input type="text" name="name"> <br>
나이 : <input type="text" name="age"> <br>
<button type="submit">step-3.jsp로 전송</button>
</form>
</body>
</html>
▷ 출력
▣ step-3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>form 태그로 전달한 파라미터 받기</h1>
<!-- EL 태그 방식은 내부적으로 형변환을 하여 연산이 가능함 -->
<h3>이름 : ${param.name }</h3>
<h3>나이 : ${param.age-1 }</h3>
<hr>
<!-- 스크립틀릿 방식으로 파라미터 가져오기 -->
<!-- java에서는 파라미터로 가져오는 값은 무조건 String. 연산 불가능. 형변환 필요 -->
<h3>이름 : <%= request.getParameter("name") %></h3>
<h3>나이 : <%= Integer.parseInt(request.getParameter("age"))-1 %></h3>
<!-- taglib 선언 후 c:if 이용하여 나이가 20세 이상이면 성인입니다 라고 출력 -->
<c:if test="${param.age >= 20}">
<h3>${param.name }님은 성인입니다.</h3>
</c:if>
<!-- c:choose를 사용하여 다중조건 처리 -->
<!-- age 18세 이상은 성인 / 15세 이상은 청소년 / 5세 이상은 어린이 / 나머지는 유아 -->
<!-- c:choose c:when / c:otherwise -->
<c:choose>
<c:when test="${param.age >= 18 }">
<h3>${param.name }님은 ${param.age } / 성인입니다.</h3>
</c:when>
<c:when test="${param.age >= 15 }">
<h3>${param.name }님은 ${param.age } / 청소년입니다.</h3>
</c:when>
<c:when test="${param.age >= 5 }">
<h3>${param.name }님은 ${param.age } / 어린이입니다.</h3>
</c:when>
<c:otherwise>
<h3>${param.name }님은 ${param.age } / 유아입니다.</h3>
</c:otherwise>
</c:choose>
<hr>
<form action="step-4.jsp">
<input type="checkbox" name="food" value="바나나">바나나<br>
<input type="checkbox" name="food" value="귤">귤<br>
<input type="checkbox" name="food" value="딸기">딸기<br>
<input type="checkbox" name="food" value="사과">사과<br>
<input type="checkbox" name="food" value="복숭아">복숭아<br>
<button type="submit">step-4.jsp로 전송</button>
</form>
</body>
</html>
▷ 출력
▣ step-4.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>paramValues로 데이터 받기</h1>
<h3>선택1 : ${paramValues.food[0] }</h3>
<h3>선택2 : ${paramValues.food[1] }</h3>
<h3>선택3 : ${paramValues.food[2] }</h3>
<h3>선택4 : ${paramValues.food[3] }</h3>
<h3>선택5 : ${paramValues.food[4] }</h3>
<hr>
<!-- c:forEach items="반복할 배열/컬렉션" var="저장값"-->
<!-- varStatus : index(번지: 0부터 시작) count(개수: 1부터 시작)-->
<h1>forEach를 활용한 출력</h1>
<c:forEach items="${paramValues.food}" var="f" varStatus="i">
<h3> 선택 ${i.count} : ${f }</h3>
</c:forEach>
<hr>
<%
String friends[] = {"삼겹살", "족발", "소주", "맥주"};
// java Controller에서 jsp로 데이터를 보낼 때
request.setAttribute("friend", friends);
%>
<c:forEach items="${requestScope.friend }" var="fname" varStatus="i">
count: ${i.count } / index: ${i.index } / ${fname } <br>
</c:forEach>
<hr>
<!-- 1부터 10까지 반복해서 숫자 출력 -->
<!-- begin="시작숫자" end="끝숫자" var="저장변수" -->
<c:forEach begin="1" end="10" var="i">
${i }
</c:forEach>
<a href="step-5.jsp"> step-5.jsp로 이동</a>
</body>
</html>
▷ 출력
▣ step-5.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>step-5.jsp 화면</h1>
<!-- 메뉴판을 체크박스 형태로 만들어서 step-6.jsp로 전송 -->
<!-- 주문자명: input -->
<!-- method="post" -->
<form action="step-6.jsp" method="post"></form>
<form action="step-6.jsp">
<h3>주문자명: <input type="text" name="customer"></h3>
<input type ="checkbox" name="menu" value="김치찌개"> 김치찌개<br>
<input type ="checkbox" name="menu" value="된장찌개"> 된장찌개<br>
<input type ="checkbox" name="menu" value="순두부찌개"> 순두부찌개<br>
<input type ="checkbox" name="menu" value="갈치구이"> 갈치구이<br>
<input type ="checkbox" name="menu" value="고등어구이"> 고등어구이<br>
<button type="submit">step-6.jsp로 전송</button>
</form>
<hr>
<!-- request 객체는 보내는 대상 jsp에서만 사용 가능 -->
<c:forEach items="${list }" var="c" varStatus="i">
<h3>${i.count }. ${c } => toString</h3>
</c:forEach>
</body>
</html>
▷ 출력
▣ step-6.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "jstl_study.Car" %>
<%@ page import = "java.util.ArrayList" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
// post 방식의 한글인코딩 처리
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>주문자명: ${param.customer }</h1>
<c:forEach items="${paramValues.menu}" var="f" varStatus="i">
<h3>${i.count }. ${f }</h3>
</c:forEach>
<hr>
<%
Car car = new Car("1234", "소나타", 2000);
request.setAttribute("car", car);
%>
<!-- car 객체를 출력 name : getName -->
<h3>${requestScope.car.name }</h3>
<h3>${car.num }</h3>
<h3>${car.price }</h3>
<%
ArrayList<Car> list = new ArrayList<>();
list.add(car);
list.add(new Car("4567","모닝",1500));
list.add(new Car("1111","그렌저",3500));
list.add(new Car("2222","스파크",1500));
//request.setAttribute("carList", list);
// session 객체는 다른 jsp에서도 사용 가능
session.setAttribute("list", list);
%>
<c:forEach items="${requestScope.carList }" var="c" varStatus="i">
<h3>${i.count }. ${c } => toString</h3>
</c:forEach>
<hr>
<c:forEach items="${list }" var="c" varStatus="i">
<h3>${i.count }. ${c.name }</h3>
</c:forEach>
<a href="step-7.jsp"> step-7.jsp로 이동</a>
</body>
</html>
▣ Car.java
package jstl_study;
public class Car {
// num / name / price
private String num;
private String name;
private int price;
public Car() {}
public Car(String num, String name, int price) {
this.num = num;
this.name = name;
this.price = price;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Car [num=" + num + ", name=" + name + ", price=" + price + "]";
}
}
▷ 출력
▣ step-7.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "jstl_study.Student" %>
<%@ page import = "java.util.ArrayList" %>
<%@ taglib uri= "http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
ArrayList<Student> list = new ArrayList<>();
list.add(new Student(1, "신짱구", "010-1111-2222", "이젠1", 5));
list.add(new Student(2, "한유리", "010-3333-4444", "이젠2", 5));
list.add(new Student(3, "김철수", "010-5555-6666", "이젠3", 5));
list.add(new Student(4, "이훈이", "010-7777-8888", "이젠4", 5));
list.add(new Student(5, "맹구", "010-9999-0000", "이젠5", 5));
request.setAttribute("sList", list);
%>
<c:forEach items="${requestScope.sList }" var="s" varStatus="i">
<h3>${i.count }. ${s }</h3>
</c:forEach>
</body>
</html>
▣ Student
package jstl_study;
public class Student {
// num / name / phone / addr/ age
private int num;
private String name;
private String phone;
private String addr;
private int age;
public Student() {}
public Student(int num, String name, String phone, String addr, int age) {
this.num = num;
this.name = name;
this.phone = phone;
this.addr = addr;
this.age = age;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [num=" + num + ", name=" + name + ", phone=" + phone + ", addr=" + addr + ", age=" + age + "]";
}
}
▷ 출력
'Java > JSP' 카테고리의 다른 글
JSP 기초(Login) - AWS 풀스택 과정 64일차 (0) | 2024.10.25 |
---|---|
JSP 기초(File) - AWS 풀스택 과정 63일차 (0) | 2024.10.24 |
JSP 기초(DB Join) - AWS 풀스택 과정 62일차 (0) | 2024.10.23 |
JSP 기초(DB 연결) - AWS 풀스택 과정 61일차 (0) | 2024.10.22 |