JSP 설치
확인 방법 : 설치된 ecipse에서 (crtr + n) - dy 검색 => dynamic web project 가 있으면 확인
없으면 설치 진행
The Community for Open Collaboration and Innovation | The Eclipse Foundation
The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …
www.eclipse.org
Download - Download Packages - Eclipse IDE for Enterprise Java and Web Developers - windows - Download
apache tomcat 설치
tomcat9 - 64-bit windows zip - 작업할 공간에 압축 풀기
JSP 서버 설정
Dynabic Web Project - project name 지정 -
Target runtime - New Runtim - apache Tomcak v9.0 지정 - create a new local server 체크 -
Browse - apache-tomcat-9.0.88 - finish
JSP 실행
webapp - ctrl + n - JSP File - File name - finish

ctrl + shift + s = 전체 저장
(ctrl + F11) - Tomcat v9.0 Server at loclahost 지정 , Always use this server where running this project = 실행
오류 발생 시 : Port Number = 8080 => 아무거나

JSP UTF-8 설정
UTF-8 : 3바이트 처리, 한글을 효율적으로 처리.
window - preperences
general - workspace - UTF-8 설정
web - CSS Files - Encoding - 제일 처음의 UTF-8 설정
web - HTML Files - Encoding - 제일 처음의 UTF-8 설정
web - JSP Files - Encoding - 제일 처음의 UTF-8 설정
Apply and Close


EUC-KR => UTF-8 로 바뀜.
JSP 기본 태그

서버 : eclipse, 클라이언트 : chrome(Window - Web Browser - 지정)
System.out.println(); : 서버에서만 보인다.
out.print(); : 클라이언트에서만 보인다.
<%! %> : 처음에 한번만 실행하고, 그 다음부터는 실행하지 않는다.
<%@ 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>
<%--
int num = 100;
System.out.println("num :" + num);
out.print("num :" + num);
--%>
<%!
int num = 1234;
%>
<%
out.print("num : <b> " + num + "</b>");
%>
<br>
num : <h4><%= num++ %></h4>
</body>
</html>
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>
<%!
public String name = "홍길동";
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
class Abc {
public String test(){
return "객체 메소드";
}
}
%>
기본 이름 : <%= name %><br>
<% setName("김길이"); %>
변경 이름 : <%= getName() %><br>
<% Abc obj = new Abc(); %>
객체 사용 : <%= obj.test() %>
</body>
</html>
실행 결과

JSP 기본 문법
<%@page import="java.util.HashMap"%>
<%@ 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>
ex04.jsp<br>
<%
String name = "홍길동";
HashMap<String, String> map = new HashMap<>();
map.put("naver", "https://www.naver.com");
map.put("google", "https://www.google.co.kr");
%>
<input type="text" value="<%= name %>"><br>
<input type="text" value="<% out.print(name); %>"><br>
<a href="<%= map.get("naver") %>">네이버</a>
<a href="<%= map.get("google") %>">구글</a>
</body>
</html>
실행 결과
JSP 상대경로, 절대경로

default.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>
/ : 포트까지의 경로<br>
../ : 현재위치 전<br>
../../ : 2단계 전<br>
<h2>default 위치</h2>
<a href="/2_get_post/test/test1.jsp">test1</a>
<a href="test/test2/test2.jsp">test2</a>
</body>
</html>
test1.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>
<h2>test1 위치</h2>
<a href="/2_get_post/default.jsp">default</a>
<a href="/2_get_post/test/test2/test2.jsp">test2</a>
</body>
</html>
test2.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>
<h2>test2 위치</h2>
<a href="../test1.jsp">test1</a>
<a href="../../default.jsp">default</a>
</body>
</html>
실행 결과
JSP get, post (1)

post나 get방식으로 넘어온 값 받기 : request.getParameter("변수명(name)");
* post방식을 한글을 넘기면 깨진다. 따라서 encodinf 처리를 해줘야 한다. : request.getCharacterEncoding("utf-8");

<%@ 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>
<h3>method get</h3>
<form action="get.jsp" method="get">
<input type="text" name="id"><br>
<input type="text" name="pwd"><br>
<input type="submit" name="submit"><br>
</form>
<h3>method post</h3>
<form action="/2_get_post/get_post/post.jsp" method="post">
<input type="text" name="id"><br>
<input type="text" name="pwd"><br>
<input type="submit" name="submit"><br>
</form>
</body>
</html>
<%@ 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>
<h3>get.jsp</h3>
id : <%= request.getParameter("id") %><br>
pwd : <%= request.getParameter("pwd") %><br>
<a href="form.jsp">form 이동</a>
</body>
</html>
<%@ 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>
<% request.setCharacterEncoding("utf-8"); %>
<h3>post.jsp</h3>
id : <%= request.getParameter("id") %><br>
<%
String pwd = request.getParameter("pwd");
%>
pwd : <%= pwd %><br>
<a href="form.jsp">form 이동</a>
</body>
</html>
실행 결과
JSP get, post (2)

<%@ 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>
<form action="result.jsp" method="post">
<input type="text" name="id" placeholder="register id"><br>
<input type="text" name="pwd" placeholder="register password"><br>
<input type="text" name="name" placeholder="register name"><br>
남 : <input type="radio" name="gender" value="남">
여 : <input type="radio" name="gender" value="여"><br>
<input type="submit" value="저장">
</form>
</body>
</html>
<%@ 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>
<% request.setCharacterEncoding("utf-8"); %>
<h3>넘어온 값</h3>
id : <%= request.getParameter("id") %><br>
pwd : <%= request.getParameter("pwd") %><br>
name : <%= request.getParameter("name") %><br>
gender : <%= request.getParameter("gender") %><br>
<a href="form2.jsp">form이동</a>
</body>
</html>
실행 결과
JSP 지시자

taglib

<%@page import="java.util.ArrayList"%>
<%@ 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>
<%
ArrayList<String> list = new ArrayList<>();
list.add("오늘");
list.add("내일");
list.add("그리고");
%>
<%
for(int i = 0; i < list.size(); i++){
out.print(list.get(i) + "<br>");
}
%>
<hr>
<% for(String s : list){ %>
값 : <%= s %> <br>
<% } %>
</body>
</html>
실행 결과

page
<%@ page errorPage="error_msg.jsp"%> : 현재 페이지에 에러 발생시, 해당하는 페이지(error_msg.jsp)로 연결
<%@ page isErrorPage="true" %>
위와 같은 태그가 있으면 exception 사용 가능
<%= exception.getMessage() %> : 에러 내용을 간략하게 알려줌
<%= exception.toString() %> : 에러 내용을 자세하게 알려줌

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page errorPage="error_msg.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
ex02.jsp<hr>
<%= 10 / 0 %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>요청 페이지에 문제 발생!!!</h3>
<%= exception.getMessage() %><br>
<%= exception.toString() %><br>
</body>
</html>
실행 결과

include
* <%@ include %>에서 절대경로를 지정할 때는, 시작점이 webapp이다.

<%@ 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>
<%
String name = "홍길동";
%>
<header>
<hr>서브페이지 | 카페 | 메인페이지 <hr>
</header>
</body>
</html>
<%@ 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>
<footer>
<hr>바닥글~ / 회사소개 / 제휴제한 /
</footer>
</body>
</html>
<%@ 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>
<%@ include file="header.jsp" %>
<h1>인크루드 속성</h1> : <%= name %>
<%@ include file="/tag/footer.jsp" %>
</body>
</html>
실행 결과

Quiz01

풀이 과정

<%@ 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>
<a href="/2_get_post/tag/quiz/main.jsp">메인</a> 
<a href="/2_get_post/tag/ex01.jsp">ex01</a> 
<a href="/2_get_post/tag/error_msg.jsp">ex02(에러)</a>
</body>
</html>
<%@ 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>
<%@ include file="header.jsp" %>
<hr>
<h1>main 기본페이지 입니다</h1>
</body>
</html>
<%@page import="java.util.ArrayList"%>
<%@ 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>
<%@ include file="/tag/quiz/header.jsp" %>
<hr>
<%
ArrayList<String> list = new ArrayList<>();
list.add("오늘");
list.add("내일");
list.add("그리고");
%>
<%
for(int i = 0; i < list.size(); i++){
out.print(list.get(i) + "<br>");
}
%>
<hr>
<% for(String s : list){ %>
값 : <%= s %> <br>
<% } %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ include file="/tag/quiz/header.jsp" %>
<hr>
<h3>요청 페이지에 문제 발생!!!</h3>
<%--
<%= exception.getMessage() %><br>
<%= exception.toString() %><br>
--%>
</body>
</html>
실행 결과
JSP request, response (1)
request.getContextPath() : port번호 다음에 들어오는 경로(프로젝트 이름)
* 위에서 언급한 경로는 Servers - server.xml에서 변경 가능
request.getMethod() : 사용자가 요청하는 방식(default = get)

<%@ 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>
<%= request.getContextPath() %><br>
<%= request.getMethod() %><br>
</body>
</html>
실행 결과

JSP request, response (2)
request.getParameter("파라미터명") : 하나의 대한 데이터만 얻어올 때 사용
request.getParameterValues(" 파라미터명") : 여러개의 데이터를 얻어올 때 사용 (배열)
* Enumeration<String> e = request.getParameterNames();
request.getParameterNames(); : 받아온 파라미터명을 받아온다
request.getParameterNames()는 Enumeration<String> 형식으로 받아온다
받아온 값은 첫번째는 bof, 마지막에는 eof로 받아온다
e.hasMoreElements() : bof 다음 값이 있으면 true, 다음 값이 eof면 false
e.nextElement() : 해당하는 파라미터명을 출력한다

<%@ 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>
<% String path = request.getContextPath(); %>
경로 : <%= path %>/req/ex02_result.jsp<br>
<form action="<%= path %>/req/ex02_result.jsp" method="post">
1 <input type="checkbox" name="chk" value="일">
2 <input type="checkbox" name="chk" value="이">
3 <input type="checkbox" name="chk" value="삼">
<hr>
우편번호 : <input type="text" name="addr"><br>
주소 : <input type="text" name="addr"><br>
상세주소 : <input type="text" name="addr"><br>
<hr>
우편번호 : <input type="text" name="a1"><br>
주소 : <input type="text" name="a2"><br>
상세주소 : <input type="text" name="a3"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@page import="java.util.Enumeration"%>
<%@ 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>
<% request.setCharacterEncoding("utf-8"); %>
<%--
chk : <%= request.getParameter("chk") %>
<hr>
--%>
<%
String[] chks = request.getParameterValues("chk");
if(chks != null){
for(String s : chks){
out.print(s + "<br>");
}
}
%>
<hr>
<h3>주소</h3>
<%
for(String addr : request.getParameterValues("addr")){
out.print(addr + "<br>");
}
%>
<hr>
<h3>주소2</h3>
<%= request.getParameter("a1") %><br>
<%= request.getParameter("a2") %><br>
<%= request.getParameter("a3") %><br>
<hr>
<%
Enumeration<String> e = request.getParameterNames();
while(e.hasMoreElements()) {
String name = e.nextElement();
out.print(name + " : " + request.getParameter(name) + "<br>");
}
%>
<a href="ex02_form.jsp">form</a>
</body>
</html>
실행 결과
Quiz02

풀이 과정
<%@ 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>
<h2>설문조사 폼 만들기</h2>
<form action="quiz_result.jsp" method="post">
이름 : <input type="text" name="name"><br><br>
소개 : <textarea rows="4" cols="14" name="introduce"></textarea><br><br>
<fieldset style="width: 300px">
<legend>연령 조사</legend>
<label for="ten">10대</label>
<input type="radio" id="ten" name="age" value="10대">
<label for="twenty">20대</label>
<input type="radio" id="twenty" name="age" value="20대" checked>
<label for="thity">30대</label>
<input type="radio" id="thity" name="age" value="30대">
<label for="forty">40대</label>
<input type="radio" id="forty" name="age" value="40대">
</fieldset>
<fieldset style="width: 300px">
<legend>취미 조사</legend>
<label for="book">책읽기</label>
<input type="checkbox" id="book" name="hobby" value="책읽기">
<label for="dance">춤추기</label>
<input type="checkbox" id="dance" name="hobby" value="춤추기">
<label for="mung">멍때리기</label>
<input type="checkbox" id="mung" name="hobby" value="멍떄리기">
</fieldset>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@page import="java.util.Enumeration"%>
<%@ 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>
<% request.setCharacterEncoding("utf-8"); %>
<h1>설문 조사 결과</h1>
<%
Enumeration<String> e = request.getParameterNames();
while(e.hasMoreElements()){
String val = e.nextElement();
if(val.equals("name")){
out.print("이름 : " + request.getParameter(val) + "<br>");
}else if(val.equals("introduce")){
out.print("소개 : " + request.getParameter(val) + "<br>");
}else if(val.equals("age")){
out.print("나이 : " + request.getParameter(val) + "<br>");
}else if(val.equals("hobby")){
out.print("취미 : ");
if(request.getParameterValues(val).length >= 2){
for(int i = 0; i < request.getParameterValues(val).length; i++){
if(i == request.getParameterValues(val).length - 1){
out.print(request.getParameterValues(val)[i]);
}else{
out.print(request.getParameterValues(val)[i] + ", ");
}
}
}else if(request.getParameterValues(val).length == 1){
out.print(request.getParameter(val));
}
}
}
%>
</body>
</html>
실행 결과
'jsp' 카테고리의 다른 글
JSP 활용(3) (0) | 2024.05.02 |
---|---|
JSP 활용(2) (0) | 2024.05.01 |
JSP 활용 (1) (0) | 2024.04.30 |