<%--
Created by IntelliJ IDEA.
User: admin
Date: 2022-10-20
Time: 오전 9:28
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%!
String str1 = "JSP";
String str2 = "안녕하세요..";
%>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello jsp</title>
</head>
<body>
<h2>처음 만들어보는 <%=str1%></h2> 스크립트 요소(표현식)
<p>
<%
out.println(str2 + str1 + "입니다. 열공합시다.");
%>
</p>
<%--주석--%>
</body>
</html>
<%@
<-공백 있으면 안됨 + page
+ ~ + %>
java
를 사용UTF-8
UTF-8
해당 페이지에서 에러가 발생했을 때 에러 발생 여부를 보여줄 페이지를 지정
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" errorPage="MyErrorPage.jsp" %>
errorPage="" <- 에러페이지 설정 안해줬을때
errorPage="page_errorPage.jsp" 설정 후 해당 jsp 파일 생성
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<html>
<head>
<title>디렉티브 태그</title>
</head>
<body>
<h4>errorPage 디렉티브 태그</h4>
<h4>에러가 발생했습니다.</h4>
</body>
</html>
page_isErrorPage.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="page_isErrorPage_error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<title>디렉티브 태그</title>
</head>
<body>
<%
String str = null;
out.println(str.toString());
%>
</body>
</html>
page_isErrorPage_error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<title>디렉티브 태그</title>
</head>
<body>
<h4>에러가 발생했습니다</h4>
<h5>exception 내장 객체 변수</h5>
<%
exception.printStackTrace(new java.io.PrintWriter(out));
%>
</body>
</html>
상대경로
를 이용함<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>
<%@ include file="include01_header.jsp"%>
<h4>----- 현재 페이지 영역 -----</h4>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>디렉티브태그 include 헤더파일</title>
</head>
<body>
<h4>헤더 페이지 영역입니다.</h4>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>디렉티브 태그 include 사용</title>
</head>
<body>
<%-- include 실습 --%>
<%@ include file="include02_header.jsp"%>
<p>방문해 주셔서 감사합니다.</p>
<%@ include file="include02_footer.jsp"%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%!
int pageCount = 0;
void addCount() {
pageCount++;
}
%>
<%
addCount();
%>
<p>이 사이트 방문은 <%=pageCount%>번째 입니다.</p>
Copyright © bitcjava505
JSTL
(JSP 표준 태그 라이브러리)을 사용하기 위한 지시어멤버 변수
나 메서드
를 선언<%--
Created by IntelliJ IDEA.
User: admin
Date: 2022-10-20
Time: 오후 12:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>스크립팅 태그, 선언부</title>
</head>
<body>
<%!
int data = 50;
int sum(int a, int b) {
return a + b;
}
String makeItLower(String data) {
return data.toLowerCase();
}
%>
<%
out.println("Value of the variable is : " + data);
out.println("<br>");
out.println("2 + 3 = " + sum(2, 3));
out.println("<br>");
out.println(makeItLower("Hello World!"));
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>스크립팅 태그, 스크립틀릿</title>
</head>
<body>
<%-- 기본 사용 형태 --%>
<%
// 지역변수 선언, _jspService() 메서드의 지역변수로 사용됨
int a = 2;
int b = 3;
int sum = a + b;
out.println("2 + 3 = " + sum);
%>
<%-- 스크립틀릿 테그는 html 사이에 여러번 사용해도 상관없음--%>
<br>
<%
for (int i = 0; i < 11; i++) {
if (i % 2 == 0) {
// out 객체를 사용하여 html 태그와 자바 코드를 함께 표현하는 것이 가능함
out.println(i + "<br>");
}
}
%>
<br><br>
<%
int score = 65;
if (score >= 90) {
out.println("당신의 점수는" + score + "이고, 등급은 A입니다.<br>");
} else if (score >= 80) {
out.println("당신의 점수는" + score + "점이고, 등급은 B입니다.<br>");
%>
<p>----- 스크립틀릿 태그 중간에 들어간 html 태그 -----</p>
<%
}
else if (score >= 70) {
out.println("당신의 점수는" + score + "점이고, 등급은 C입니다.<br>");
}
else if (score>= 60) {
out.println("당신의 점수는" + score + "점이고, 등급은 D입니다.<br>");
}
%>
<br><br>
<%
for (int i = 0; i < 10; i++) {
out.println("i의 값 : " + i);
%>
<p>for문 중간에 들어간 p태그</p>
<%
}
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>스크립팅 태그, 표현식</title>
</head>
<body>
<p>Todays date : <%= new java.util.Date() %></p>
<%!
int sum(int a, int b) {
return a - b;
}
%>
<%
int a = 10;
int b = 20;
int c = 30;
%>
<%= a + b + c %>
<p>10 - 3 = <%= sum(10, 3) %></p>
<p>변수 바로 출력 : <%= c %></p>
</body>
</html>
---
내장 객체의 특징
<% 스크립틀릿 %>
과 <%= 표현식 %>
에서만 사용할 수 있음<%! 선언부 %>
에서는 즉시 사용은 불가능하고, 매개변수로 전달받아 사용할 수는 있음내장 객체의 종류
request 내장 객체는 JSP에서 가장 많이 사용되는 객체로, 클라이언트(주로 웹 브라우저)가 전송한 요청 정보를 담고 있는 객체
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>내장 객체 - request</title>
</head>
<body>
<h1>곽지연 Tomcat 서버</h1>
<h2>1. 클라이언트와 서버의 환경 정보 읽기</h2>
<a href="requestWebInfo.jsp?eng=Hello&kor=안녕">GET 방식</a>
<br>
<form action="requestWebInfo.jsp" method="post">
영어 : <input type="text" name="eng" value="Bye"><br>
한글 : <input type="text" name="kor" value="잘가"><br>
<input type="submit" value="POST 방식 전송">
</form>
<br>
<h2>2. 클라이언트 요청 매개변수 읽기</h2>
<form action="requestParameter.jsp" method="post">
아이디 : <input type="text" name="id" value=""><br>
성별 :
<input type="radio" name="gender" value="man">남자
<input type="radio" name="gender" value="woman">여자
<br>
<input type="checkbox" name="favo" value="eco">경제
<input type="checkbox" name="favo" value="pol" checked>정치
<input type="checkbox" name="favo" value="int">연예
자기소개 :
<textarea name="intro" cols="30" rows="4"></textarea>
<br>
<input type="submit" value="전송하기">
</form>
<h2>3. HTTP 요청 헤어 정보 읽기</h2>
<a href="requestHeader.jsp">요청 헤더 정보 읽기</a>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>내장 객체 - request</title>
</head>
<body>
<%-- 서버 부분 --%>
<h2>1. 클라이언트와 서버의 환경정보 읽기</h2>
<ul>
<li>데이터 전송 방식 : <%=request.getMethod()%></li>
<li>URL : <%=request.getRequestURL()%></li>
<li>프로토콜 : <%=request.getProtocol()%></li>
<li>서버명 : <%=request.getServerName()%></li>
<li>서버 포트 : <%=request.getServerPort()%></li>
<li>클라이언트 IP 주소 : <%=request.getRemoteAddr()%></li>
<li>쿼리스트링 : <%=request.getQueryString()%></li>
<li>전송된 값 1 : <%=request.getParameter("eng")%></li>
<li>전송된 값 2 : <%=request.getParameter("kor")%></li>
</ul>
</body>
</html>
requestMain에서 태그 및 스크립트 부분을 들고있다가 해석해서 html 파일로 만든 다음에
웹 브라우저로 던져줌 -> 웹 브라우저가 해석해서 화면에 뿌림
클라이언트 -> 서버 데이터 전송방식은 2가지 (get, post) + (Restful 방식 : update, delete)
get = 주소에 데이터를 함께 보냄. & 로 계속해서 엮어서 보낼 수 있음
post = Body부분에 넣어서 보냄(request 객체에 포함. 암호화)
중요한 정보는 post 방식으로, 일반적인 정보는 get방식으로 보내면 됨
문제1) 간단한 회원 가입 페이지를 작성하고 가입된 회원 정보를 출력하는 페이지를 작성하세요.
회원 가입 페이지 : member.jsp
회원 정보 페이지 : memberProcess.jsp
필수 정보 : id, 비밀번호, 이름, 전화번호, 이메일주소, 집 주소, 관심분야(checkbox) 5개, 성별(radio)
member.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>문제1 member.jsp</title>
</head>
<body>
<h2>2. 클라이언트 요청 매개변수 읽기</h2>
<%-- 필수 정보 : id, 비밀번호, 이름, 전화번호, 이메일주소, 집 주소, 관심분야(checkbox) 5개, 성별(radio)--%>
<form action="memberProcess.jsp" method="post">
아이디 : <input type="text" name="id" value=""><br>
비밀번호 : <input type="text" name="pw" value=""><br>
이름 : <input type="text" name="name" value=""><br>
전화번호 : <input type="text" name="tel" value=""><br>
집 주소 : <input type="text" name="home" value=""><br>
관심분야 :
<input type="checkbox" name="favo" value="경제">경제
<input type="checkbox" name="favo" value="정치" checked>정치
<input type="checkbox" name="favo" value="사회">사회
<input type="checkbox" name="favo" value="스포츠">스포츠
<input type="checkbox" name="favo" value="연예">연예
<br>
성별 :
<input type="radio" name="gender" value="woman">여자
<input type="radio" name="gender" value="man">남자
<br>
자기소개 : <br>
<textarea name="intro" cols="30" rows="4"></textarea>
<br>
<input type="submit" value="전송하기">
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>문제1 memberProcess.jsp</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String home = request.getParameter("home");
String[] favo = request.getParameterValues("favo");
String favoStr = "";
if (favo != null) {
for (int i = 0; i < favo.length; i++) {
favoStr += favo[i] + " ";
}
}
String gender = request.getParameter("gender");
String intro = request.getParameter("intro").replace("\r\n", "<br>");
%>
<h2><%=name%>님! 회원가입을 축하합니다!</h2>
<h3>전송된 ID : <%=id%></h3>
<h3>전송된 PW : <%=pw%></h3>
<h3>전송된 전화번호 : <%=tel%></h3>
<h3>전송된 집주소 : <%=home%></h3>
<h3>관심분야 : <%=favoStr%></h3>
<h3>성별 : <%=gender%></h3>
<h3>자기소개 : <%=intro%></h3>
</body>
</html>