본문 바로가기
JSP/Java Script

2024_07_10_수

by 알케니브 2024. 7. 10.

오늘의 코딩순서

(폴더: 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 연산자:(0529 일지 참고) 간단히 말하면, 클래스 타입의 인스턴스(객체)를 생성해주는 역할을 담당함
    형태는 클래스 객체변수 = 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
<%@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: 특정 속성에 값을 변경하거나 새로 지정함
<%@ 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 코드를 생성하는 데 사용
      • 선언문에 선언된 변수를 멤버 변수라고 함
      • 문법: <%!

              멤버 변수 및 메서드를 선언하는 영역

         %>
<%@ 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의 링크만 연결해 보여줌

<%@ 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의 기초 문법 및 구성 요소

  1. 스크립틀릿(scriptlet)
    • JSP에 자바 코드를 삽입할 때 사용
    • 스크립틀릿은 <%로 시작해서 %>로 끝나는 형태이며, 그 사이에 자바 명령문이 들어갈 수 있음
    • JSP 페이지에서 가장 일반적으로 많이 쓰이는 스크립트 요소로 주로 프로그래밍의 로직을 기술할 때 많이 쓰임
    • JSP 페이지가 서블릿으로 변환되고 요청될 때 _jspService() 메서드 안에 선언되는 요소
    • 스크립트릿은 선언문과 달리 선언된 변수는 지역 변수로 선언이 되고 메서드 선언은 할 수 없음
      ------> 만약 메서드를 선언하게 되면 메서드 안에 메서드를 선언한 것!!
    • 자동 초기화가 안되므로 반드시 초기화를 해주어야 함
    • 자바식은 상수나 변수 이름 하나로 구성될 수도 있고, 연산자를 포함할 수도 있으며, return 값이 있는 메소드 호출식이 될 수도 있음
      ex) <%=total %>: 변수 이름 하나 / <%=total+101 %>: 연산자 포함 / <%=Math.sqrt(num) %>: 리턴값이 있는 메소드호출
    • 자바식은 웹 서버 쪽에서 실행되고 그 결과만 웹 브라우저로 전송됨
  2. 익스프레션(expression): ${ 로 시작해서 }로 끝나는 형태
    • 표현식(expression)은 JSP 페이지에서 웹 브라우저에 출력할 부분을 표현하기 위한 것
    • 표현식은 웹 브라우저에 출력을 목적으로 하는 변수의 값 및 메소드의 결과값도 출력됨
    • 스크립트릿 코드내에서 표현식을 쓸 수 없음, 대신 스크립트릿내에서 출력할 부분은 내장 객체의 out객체의 print() 또는 println() 메소드를 사용해서 출력함
    • 표현식 내에서 세미콜론(;)은 생략하는데, 이는 JSP 페이지가 서블릿으로 변환될 때 표현식 부분은 out.print(); 메소드로 변환되어 자동적으로 세미콜론이 붙여지기 때문
  3. 선언부(declaration): 선언문은 JSP 페이지 내에서 필요한 멤버변수나 메소드가 필요할 때 선언해 사용하는 요소로 변수 및 메소드를 선언하고, 선언된 변수는 메소드를 이용해 필요한 독적 HTML 코드 생성에 사용함
  4. 지시자(directive)
    • JSP 엔진에게 특정 작업을 수행하도록 지시하는 역할, 페이지의 상단에 선언됨
    • <%@ 디렉티 이름 속성=“값”속성=“값”… %> 의 형태로  작성
    • JSP 엔진에게 특정 작업을 수행하도록 지시하거나 페이지의 설정을 변경하는 데 사용됨
    • 예시: 언어 설정, 콘텐츠 타입 지정, 다른 파일 포함, 태그 라이브러리 추가 등 다양한 용도로 사용됨
    • 유형: page, taglib, include
  5. 태그 형태 액션(action): <jsp:forward>와 같은 XML

2. 스크립팅 요소

 

3. Implicit 내장

  1. 내장변수 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 페이지의 예외 발생을 처리함
  2. 내장객체 Implicit Object
    • JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체
    • JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함
    • JSP 페이지에 별도의 import문 없이 자유롭게 사용 가능
    • 스크립틀릿 태그나 표혀문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용 가능
  3. 내장 객체의 종류
내장 객체 타입 설명
⭐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