본문 바로가기

jsp

JSP 기초

728x90

 

 

 

 

JSP 설치

확인 방법 : 설치된 ecipse에서 (crtr + n) - dy 검색 => dynamic web project 가 있으면 확인

 

없으면 설치 진행

https://www.eclipse.org 

 

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>&emsp;
	<a href="/2_get_post/tag/ex01.jsp">ex01</a>&emsp;
	<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