오늘의 코딩순서
(폴더: och02) : html파일과 Java파일 => 컴파일 하면 Servlet이 됨
- personal.html⭐⭐⭐⭐⭐(종합판)(HW)
(폴더: och03) : html파일과 JSP파일 => 컴파일 하면 Servlet이 됨
- board.html + board.jsp
- color.html + color.jsp
- date.jsp
- cal.html + cal.jsp + cal2.jsp + calResult.jsp
- name.html + name.jsp
- num.html⭐⭐⭐ + num.jsp + num2.jsp
- declaration.jsp
- powerCall.jsp
- threePower.jsp
- selectFirst.html + selsecond.jsp + color1.jsp + gugu1.jsp(현장HW) + response.jsp
오늘의 코딩
och02 폴더
- personal⭐⭐⭐⭐⭐(종합판)(HW)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function chk() {
if (!frm.name.value) {
alert("이름 ?")
frm.name.focus();
return false;
}
if (!frm.id.value) {
alert("아이디 ?")
frm.id.focus();
return false;
}
if (!frm.password.value) {
alert("암호 ?")
frm.password.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<h2>개인정보</h2>
<form action="Person" name="frm" method="post" onsubmit="return chk()">
<table border="1" bgcolor="yellow">
<tr> <td>이름</td><td><input type="text" name="name"></td></tr>
<tr> <td>아이디</td><td><input type="text" name="id"></td></tr>
<tr> <td>암호</td><td><input type="password" name="password"></td></tr>
<tr> <td>성별</td>
<td>남자<input type="radio" name="gender" value="남자"><br>
여자<input type="radio" name="gender" checked="checked" value="여자"></td>
</tr>
<tr> <td>메일수신</td>
<td>공지<input type="checkbox" value="공지" name="notice"><br>
광고<input type="checkbox" value="광고" name="notice"><br>
배송<input type="checkbox" value="배송" name="notice"></td>
</tr>
<tr>
<td>직업</td>
<td><select name= "job">
<option value="가수">가수</option>
<option value="장군">장군</option>
<option value="공무원">공무원</option>
</select></td>
</tr>
<tr>
<td><input type="submit" value="확인"></td>
<td><input type="reset" value="입력취소"></td>
</tr>
</table>
</form>
</body>
</html>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String id = request.getParameter("id");
String password = request.getParameter("password");
String gender = request.getParameter("gender");
String[] notice = request.getParameterValues("notice");
String job = request.getParameter("job");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html><body><h1>개인정보</h1>");
out.println("이름 : " + name + "<p>");
out.println("아이디 : " + id + "<p>");
out.println("암호 : " + password + "<p>");
out.println("성별 : " + gender + "<p>");
out.println("수신메일 : ");
if (notice !=null) {
for (int i=0; i< notice.length; i++) {
out.println(notice[i]+ " ");
}
} else out.println("없음");
out.println("<p>직업 : " + job);
out.println("</body></html>");
out.close();
}
och03 폴더=> Script와 Expression을 이용
- board
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function chk() {
if(!frm.title.value) {
alert("제목 ?");
frm.title.focus();
return false;
}
if(!frm.writer.value) {
alert("작성자 ?");
frm.writer.focus();
return false;
}
if(!frm.content.value) {
alert("내용 ?");
frm.content.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<h1>게시판</h1>
<form action = "board.jsp" name=frm method=post onsubmit="return chk()">
<table border = "1" bgcolor="pink">
<tr><td>제목</td><td><input type="text" name="title"></td></tr>
<tr><td>작성자</td><td><input type="text" name="writer"></td></tr>
<tr><td>내용</td><td><textarea rows="6" cols="30" name="content"></textarea></td></tr>
<tr><td><input type="submit" value="확인"></td>
<td><input type="reset" value="입력취소"></td></tr>
</table>
</form>
</body>
</html>
Tip)
- \r: 커서를 제일 앞으로 보내고 그 뒤에 문자가 있으면 그 문자를 입력시켜줌
- \n: 커서를 다음 줄로 넘어가게 하며(엔터기능), 뒤에 문자가 있다면 그 문자를 다음 줄에 입력시켜줌
- \r\n: 커서를 앞으로 보내고 다음 줄로 넘어가게 함
- WEB-INF: Web Information, web에 관련된 정보를 의미함
브라우저에서 Context Root 하위의 정보에 대해 접근할 수 있지만 WEB-INF에는 접근할 수 없음.
브라우저에서 url로 jsp 파일 등을 직접 요청하는 경우를 제한하는 것이 보통이기 때문에 jsp 파일들은 실무에서는 WEB-INF 폴더 안에 있다고 보면 됨
형태는 클래스 객체변수 = new 클래스 - long: int 보다 큰 값을 입력할 수 있는 변수, 다만 int보다 두 배 넘는 메모리 공간을 차지함
- 메타 데이터: 해당 jsp 등의 파일 위치
이클립스에서 톰캣을 실행시킬 때 이중구조로 실행해서 워크스페이스의 upload가 아닌 메타데이터폴더의 upload에 저장이 됨
<!-- 내장객체는 그냥 쓸 수 있지만, 선언은 import해야 쓸 수 있음
-->
<%@page import="java.util.Date"%>
<%@page import="java.io.FileWriter"%>
<%@ 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> <!-- <= 여긴 HTML 코딩 -->
<h1>게시판</h1>
<% /* <= 여긴 Java 코딩 */
request.setCharacterEncoding("utf-8");
String title = request.getParameter("title");
String writer = request.getParameter("writer");
String content = request.getParameter("content");
String msg = "제목 : " + title + "\r\n";
//위와 같은 형태로 작성하면 같은 이름의 함수라서 성립이 안됨, +를 이용하여 제목+작성자+내용으로 만들어줌
msg += "작성자 : " + writer + "\r\n";
msg += "내용 : " + content + "\r\n";
Date date = new Date();
long fileName = date.getTime();
String real = application.getRealPath("WEB-INF/out/"+fileName+".txt");
System.out.println(real);
FileWriter fw = new FileWriter(real);
fw.write(msg);
fw.close();
out.println("제목 : " + title + "<br>");
out.println("작성자 : " + writer + "<br>");
out.println("내용 : " + content + "<br>");
%>
저장 성공
</body>
</html>
- color
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>좋아하는 색은 ?</h1>'
<form action="color.jsp">
빨강<input type="radio" name="color" value="red" checked="checked"><br>
주황<input type="radio" name="color" value="orange"><br>
노랑<input type="radio" name="color" value="yellow"><br>
초록<input type="radio" name="color" value="green"><br>
파랑<input type="radio" name="color" value="blue"><br>
남색<input type="radio" name="color" value="navy"><br>
보라<input type="radio" name="color" value="violet"><br>
<input type="submit" value="확인"><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>
<%
String color = request.getParameter("color");
%>
<body bgcolor="<%=color%>">
</body>
</html>
- date
Tip- %TF: 날짜를 보여주는 format, yyyy-mm-dd 형태로 나타남
++ "%TT"는 현재 시간을 보여주는 format
- %TF: 날짜를 보여주는 format, yyyy-mm-dd 형태로 나타남
<%@page import="java.util.GregorianCalendar"%>
<%@ 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>
<%
GregorianCalendar gc = new GregorianCalendar();
String date = String.format("%TF %TF",gc, gc);
%>
오늘은 <%=date %>입니다 <!-- JSP는 호출되지 않고 단독으로도 쓰일 수 있다 -->
</body>
</html>
- cal
Tip)- page 이동?: 클라이언트의 요청을 받은 서버가 클라이언트에게 "이 페이지로 가!" 라고 보낼 수 있는 것을 말함
- form문 이동: <form> 태그 안에 이동할 주소와 전송방식 지정하고 onclick 이벤트로 호출할 함수에 form을 통째로 파라미터화 해서 넘김
- requestDispatcher 이동
- 서블릿에서 값을 넘겨주고 해당 페이지에서 처리할 수 있도록 하는 방법
- 서블릿에서 처리한 데이터를 jsp에서 가져다가 사용해야 할 때 쓰는 객체
- 생성된 객체를 가지고 forward 메소드를 통해 해당 경로 페이지로 이동할 수 있음
- 호출된 페이지에서는 request.getAttribute() 메소드를 통해 넘겨받은 데이터를 처리할 수 있음,
이때 sendRedirect와는 다르게 request와 response 객체를 가지고 이동할 수 있음 - RequestDispatcher는 이동할 경로를 설정하고 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>사칙연산할 데이터 입력</h2>
<form action="cal.jsp" name="frm" onsubmit="return chk()">
첫번째 수 : <input type="text" name="num1"><p>
두번째 수 : <input type="text" name="num2"><p>
<input type="submit" value="확인">
</form>
</body>
</html>
- cal.jsp
Tip)- 계산은 자바로, 보여주는 것은 HTML로
- Expression(표현식)에서는 메소드도 호출 가능
<%@ 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 num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
int add = num1 + num2;
int min = num1 - num2;
int mul = num1 * num2;
int div = num1 / num2;
%>
<!-- Expression(표현식) -->
덧셈 : <%=add %><p>
뺄셈 : <%=min %><p>
곱셈 : <%=mul %><p>
나눗셈 : <%=div %><p>
</body>
</html>
- cal2.jsp
Tip)
- request.getRequestDispatcher
- RequestDispatcher 객체를 생성하기 위해서는 new 연산자가 아닌, HttpServletRequest 객체의 getRequestDispatcher() 메소드로 객체를 생성함
- getRequestDispatcher 객체는 다른 페이지로 이동하기 위해 forward 메소드를 사용
- setAttribute: 특정 속성에 값을 변경하거나 새로 지정함
- request.getRequestDispatcher
<%@ 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 num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
int add = num1 + num2;
int min = num1 - num2;
int mul = num1 * num2;
int div = num1 / num2;
request.setAttribute("add", add); //아래 네 줄에 attribute가 들어감
request.setAttribute("min", min); //앞뒤 값의 이름은 꼭 같을 필요는 없음, 헷갈릴까봐 일치시킨 것
request.setAttribute("mul", mul); //(parameter, 변수값)
request.setAttribute("div", div);
RequestDispatcher rd = request.getRequestDispatcher("calResult.jsp");
// 이동하겠다고 선언
rd.forward(request, response); //진짜 이동
//request에는 만들었던 request값이, response에는 만들었던 response가 들어감
%>
</body>
</html>
- calResult.jsp
Tip)
- getAttribute: 특성 속성을 추출함
- 내장객체(아래 수업교재 부분 참고)
<%@ 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>
덧셈 : <%=request.getAttribute("add") %><p> <!-- 내장객체 -->
뺄셈 : <%=request.getAttribute("min") %><p>
곱셈 : <%=request.getAttribute("mul") %><p>
나눗셈 : <%=request.getAttribute("div") %><p>
</body>
</html>
- name
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>이름과 주소 입력해</h1>
<form action="name.jsp" method="post" name="frm" onsubmit="return chk()">
이름 : <input type="text" name="name"><p>
주소 : <input type="text" name="addr"><p>
<input type="submit" value="확인"><p>
</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");
String name = request.getParameter("name");
String addr = request.getParameter("addr");
%>
<%=name %>님 <%=addr %>에 사시네
</body>
</html>
- num
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>숫자를 입력하세요</h1>
<form action="num.jsp" name="frm" onsubmit="return chk()">
숫자 : <input type="text" name="num"><p>
</form>
<script type="text/javascript">
function chk() {
if (!frm.num.value){
alert("숫자를 입력해야지 !");
frm.num.focus();
return false;
}
if (isNaN(frm.num.value)) {
alert("숫자가 아니야 !");
frm.num.value ="";
return false;
}
return true;
}
</script>
</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>
<%
int num = Integer.parseInt(request.getParameter("num"));
int sum = 0;
for (int i = 1; i<=num; i++) {
sum += i;
}
%>
<body>
<h1>1부터 <%=num %>까지 합</h1>
<%=sum %>
</body>
</html>
- num2.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>
<%
int num = Integer.parseInt(request.getParameter("num"));
int sum = 0;
for (int i = 1; i<=num; i++) {
sum += i;
out.println(i+"일때 합계는 " + sum + "<br>");
}
%>
<body>
</body>
</html>
- declaration
Tip)- declaration
- JSP에서 사용될 멤버변수(0529 일지 참조)나 메서드를 선언할 수 있는 요소
- JSP페이지 내에서 변수 및 메서드를 선언 후, 변수나 메서드를 이용하여 동적으로 HTML 코드를 생성하는 데 사용
- 선언문에 선언된 변수를 멤버 변수라고 함
- 문법: <%!
멤버 변수 및 메서드를 선언하는 영역
%>
- declaration
<%@ 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>
<%
// declaration 선언부 : 멤버변수, method를 사용
String name = "홍길동 !";
%>
<%
String hi = name + "안녕 !!!";
%>
<%=hi %>
</body>
</html>
- powerCall
Tip- power: 제곱 연산자, pow( 밑, 지수)
<%@ 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>
2^1 = <%=power(2,1) %><p> <!-- 위치는 위쪽이든 아래쪽이든 상관 없음 -->
2^2 = <%=power(2,2)+1 %><p> <!-- 연산 뒤에 사칙연산을 더 포함시켜도 출력 가능 -->
2^3 = <%=power(2,3) %><p>
2^4 = <%=power(2,4) %><p>
2^5 = <%=power(2,5) %><p>
<%!
int power(int x,int y) { // X의 Y승
int result = 1;
for (int i = 0; i < y; i++){
result *=x;
}
return result;
}
%>
</body>
</html>
- threePower
Tip- three:
<%@ 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>
<%!
// three(int x) ==> X*X*X
int three(int x) {
return x * x * x;
}
%>
2^3 = <%=three(2) %><p>
3^3 = <%=three(3) %><p>
4^3 = <%=three(4) %><p>
5^3 = <%=three(5) %><p>
6^3 = <%=three(6) %><p>
</body>
</html>
- selectFirst
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>보고 싶은 것을 선택하시오</h1>
<form action="select.jsp">
배경 <input type="radio" name="pgm" value="color1"><br>
구구단 <input type="radio" name="pgm" value="gugu1"><br>
중앙정보<input type="radio" name="pgm" value="response"><br>
<input type="submit" value="선택완료"><br>
</form>
</body>
</html>
- selsecond
<%@ 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[] col={"red", "orange", "yellow", "green", "blue", "naby", "violet", "black"};
int n = (int)(Math.random() * 8);
String pgm = request.getParameter("pgm") + ".jsp";
System.out.println("pgm->"+pgm);
RequestDispatcher rd = request.getRequestDispatcher(pgm); //Page 이름 선언
if (pgm.equals("color1.jsp")) {
request.setAttribute("color", col[n]);
} else if (pgm.equals("gugu1.jsp")) {
request.setAttribute("num", n + 2); //2 이상의 임의의 값을 뜻함
} else if (pgm.equals("response.jsp")) {
}
rd.forward(request, response); //선언과 분리
%>
</body>
</html>
- color1.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>
<%
String color = request.getAttribute("color").toString();
%>
<body bgcolor="<%=color%>">
</body>
</html>
- gugu1.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>보고 싶은 것을 선택하시오</h1>
<form action="selsecond.jsp">
배경 <input type="radio" name="pgm" value="color1"><br>
구구단 <input type="radio" name="pgm" value="gugu1"><br>
중앙정보<input type="radio" name="pgm" value="response"><br>
<input type="submit" value="선택완료"><br>
</form>
</body>
</html>
- response.jsp
- Tip
- sendRedirect
- 웹 서버가 웹 브라우저에게 다른 페이지로 이동하라고 지시하는 명령어
- response 기본 객체에서 많이 사용되는 기능 중 하나는 리다이렉트 기능
리다이렉트 기능이란 웹 서버가 웹 브라우저에게 다른 페이지로 이동하라고 응답하는 기능 - sendRedirect는 데이터가 따로 이동하지 않기 때문에 각자의 request에 저장된 데이터 값은 가져가지 않고 그냥 다른 jsp의 링크만 연결해 보여줌
- sendRedirect
<%@ 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>
<%
response.sendRedirect("http://www.choongang.co.kr/fordeveloper");
%>
</body>
</html>
수업교재
3. JSP 기초
1. JSP 기초 및 과정과 구조
1. Servlet 수행 Process
: 웹 컨테이너는 JSP 페이지 전체를 서블릿 클래스의 소스코드로 변환한다음에, 그 소스코드를 컴파일해서그 결과를 가지고 서블릿 객체를 만들고, 그 서블릿 객체를 초기화 해서 서블릿을 만든다. 웹 브라우저로부터 URL이 왔을때 실행되는 것은 서블릿임
2. JSP 동작원리
- 일반적인 웹(www) 서비스 동작과정
- JSP 동작과정
- JSP 서브릿 변환 처리 및 데이터 연동 과정
2. JSP의 기초문법(스크립팅요소, 지시자, 주석)
1. JSP의 기초 문법 및 구성 요소
- 스크립틀릿(scriptlet)
- JSP에 자바 코드를 삽입할 때 사용
- 스크립틀릿은 <%로 시작해서 %>로 끝나는 형태이며, 그 사이에 자바 명령문이 들어갈 수 있음
- JSP 페이지에서 가장 일반적으로 많이 쓰이는 스크립트 요소로 주로 프로그래밍의 로직을 기술할 때 많이 쓰임
- JSP 페이지가 서블릿으로 변환되고 요청될 때 _jspService() 메서드 안에 선언되는 요소
- 스크립트릿은 선언문과 달리 선언된 변수는 지역 변수로 선언이 되고 메서드 선언은 할 수 없음
------> 만약 메서드를 선언하게 되면 메서드 안에 메서드를 선언한 것!! - 자동 초기화가 안되므로 반드시 초기화를 해주어야 함
- 자바식은 상수나 변수 이름 하나로 구성될 수도 있고, 연산자를 포함할 수도 있으며, return 값이 있는 메소드 호출식이 될 수도 있음
ex) <%=total %>: 변수 이름 하나 / <%=total+101 %>: 연산자 포함 / <%=Math.sqrt(num) %>: 리턴값이 있는 메소드호출 - 자바식은 웹 서버 쪽에서 실행되고 그 결과만 웹 브라우저로 전송됨
- 익스프레션(expression): ${ 로 시작해서 }로 끝나는 형태
- 표현식(expression)은 JSP 페이지에서 웹 브라우저에 출력할 부분을 표현하기 위한 것
- 표현식은 웹 브라우저에 출력을 목적으로 하는 변수의 값 및 메소드의 결과값도 출력됨
- 스크립트릿 코드내에서 표현식을 쓸 수 없음, 대신 스크립트릿내에서 출력할 부분은 내장 객체의 out객체의 print() 또는 println() 메소드를 사용해서 출력함
- 표현식 내에서 세미콜론(;)은 생략하는데, 이는 JSP 페이지가 서블릿으로 변환될 때 표현식 부분은 out.print(); 메소드로 변환되어 자동적으로 세미콜론이 붙여지기 때문
- 선언부(declaration): 선언문은 JSP 페이지 내에서 필요한 멤버변수나 메소드가 필요할 때 선언해 사용하는 요소로 변수 및 메소드를 선언하고, 선언된 변수는 메소드를 이용해 필요한 독적 HTML 코드 생성에 사용함
- 지시자(directive)
- JSP 엔진에게 특정 작업을 수행하도록 지시하는 역할, 페이지의 상단에 선언됨
- <%@ 디렉티 이름 속성=“값”속성=“값”… %> 의 형태로 작성
- JSP 엔진에게 특정 작업을 수행하도록 지시하거나 페이지의 설정을 변경하는 데 사용됨
- 예시: 언어 설정, 콘텐츠 타입 지정, 다른 파일 포함, 태그 라이브러리 추가 등 다양한 용도로 사용됨
- 유형: page, taglib, include
- 태그 형태 액션(action): <jsp:forward>와 같은 XML
2. 스크립팅 요소
3. Implicit 내장
- 내장변수 Implicit Variable
- JSP 페이지 안에 선언을 하지 않고도 사용할 수 있는 변수
- JSP 페이지 안에서 내장 변수를 사용할 수 있는 이유는 웹 컨테이너가 JSP 페이지를 서블릿 클래스로 변환할 때 자동으로 내장변수를 선언하기 때문
- 종류
- request: 웹 브라우저의 HTTP 요청 정보를 저장함
내장변수는 서블릿 클래스의 doGet, doPost 메서드의 첫 번째 파라미터와 동일한 역할을 함
클라이언트의 요청(response)이 처리되는 동안 속성(attribute)을 사용할 수 있음
request 영역의 속성을 여러 페이지에서 공유할 수 있음 - response: 웹 브라우저의 HTTP요청에 대한 응답 정보를 저장함
내장변수는 서블릿 클래스에 있는 doGet, doPost 메서드의 두 번째 파라미터와 동일한 역할을 함
이 변수는 javax.servlet.http.HttpServletResponse 타입이기 때문에 이 인터페이스에 속하는 여러가지 메서드들을 호출함 - out: JSP 페이지에 출력할 내용을 담고 있는 출력 스트림
내장변수는 서블릿 클래스에서 getWriter 메서드를 호출해서 얻은 PrintWriter 객체와 마찬가지의 역할을 함 - session: 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장함
- application: 웹 애플리케이션에 관련된 여러가지 기능을 제공
웹 어플리케이션이 실행되고 있는 동안 속성을 사용할 수 있음
모든 이가 공유할 수 있는 가장 큰 영역의 데이터 - page: JSP 페이지를 구현한 자바 클래스로 JSP 페이지 자체를 나타냄
- pageContext: JSP 페이지의 정보를 저장함, 모든 영역의 속성에 대한 접근이 가능함
- config: JSP 페이지의 설정 정보를 저장함
- exception: JSP 페이지의 예외 발생을 처리함
- request: 웹 브라우저의 HTTP 요청 정보를 저장함
- 내장객체 Implicit Object
- JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체
- JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함
- JSP 페이지에 별도의 import문 없이 자유롭게 사용 가능
- 스크립틀릿 태그나 표혀문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용 가능
- 내장 객체의 종류
내장 객체 | 타입 | 설명 |
⭐request | javax.servlet.http.HttpServletRequest | 웹 브라우저의 HTTP 요청(클라이언트의 요청) 정보를 저장함 |
⭐reponse | javax.servlet.http.HttpServletResponse | 웹 브라우저의 HTTP요청에 대한 응답 정보를 저장함 내장변수는 서블릿 클래스에 있는 doGet, doPost 메서드의 두 번째 파라미터와 동일한 역할을 함 이 변수는 javax.servlet.http.HttpServletResponse 타입이기 때문에 이 인터페이스에 속하는 여러가지 메서드들을 호출함 |
out | javax.servlet.jsp.JspWriter | JSP 페이지에 출력할 내용을 담고 있는 출력 스트림 내장변수는 서블릿 클래스에서 getWriter 메서드를 호출해서 얻은 PrintWriter 객체와 마찬가지의 역할을 함 |
application | javax.servlet.ServletContext | 웹 애플리케이션에 관련된 여러가지 기능을 제공 |
⭐session | javax.servlet.http.HttpSession | 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장함 |
page | java.lang.Object | JSP 페이지를 구현한 자바 클래스로 JSP 페이지 자체를 나타냄 |
⭐pageContext | javax.servlet.jsp.PageContext | JSP 페이지의 정보를 저장함 |
config | javax.servlet.ServletConfig | JSP 페이지의 설정 정보를 저장함 |
exception | java.lang.Throwable | JSP 페이지의 예외 발생을 처리함 |
'JSP > Java Script' 카테고리의 다른 글
2024_07_12_금 (0) | 2024.07.12 |
---|---|
2024_07_11_목 (0) | 2024.07.11 |
2024_07_09_화 (0) | 2024.07.09 |
2024_07_08_월 (0) | 2024.07.08 |
2024_06_21_금 (0) | 2024.06.21 |