반응형
반응형
<%@ page contentType="text/html;charset=utf-8" %>

<html>
<head><title>MEMBER 테이블 레코드 삽입</title></head>
<body>

<form action="usingBean_insert.jsp" method="post">
	<table border="1">
		<tr>
			<td>아이디</td>
			<td><input type="text" name="memberid" size="10"></td>
			<td>암호</td>
			<td><input type="text" name="password" size="10"></td>
		</tr>
		<tr>
			<td>이름</td>
			<td><input type="text" name="name" size="10"></td>
			<td>이메일</td>
			<td><input type="text" name="email" size="10"></td>
		</tr>
		<tr>
			<td colspan="4"><input type="submit" value="삽입"></td>
		</tr>
	</table>
</form>
</body>
</html>

메인 페이지입니다.

package ch06.memberRegister;

public class RegisterBean {
	private String memberid;
	private String password;
	private String name;
	private String email;
	
	public String getMemberid() {
		return memberid;
	}
	public void setMemberid(String memberid) {
		this.memberid = memberid;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
} // private은 본인 클래스 내에서만 접근 가능
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import = "java.sql.*" %>
<%  request.setCharacterEncoding("utf-8");%>

<jsp:useBean class = "ch06.memberRegister.RegisterBean" id = "regBean" scope = "session"/>
<!-- 위는 이와 같다 RegisterBean regBean = new RegisterBean(); 
class는 src 자바파일을 의미함-->

<jsp:setProperty name = "regBean" property = "memberid" value = "chang"/>
<!-- 위는 이와 같다 regBean.memberid = "chang" 기본값이 chang 넘어온 거에서 값이 있으면 getProperty에서 바뀜-->

<jsp:setProperty name ="regBean" property = "*" />
<!-- insertForm에 name과 RegisterBean에 필드명하고 같아야한다 -> *를 쓰면 다 입력할 필요 없음 

	private String memberid;
	private String password;
	private String name;
	private String email;
	<input type="text" name="memberid" size="10"></td>....
-->

<html>
<head><title>삽입</title></head>
<body>
<h3>회원정보</h3>
<table bordercolor="#0000ff" border="1">
<tr>
   <td><strong>ID</strong></td>
   <td><strong>PASSWD</strong></td>
   <td><strong>NAME</strong></td>
   <td><strong>EMAIL</strong></td>
</tr>
<td> <jsp:getProperty property="memberid" name="regBean"/>  </td> <!-- regBean.memberid를 가져옴 -->
<td> <jsp:getProperty property="password" name="regBean"/> </td>
<td> <%= regBean.getName() %></td> <!-- regBean 객체를 만들었으니 거기에 있는 값을 가져온다 -->
<td> <%= regBean.getEmail() %> </td> <!-- inserForm name과 regBean.java에 필드명하고 같아야함 email = private String email -->
</tr>
</table>
 


</body>
</html>

 

자바빈 자바빈의 사용이유에 대해서 알아보겠습니다.

 

HTML안의 JAVA인 JSP로 웹 어플리케이션을 작성하다 보면 html 코드와 java 코드가 겹쳐지기 때문에 

가독성이 매우 떨어지게 됩니다. (스크립트릿으로 작성된 걸 의미)

또, JSP 페이지에 뷰(View)와 로직(Logic)을 공존시키면 코드의 재사용성도 현저히 떨어집니다.

JSP라는 녀석이 본래 View의 역할을 담당하기 때문에 이를 분리하여 

빈으로 작성하는 것이 코드의 가독성과 재사용성을 높이는 것이 좋습니다. 

 

이러한 이유로 JavaBean이라고 불리게 되는 것입니다.

 

일단 src에는 클래스를 만드는 곳이죠 여기에는 자바코드가 들어가게 되는 곳입니다.

직접 스크립트릿으로 로직을 짜는게 아니라 여기에서 로직을 짜서 이용할 수 있게 만드는 것이죠

일단 간단하게 id, password, name, email의 getter와 setter를 만들어서 사용해보겠습니다.

 

<jsp:useBean class = "ch06.memberRegister.RegisterBean" id = "regBean" scope = "session"/>

jsp:useBean을 이용해 우리가 만든 클래스를 사용한다고 선언을 해줘야합니다. 

class에는 경로를 적어줍니다. 자기가 만든 경로와 동일하게 적어주시면 됩니다.

scope영역을 지정할 수 있고 id객체명을 지정해줄 수 있습니다.

 

이걸로 RegisterBean 클래스의 regBean라는 객체를 생성한 것과 동일하다고 생각하시면 됩니다.

 

그리고 여기에서 선언한 변수명은 메인페이지의 name과 똑같이 만들어야합니다.

 

<jsp:setProperty name = "regBean" property = "memberid" value = "chang"/>

<jsp:setProperty name = "useBean에서 설정한 name" property = "저장된 변수" value ="defualt값">

 

<jsp:setProperty name ="regBean" property = "*" />

또한 이렇게 property에 *를 쓰면 자동적으로 RegisterBean.java의 변수를 사용할 수 있게 됩니다.

 

<jsp:getProperty property="memberid" name="regBean"/>

<jsp:getProperty property ="저장된 변수" name = "useBean에서 설정한 name"/>

이걸 통해 저장된 변수를 출력할 수 있습니다.

 

<%= regBean.getName() %>

이런식으로 스크립트릿으로 사용도 가능합니다. 하지만 이렇게 쓰면 useBean을 쓰는 이유가 없죠

로직과 뷰를 구분하기 위해서 쓰는 것인데 말이죠

반응형
반응형
<%@ 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>
	<%-- page 영역(pageContext)[1개 JSP파일] <= 
		 request 영역(request)[1개 화면에 해당되는 크기] <
		 session 영역(session)[[웹브라우저영역]  <
		 application 영역[그 상위버전 새 브라우저 열어도 남아있음, 서버에 남아 있어서](application) 
	--%>
	<h5> 4개의 영역과 속성 알아보기</h5>
	
	<% application.setAttribute("testId", "Yongmi"); %> 
	<%-- testId(속성) = "Yongmi" 
	pageContext는 jsp 한 페이지기 때문에 범위를 굳이 안 해줘도 된다 --%>  
	<form method = "post" action = "second.jsp">
		<input type ="submit" value = "2번째 페이지로">
	</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>
<h1> 2번째 페이지</h1>

<h3> setAttribute 내용 : <%= (String)application.getAttribute("testId") %> </h3>
<h3> setAttribute 내용 : <%= (String)application.getAttribute("wrongAttribute") %> </h3>
<%-- index에 선언한 session 범위 testId를 가져올때 사용 법 --%>

</body>
</html>

지금까지 name을 이용해 getParameter로 값을 받았습니다.

이번에는 변수를 선언하는 거처럼 값을 넘기는 걸 배우도록 하겠습니다.

 

JSP에는 페이지에 대한 영역이라는게 있는데 총 4개가 있습니다.

page 영역(pageContext)[1개 JSP파일] <= 
request 영역(request)[1개 화면에 해당되는 크기] <
session 영역(session)[[웹브라우저영역]  <
application 영역[그 상위버전 새 브라우저 열어도 남아있음, 서버에 남아 있어서](application)

📝1. page 영역

page영역으로 값을 선언하면 그 값은 그 JSP페이지에서만 남아 있습니다.

굳이 이러한 방법을 쓸 필요가 없이 그냥 스크립트릿으로 선언하던가 선언문으로 선언하면 되기 때문에

이 영역은 잘 안 쓰이게 됩니다.

 

📝2. request 영역

request영역으로 값을 선언하면 그 값은 1개 화면에 그 변수를 쓸 수 있습니다.

그 화면에는 JSP파일이 여러개로 만들어 졌을수도 1개로 이루어졌을 수도 있습니다. (모듈화 이야기)

 

📝3. session 영역

session영역으로 값을 선언하면 그 값은 웹브라우저내에 계속 남아있습니다.

웹브라우저 영역이라는 건 구글 크롬을 키고 새 페이지를 열고 어디 페이지를 가든 남아있다는 소리입니다.

예시를 들자면 로그인 해놓고 다른 작업을 하다 새페이지를 키고 다시 거기로 들어가면 로그인이 되어있는 거라고

이해하시면 이해하기 쉬울 것입니다.

 

📝4. application 영역

application영역으로 값을 선언하면 그 값은 서버내에 계속 남아있습니다. 

서버를 끄지 않는 이상 그 값은 계속 남아있죠 예를 들자면 크롬을 껏다켜도 서버가 켜져있기 때문에

그 값은 사라지지 않습니다. 우리가 지금 하는 작업으로는 톰캣을 껐다켜야지면 그 값이 사라지게 되는 것이죠

 

 

이제 선언하는 법에 대해서 알아보도록 하겠습니다.

 

영역.setAttribute("속성명", "속성값");

<% application.setAttribute("testId", "Yongmi"); %> 

이런식으로 선언하면 됩니다.

 

(형변환)영역.getAttribute("속성명")

<%= (String)application.getAttribute("testId") %>

이렇게 속성값을 출력하거나 가져올 수있습니다.

또한 만약 속성명이 없다고 해도 에러가 나오는게 아니라 null값을 출력해줍니다.

반응형
반응형
<%@ 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>
<link rel = "stylesheet" href="05style.css">
</head>
<body>

<header> <!-- 상단 부분  -->
	<%@ include file= "05top.jsp" %>
	<% out.println(a); %>	
	<%-- top.jsp에 코드를 카피해서 가져와서 실행 <%@ 지시문이라서 강하기 때문에 코드 카피 --%>
</header>

<section> <!-- linear layout과 유사 여러개 사용 가능 -->
	<h2> 메인 페이지입니다. </h2>
</section>

<footer> <!-- 하단 부분 -->
	<jsp:include page = "05footer.jsp" flush = "false"/>
	<%-- 액션태그는 해당 footer.jsp로 가서 실행후 다시 돌아감 main으로 돌아감
	main에 선언한 a변수가 있으면 그 a변수를 출력하라는 footer.jsp에 적어둬도 사용 불가
	--%>
	<% out.println(a); %>
	
</footer>

</body>
</html>

main 페이지입니다.

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<h4> 메뉴 : <a href="05main.jsp">홈</a>   <a href="05sub1.jsp">학과소개</a>  커뮤니티  오시는 길</h4>
<% int a  = 6;%>

top.jsp 입니다.

 

<%@ page contentType = "text/html; charset=utf-8" %>

<p>
Copyright DONGYANG All Rights Reserved.
</p>

footer.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>
<link rel = "stylesheet" href="05style.css">
</head>
<body>

<header>
	<jsp:include page = "05top.jsp" flush = "false"/>
	<%-- <% out.print(a); %> --%>
</header>

<section>
	<h2> 첫번째 서브페이지입니다!!!!! </h2>
</section>

<footer>
	<jsp:include page = "05footer.jsp" flush = "false"/>
	<%-- <% out.print(a); %> --%>
</footer>

</body>
</html>

sub.jsp 입니다.

 

모듈로 만드는 이유관리하기가 쉽고 유지보수할 때 다 뜯어 고칠 필요 없이 해당 부분만 고치면 되기 때문입니다.

또한 Top.jsp와 Footer.jsp같이 고정적인 부분한 페이지로 돌려 쓸 수 있어서 파일의 양도 줄일 수 있습니다.

 

이렇게 jsp파일을 불러오는 방법은 2가지가 있습니다.

 

1. <%@ include file = "페이지" %>

   <%@ include file= "05top.jsp" %>

 

2. <jsp:include page = "페이지" />

   <jsp:include page = "05footer.jsp" flush = "false"/>

 

이 둘의 차이점이 있는데 include file의 경우 main페이지에서 쓰였습니다.

Top.jsp를 보면 <% int a = 6; %> 가 있는데 include file의 경우 Top.jsp코드를 직접 가져와서 직접 실행시켜서

그 결과물을 가져오기 때문에 a값이 남아있어서 out.print(a)를 했을 때 값이 나오게 된 것이죠

 

하지만 jsp:include page의 경우 Top.jsp의 출력된 결과화면만 가져오기 때문a값이 남아있지 않아서

변수가 없다고 에러가 나오게 됩니다.

반응형
반응형
<%@ 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>forward , sendRedirect 테스트</H2>
<HR>
<form method = post action = "forward_action2.jsp">
	forward action : <input type = text name = username>
	<input type = submit value = "확인"> <!-- URL이 forward_action을 가르킨다 -->
</form>

<form method = post action = "response_sendRedirect.jsp">
	response.sendRedirect : <input type = text name = username>
	<input type = submit value = "확인"> <!-- URL이 control_end를 가르킨다 -->
</form>
</body>
</html>

에는 맨 처음 페이지 화면입니다.

 

 

 

 

<% response.sendRedirect("page_control_end.jsp"); %>

<%//	request.setCharacterEncoding("utf-8"); // post방식을 사용할때 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>
<H2>forward action 및 sendRedirect() 결과</H2>
<HR>
이름 : <%= request.getParameter("username") %> <BR> 
<%-- null값 왜냐하면 control에 요청 Redirect에서 control_end를 요청해라 지시 다시 
클라이언트가 control_end 요청 즉 username은 비어있음 --%>
<%-- forward로 한 경우 control username값하고 forword에 tel도 같이 넘어옴 --%>
전화번호 : <%= request.getParameter("tel") %>	
</body>
</html>

sendRedirect에 대해서 알아보도록 하겠습니다.

sendRedirect페이지를 요청하는 것입니다.

 

<form method = post action = "response_sendRedirect.jsp"> 

첫 페이지에서 SendRedirect 부분에 검색해서 전송을 누르면 response_sendRedirect.jsp(a.jsp)로 이동해

<% response.sendRedirect("page_control_end.jsp"); %> 을 통해 page_control_end.jsp(b.jsp)로 연결합니다.

 

좀 다른 점이 있는데 page_control_end.jsp(b.jsp)바로 넘어가는게 아니라 다시 클라이언트에게 

page_control_end.jsp(b.jsp)열어달라고 명령을 하는 겁니다.

 

<input type = text name = username>

그 과정에서 저장되어있는 username값이 사라지게 되어서 null값이 출력되는 것입니다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<% request.setCharacterEncoding("utf-8"); %>

<jsp:forward page="page_control_end.jsp">
	<jsp:param name = "tel" value = "000-000-0000"/> 
</jsp:forward>

<%-- param태그는 추가적으로 전달하고 싶은 태그 --%>
<%-- page 저기로 이동시키면서 name 하고 value를 같이 보냄 --%>
<%@ 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>forward action 및 sendRedirect() 결과</H2>
<HR>
이름 : <%= request.getParameter("username") %> <BR> 
<%-- null값 왜냐하면 control에 요청 Redirect에서 control_end를 요청해라 지시 다시 
클라이언트가 control_end 요청 즉 username은 비어있음 --%>
<%-- forward로 한 경우 control username값하고 forword에 tel도 같이 넘어옴 --%>
전화번호 : <%= request.getParameter("tel") %>	
</body>
</html>

forward 방식을 통해 페이지 이동을 시킬 시에 sendRedirect처럼하지 않고 바로 페이지로 이동값이 남게 됩니다.

 

<jsp:forward page="page_control_end.jsp">
	<jsp:param name = "tel" value = "000-000-0000"/> 
</jsp:forward>

<jsp:forward page = "이동할 페이지"> 이걸로 페이지를 이동할 수 있습니다.

<jsp:param 속성 = 값 ....>을 이용해 default값을 설정할 수 있습니다. 저는 aa라고 치고 넘겼기 때문에

이름 : tel 이 아니라 aa가 나왔지만 전화번호 같은 경우 입력 안 했기 때문에 param에 입력한 게 나오게 됩니다.

반응형
반응형
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
	table td {border : 1px solid black; padding : 5px}
</style>
<title>Insert title here</title>
</head>
<body>
	<div>
		<H2> request 테스트 폼</H2>
		<HR>
		<form name = form1 method = post action = "request_result.jsp">
			<table>
				<tr>
					<td>이름</td>
					<td><input type = text size = 10 name = username></td>
				</tr>
				<tr>
					<td>직업</td>
					<td>
					<select name = job>
						<option selected> 무직</option>
						<option>회사원</option>
						<option>전문직</option>
					</select>
					</td>
				</tr>
				<tr>
					<td> 지역  </td>
				  	<td> 
				  		<input type = "radio" name ="local" value = "서울"> 서울
				  		<input type = "radio" name ="local" value = "인천"> 인천 <br> 
				  	</td>
				</tr>
				<tr>
					<td>관심분야</td>
					<td>
						<input type =checkbox name = favorite value ="정치">정치
						<input type =checkbox name = favorite value ="사회">사회
						<input type =checkbox name = favorite value ="정보통신">정보통신
					</td>
				</tr>
				<tr>
					<td colspan = 2 >
						<input type = submit value = "확인"><input type = reset value = "취소">
					</td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %> 
<%-- 내장 객체(특별한 상황에 쓰이는)이기 때문에 객체 생성 없이 그냥 메소드 사용 가능 --%>
<%-- request된 것들이 한글이라면 받을 때 문제가 안 생기도록 utf-8로 설정 --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align = "center">
	<H2>request 테스트 결과 - 1</H2>
	<HR>
	
	<table border = 1 cellspacing ="1" cellpadding = "5">
		<tr>
			<td>이름</td>
			<td><%=request.getParameter("username") %>
		</tr>
		<tr>
			<td>직업</td>
			<td><%= request.getParameter("job") %></td>
		</tr>
		<tr>
			<td>지역</td>
			<td>
			<%
				String temp[] = request.getParameterValues("local");
				out.println(temp[0]);
			%></td>
		</tr>
		<tr>
			<td>관심분야</td>
			<td>
				<%
					String favorites[] = request.getParameterValues("favorite");
					//getParameterValues 문자열을 반환
				
					for (int i = 0 ; i < favorites.length; i++){
						out.println(favorites[i]+"<BR>");
					}
				%>
			</td>
		</tr>
	</table>
	<HR>
	<H2> request 테스트 결과 - 2 </H2>
	<table border = 0 >
		<tr> 
			<td>
				1. 클라이언트 IP 주소 : <%= request.getRemoteAddr() %> <BR> <%-- IP주소 --%>
				2. 요청 메서드 : <%= request.getMethod() %> <BR> <%-- 어떤 방식으로 보내는지 Post get --%>
				<% Cookie cookie[] = request.getCookies(); %>
				3. <%= cookie[0].getName() %>에 설정된 쿠키값 : <%= cookie[0].getValue() %><BR>
				4. 프로토콜 : <%= request.getProtocol() %>
			</td>
		</tr>
	</table>
</div>
</body>
</html>

<form name = form1 method = post action = "request_result.jsp">
... <input type = submit value = "확인">

 

form 태그와 input태그 type이 submit을 이용해 form태그 안에 정보를 보낼 수 있습니다.

form 태그에 methodpost방식으로 보낼지 get방식으로 보낼지 정할 수 있습니다. 

post방식과 get방식은 따로 포스팅 했습니다.

action은 어디 페이지로 연결할지에 대해서 적는 것입니다.

확인 버튼을 누르면 request_result.jsp페이지로 정보와 같이 넘어가게 되는 것이죠

 

주의할 게 있는데 post방식으로 보냈을 때 넘어가는 페이지에 이러한 걸 적어야합니다.

<% request.setCharacterEncoding("UTF-8"); %> 

그래야 한글이 깨지지 않고 넘어갑니다.

 

그러면 어떤게 어떤 정보인지 어떻게 알 수 있을까요?

그건 name을 통해 구분이 가능합니다.

<input type = text size = 10 name = username>

여기에서 보면 text를 적는 곳에는 username이라는 곳에 값이 저장되어 넘어간다고 생각하면 됩니다.

 

request.getParameter("name명")

그러면 action에 연결된 페이지에서 request.getParameter("username") 이런식으로 받을 수 있습니다.

 

<input type = "radio" name ="local" value = "서울"> 서울
<input type = "radio" name ="local" value = "인천"> 인천 <br>

라디오버튼에 문제가 생기는데 어떤 라디오버튼이 눌렸는지 알아야 request.getParameter로 가져올 수 있는데

어떤 버튼을 누를지는 선택이니까 이 같은 경우는 name을 똑같이 정하고 value라는 걸 설정

local에 "서울" 이라는 값 또는 "인천"이라는 값이 들어간 겁니다.

 

<input type =checkbox name = favorite value ="정치">정치
<input type =checkbox name = favorite value ="사회">사회
<input type =checkbox name = favorite value ="정보통신">정보통신

체크박스의 경우는 여러개의 값이 들어갈 수 있습니다.

그래서 name이 같은 경우는 배열로 값이 들어가게 되는 것이죠

 

<%
	String favorites[] = request.getParameterValues("favorite");
	//getParameterValues 문자열을 반환
				
	for (int i = 0 ; i < favorites.length; i++){
		out.println(favorites[i]+"<BR>");
    }
 %>

getParameterValues("name명")

이용해 배열로 받고 출력할 때는 인덱스로 접근해서 출력하면 됩니다.

 

반응형
반응형
<%@ page contentType = "text/html; charset=UTF-8" %>
<%@ page buffer="8kb" autoFlush="false" %>
<%-- 8kb 가 default 값 , autoFlush가 false면 다 꽉차면 에러가 난다 default 값은 True
out 객체는 일단 버퍼에 저장후에 출력된다.
--%>
<html>
<head><title>버퍼 정보</title></head>
<body>

버퍼 크기: <%= out.getBufferSize() %> <br>
남은 크기: <%= out.getRemaining() %> <br>
auto flush: <%= out.isAutoFlush() %> <br>

</body>
</html>

JSP페이지는 결과를 곧바로 웹 브라우저에 전송하지 않고, 출력 버퍼에 임시로 출력 결과를 저장했다가

한번에 웹브라우저에 전송합니다.

 

그에 따른 여러 장점이 있습니다. 그 중 하나가 성능이 향상되는데,

그 이유는 한번에 큰 단위로 데이터를 전송하는 것이 가능하기 때문에

네트워크를 비롯한 모든 데이터 교환에서는 작은 단위를 여러 차례 보내는 것보다

큰단위로 한번에 묶어서 보내는 것이 더 높은 성능을 내기 때문입니다.

 

지시문으로 Buffer를 설정할 수 있는데요

<%@ page buffer="8kb" autoFlush="false" %>

 

page지시어의 속성 buffer로 크기를 설정할 수 있고 defualt는 8kb입니다.

autoFlush로 그 만큼 차게 되면 자동으로 출력하면서 내보내줄 수 있습니다.

 

하지만 위에는 JSP 페이지의 결과를 한 번에 출력할 수 있다고 이야기 했는데 왜 이런짓을 하나요?

만약 웹툰을 본다고 하면 웹툰 전체페이지가 다 전송될 때까지 기다렸다가 볼 수 있으면 그 시간동안 기다려야해요

근데 실질적으로 한번에가 아니라 순차적으로 보여지면서 계속 업로드되면서 우리는 앞에 있는 만화장면을 보잖아요

또한 영상도 한번에 다 전송시킬때까지 기다리는게 아니라 보면서 전송되는 형식이잖아요

이게 버퍼를 채우면 그걸 웹브라우저에 보이게 하는 겁니다.

 

out.getBufferSize()

버퍼의 크기가 얼마인지

 

out.getRemaining()

버퍼의 얼마나 찼는지 알 수 있습니다.

 

out.isAutoFlush()

자동적으로 비워주는지 알 수 있습니다.

<%@ page contentType = "text/html; charset=UTF-8" %>
<%@ page buffer="1kb" autoFlush="false" %>
<html>
<head><title>autoFlush 속성값 false 예제</title></head>
<body>

<%  for (int i = 0 ; i < 1000 ; i++) {   %>
1234
<%  }  %>

</body>
</html>

​만약 buffer가 꽉찼는데 자동적으로 안 비워주게 되면 버퍼 오버플로우라는 오류가 나옵니다.

 

<%@ page contentType = "text/html; charset=UTF-8" %>
<%@ page buffer="1kb" autoFlush="True" %>
<html>
<head><title>autoFlush 속성값 true 예제</title></head>
<body>

<%  for (int i = 0 ; i < 1000 ; i++) {   %>
1234
<%  }  %>

</body>
</html>

 

반응형
반응형
<%@ page contentType = "text/html; charset=UTF-8" %>
<html>
<head><title>out 객체</title></head>
<body>

<% 
String gradeStringA=" 10보다 크다";
String gradeStringB=" 5보다 크다";
int grade=7;

   if(grade>10) { %>
        <%= gradeStringA %>
<%}else if (grade>5)  { %>
        <%= gradeStringB %>
<% } %>


<%
     if(grade>10) {  
        out.println(gradeStringA);
     } else if (grade>5)  {
        out.println(gradeStringB);
     }
%>

</body>
</html>

 <%= gradeStringB %>

 out.println(gradeStringB);

 

<%= %> 표현식을 이용해 출력도 가능하고

out.println을 통해 출력도 가능합니다.

반응형
반응형
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import = "java.util.*" %> 
    <%-- <%@ %> : 디렉티브[지시문] JSP 속성 지정 , page : 지시어 language ,contentType : 속성 --%>
	<%-- page : 환경설정 , language : java용어로 해석 , contentType 클라이언트에게 줄 파일의 종류 선언 --%>
	<%-- java.util 다 가져오기 [java.util. 생략가능] --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
안녕하세요. <br>
<!-- html 주석 : 이것만 소스보기에서 나옴-->
<%-- JSP주석 --%>
<% 
	// 스크립트릿 주석내에 주석 /* */
	String bookTitle = "JSP 기초";
	String author = "김동양";
	Date da = new Date();
	out.println("<h5>" + bookTitle + "</h5>");
	// 내장객체 = 기본객체 이미 만들어져 있는 객체 : out
%> <%-- <% : 스크립트릿 자바문 선언 --%>
<%! String dddd = "난 선언부"; %>
<%-- <%! : 선언문 변수 선언은 : 필드(전역) : dddd, 스크립트릿에서 변수 선언은 : 지역변수 : bookTitle --%>
<h5> <%= bookTitle %></h5>
<%-- <%= : 표현식 [변수나 메소드 호출] --%>
저자는 (<%= author %>)입니다.
현재 날짜와 시간은 : <%= da %>
</body>
</html>

JSP 스크립트에 대해서 알아보도록 합시다.

 

📝1. 지시사(Directive) 태그

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import = "java.util.*" %> 

 

<%@ .... %> 이걸 지시사 태그라고 합니다. 환경설정같은 역할을 해줍니다. 

 

일반적인 구조는 <%@ 지시어 속성 = .... %> 이런식입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import = "java.util.*" %> 

 

이번에는 page지시사의 속성들을 알아보도록 하겠습니다.

language 속성 : 스크립트릿 언어를 지정하는 속성입니다. 자바라는 언어를 쓰겠다는 말입니다.

contentType 속성 : 어떤 형식의 문서를 만들지 입니다. 여기선 html

charset 속성 : JSP파일이 어떤 형식으로 인코딩 할 지입니다.

pageEncoding 속성 : 서버가 어떤 형식으로 인코딩해서 웹브라우저로 전송할지

import 속성 : 라이브러리import할 때 사용합니다.

 

📝2. 표현식(Expreesion)태그

 

<%= bookTitle %>

 

<%= ... %> 이걸 표현식 태그라고 합니다. 출력하는 역할을 합니다.

 

일반적으로 <%= 출력할 것(변수 or 메소드) %> 구조입니다.

<%= bookTitle %>

 

📝3. 선언자(Declration)태그

 

<%! String dddd = "난 선언부"; %>

 

<%! ... %> 이걸 선언자 태그라고 합니다. 변수를 선언하는 역할을 합니다.

일반적인 구조는 <%! 선언할 내용 %> 입니다.

<%! String dddd = "난 선언부"; %>

 

📝4. 스크립트릿(Scriptlet)태그

<% 
	// 스크립트릿 주석내에 주석 /* */
	String bookTitle = "JSP 기초";
	String author = "김동양";
	Date da = new Date();
	out.println("<h5>" + bookTitle + "</h5>");
	// 내장객체 = 기본객체 이미 만들어져 있는 객체 : out
%>

일반적으로 <% 자바코드 %> 구조입니다.

 

여기에서도 bookTitle선언했는데 굳이 선언자를 쓸 필요가 있나요 이렇게 생각 하실 수 있는데

선언문에서 선언하면 전역변수가 되는 것이고 스크립트릿에서 선언하면 지역변수가 되는 차이점이 있습니다.

 

📝5. 주석태그

 

html 주석 : <!-- 주석내용 -->

JSP 주석 : <%-- 주석내용 -->

스크립트릿, 선언자태그 주석 : // 주석 내용 , /* 주석 내용 */ 

 

반응형
반응형

📝톰캣 연결

Window - Preference - Sever - Runtime Enviorment - Add - 설치된 버전 선택 - 디렉토리 설정 finish

 

📝인코딩 설정

Window - Preference - Web - CSS, HTML, JSPUTF-8로 설정

Window - Preference - General - Worspace - Text file encodingUTF-8로 설정

 

📝기본 웹브라우저 설정

Window - Web Browser - 사용할 기본 웹브라우저 설정

 

📝JSP 프로젝트 만들기

File - New - others - Dynamic Web Project

WebContent : .jsp 파일 넣는 곳 (META-INF, WEB-INF에만 안 넣으면 된다)

 

이클립스의 워크플레이스에는 환경이나 여러 가지가 저장 되어 있다.

 

반응형