Java/JSP

JSP 설정 및 기초 - AWS 풀스택 과정 60일차

awspspgh 2024. 10. 21. 18:45
목차
1. 설정
2. 기초

 

1. 설정

D드라이브에서 폴더 하나를 생성함 -> 이클립스에서 File > Switch > workspace > other에서 생성했던 폴더를 선택함

 

- utf-8

 

- jdk

 

- compiler

 

- 톰캣 다운로드

 

- 톰캣 연결

 

- Dynamic Project 생성

생성 후 web.xml 파일 있어야 함

 

만약 web.xml 없다면...

 

- servers 설정

 

- package Explorer

 

- 파일 생성 및 실행

 

 

- JSTL 다운로드

 

- JSTL 파일 연결

ctrl C, ctrl V

 

※ 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>

 

▷ 출력

출력 (1)

 

▣ 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>

 

▷ 출력

출력 (2)

 

▣ 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>

 

▷ 출력

출력 (3)

 

▣ 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>

 

▷ 출력

출력 (4)

 

▣ 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>

 

▷ 출력

출력 (5)

 

▣ 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>

 

▷ 출력

출력 (7)

 

▣ 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 + "]";
	}
	
}

 

▷ 출력

출력 (8)

 

▣ 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 + "]";
	}
	
}

 

▷ 출력

출력 (8)