한글코드

  • ASCII 코드 체계
    • 한글문자를 제외한 나머지 
      • 영문대소문
      • 숫자 (0~9)
      • 특수문자
        • 눈에 보이는 ( $...)
        • 눈에 보이지 않는 (공백, 엔터, 특별한 기능을 가지는..)
      • 0x00~ 0x7f
  • 역사
    • 1970~1980 중반 - ASCII 각 제조사마다 한글 코드 (비표준화)
    • 1987 - 완성형 한글 표준 코드 발표 (정부)
      • KSC5601 ( EUC-KR, CP949 ) - windows
      • 영문 - 1byte (ASCII)
      • 한글 - 2byte
    • 1990 - 지구상에 있는 각 나라의 언어들의 코드 값을 단일화 (통일)
      • Unicode
        • UTF-16 : 모든 문자들을 2byte로 (java채택)
          • 운영체제에 맞춰서 변환해서 읽고, 내보낼 때 변환해서 내보냄
          • 포함되지 않는 언어들이 많음
        • UTF-8 : 모든 문자를 표현 ( 1byte ~ 4byte )
          • 한글은 3byte
          • 리눅스 - 운영체제가 UTF-8
          • setcharacterencoding 해줘야 함

 


  • for문 같은 긴거는 표현식태그보단, 수행문 태그로!


  • 자바스크립트는 브라우저에서 실행되고, 자바코드는 서버에서 수행됨
    • <!-- 
      	2022.01.03(월)
      	+ script : 자바 스크립트 코드
      	+ jsp 실행 결과는 javascript에 영향을 줄 수 있다. 
      	+ java코드는 서버에서
      	+ script는 브라우저에서 실행 됨	
       -->
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>요청 방식에 따른 처리</title>
      <style>
      	input {
      		margin : 3px;
      	}
      </style>
      </head>
      <body>
      	<% if (request.getMethod().equals("GET")) { %>
      		<h2>원하는 칼라와 날짜를 선택하세요</h2>
      		<form method="post" action="/edu/jspsrc/exam7.jsp">
      			칼라 : <input type="color"  name="fcolor" ><br>
      			날짜 : <input type="date"  name="fdate"><br>
      			<input type="submit" value="전송">
      		</form>
      	<% } else { %>	
      			<script>
      				document.body.style.backgroundColor =
      					         '<%= request.getParameter("fcolor") %>';
      			</script>
      			<h2>선택 날짜는 <%= request.getParameter("fdate") %> 이네요..</h2>
      	<% } %>
      </body>
      </html>
    • <%= request.getParameter("fcolor") %> : 서버에서 수행
      • 수행된 결과가 옴
      • jsp코드는 어디든 상관 없음
    • <script> : 브라우저에서 수행
      • html 수행 이후에 실행되는 부분

  • errorPage
    • <!-- 
      	2022.01.03(월)
      	+ length() : nullpointException오류남 ( 500에러 )
      	+ errpage : 수행 오류가 나면 jsp를 대신 응답해라 
       -->
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"   errorPage="errorPage.jsp"  %> 
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      </head>
      <body>
      <h2>errorPage 속성 테스트</h2>
      <hr>
      <%
           String name = request.getParameter("guestName"); //	guestName 대소문자 구분함
      %>
      
      	<h3>당신의 이름은 <%= name %> 이고 이름의 길이는
                 <%= name.length() %> 입니다.</h3>
      </body>
      </html>
      • 어떤 exception이 발생하던, errorPage 응답해라
      • 실행 오류가 발생했을 때, 
      • servlet으로 에러났을 때 에러난거는 안 됨
    • <!-- 
      	2022.01.03(월)
      	+ exam8.jsp에 사용됨
       -->
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8" %>
      <%@ page isErrorPage="true" %>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>errorPage</title>
      </head>
      <body style="text-align:center">
      	<h2>오류 발생했어욤ㅠㅠ</h2>
      	<h3>빠른시일내에 복구하겠습니다...</h3>
      	<img src="error.jpg">
      	<%	
      	    String msg = "오류 원인 : " + exception;	
      		System.out.println("----------------------------------------");
      		System.out.println(msg);
      		System.out.println("----------------------------------------");	
      		exception.printStackTrace();
      	%>
      </body>
      </html>
      • exception : 아무 jsp에서 사용할 수 없음
        • 내장 객체
        • <%@ page isErrorPage="true" %> 줘야만 사용 가능
        • 기본값은 false임 -> excpetion 내장 객체 사용 할 수 없음

  • import
    1. <%@ page import="java.util.Date, java.text.SimpleDateFormat"%>
    2. 따로
      • <%@ page import="java.util.Date" %>
      • <%@ pageimport="java.text.SimpleDateFormat"%>
  • data 30분 뒤
    • plusMinutes
    • calender의 add메소드
	Calendar cal = Calendar.getInstance();	//	자동으로 현재 시점으로
	cal.setTime(nowDate);	// setTime 안 해줘도 됨
	cal.add(Calendar.MINUTE, 30);

 


  • include
    • 서블릿으로 변환하기 전에 일어남
    • 같이 서블릿으로 바뀜
    • 소스를 효율적으로 관리할 수 있게 하는 태그의 기능을 함
    • .jspf로 사용할 것을 권장함
      • jsp파일이여도 상관 없음
    • 주의 사항

 

  • forward
    • <jsp:forward page="admin_new.jsp">
        	<jsp:param name="message" value="Hi! Administrator" />
       </jsp:forward>
      • message전달
      • 받은 jsp는 <%=request.getParameter("message")%>로 받음
        1. forward될 때 전달되는 namevalue값 쓸 때 사용함
        2. 클라이언트한테 전달 받을 때 사용
      • param은 종료 태그 없이 사용
        • /> 닫을 때 '/'줘야함
      • 종료태그 필요 없는 얘들 (hr, br,
        • <hr/>, <br/> 사용 가능 - xml은 엄격하게 이렇게 사용해야함
    • jsp의 액션 태그의 구문은 XML기반으로 함
      • 대소문자 구분
      • 종료태그가 없는 경우에는 시작태그명 뒤에 />를 붙인다.
      • 속성에 값을 할당할 때 인용부호(",")를 반드시 사용한다.
  • include
    <!-- 
    	2022.01.03(월)
    	+ include 액션 태그
     -->
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSP 예제</title>
    </head>
    <body>
    	<h2>include 지시자와 액션태그 비교</h2>
    	<%-- 
    	<hr>
    	<%@ include file="date.jsp" %>
    	<hr>
    	<%@ include file="date.jsp" %>  
    	--%>
    	<hr>
    	<jsp:include page="date.jsp" />
    	<hr>
    	<jsp:include page="date.jsp" />
    	
    </body>
    </html>
    • include 지시자
      • 소스 포함
      • 서블릿 소스 하나 만들어짐
      • 변수 선언 주의
    • include 액션 태그
      • 실행을 별개로 시키고, 결과만 포함
      • ex) a 실행하다가 중지시켜서 b 실행시켜서 결과를 포함시킴 
      • 서블릿 두 개 생김
      • 서블릿 변환할 때 자바코드로 바뀜. 
        • date별개로 실행시키고 가지고 가는 
      • 버퍼에 차곡차곡 넣었다가 브라우저에게 한번에 줌
    • 에러가 있으면 새로운 얘로 컴파일해서 안 만들어 줌
      • 예전꺼 없으면, 컴파일 에러 생겼다가 classNotFoundException 나옴
    • 변수 두번 선언해서 에러남

<!-- 
	2022.01.03(월)
	+ 내장객체
 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP의 내장 객체들</title>
</head>
<body>
	<h2>JSP의 내장 객체들 점검</h2>

	<h3>[ request ]</h3>
	getMethod() : <%=request.getMethod()%><br> 	
	getRequestURI() : <%=request.getRequestURI()%><br>
	getHeader("user-agent") : <%=request.getHeader("user-agent")%><br>
	
    
	<h3>[ out ]</h3>
	<%
	out.print("<h4>out내장 객체로 출력!!</h4>");
	%>
	
    
	<h3>[ session ]</h3>
	getId() : <%=session.getId()%><br> 
	getCreationTime() : <%=new Date(session.getCreationTime())%><br>
	
    
	<h3>[ response ]</h3>
	getStatus() :<%=response.getStatus()%><br> 
	getBufferSize() : <%=response.getBufferSize()%><br> 
	getContentType() :<%=response.getContentType()%>
	<%
	response.addCookie(new Cookie("myCookie", "myValue")); //	쿠키정보를 같이 응답하고 싶을 때
	%>

	
	<h3>[ application ]</h3>
	getContextPath() : <%=application.getContextPath()%><br> 
	getServerInfo() : <%=application.getServerInfo()%><br> 
	getMajorVersion() : <%=application.getMajorVersion()%><br>
	
	
	<H4>Web Application(/edu) 디렉토리의 파일 리스트</H4>
	<%
	java.util.Set<String> list = application.getResourcePaths("/");
	if (list != null) {
		Object obj[] = list.toArray();
		for (int i = 0; i < obj.length; i++) {
			out.print(obj[i] + ", ");
		}
	}
	%>
</body>
</html>​

 

  • redict 사용하고 싶을 때 response사용해서 
  • request.getHeader("user-agent")
    • 클라이언트가 어떤 종류의 브라우저인지
    • 모바일버전인지, PC버전인지
  • out문 사용할 때 수행문 태그 사용해야한다. 
  • jsp는 세션 객체 생성이 기본
    • 세션 객체 생성 코드는 servlet이 바뀔 때 들어간다. 
  • 버퍼 사이즈가 8kbyte가 넘으면 클라이언트에게 보내고 다시 채워짐
    • 한번에 보내는 최대 사이즈가 8kbyte
  • response.addCookie(new Cookie("myCookie", "myValue"))
  • tomcat은 web-project라는 것을 모른다. 
    • edu를 하나의 서블릿 Context라고 생각함
    • web-project라는 것을 이클립스에서 정의한 것
  • application.getServerInfo() : WAS의 이름, 버전

  • jsp가 새로 만들어졌거나, 최초 요청시 servlet으로 바뀜
  • 선언문 태그 : servlet의 멤버 변수
  • 수행문 태그 : 지역변수 
  • 표현식 태그
    • out.print 메서드 호출 문장으로 바뀜
    • 안의 내용이 아규먼트로 넘어감
  • 그냥 html <h2>이러면 out.write 아규먼트로 들어감

 

 

  • 이런 코드를 보고싶으면
  • E:\work_sapce\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\edu\org\apache\jsp\jspsrc
<%
		int local_v = 0;
		member_v += 10;
		local_v += 10;
	%>
	<h1>JSP의 멤버 변수와 지역 변수</h1>
	<hr>
	<ul>
		<li>멤버 변수 : <%= member_v %></li>
	int local_v = 0;
		member_v += 10;
		local_v += 10;
	
      out.write("\r\n");
      out.write("	<h1>JSP의 멤버 변수와 지역 변수</h1>\r\n");
      out.write("	<hr>\r\n");
      out.write("	<ul>\r\n");
      out.write("		<li>멤버 변수 : ");
      out.print( member_v );

 

'study > JAVA 전문가' 카테고리의 다른 글

[ServletJSP] 시험 준비  (0) 2022.01.04
[JSP] java bean, 스코프, MVC모델  (0) 2022.01.04
[fileIUpload,jsp] 서블릿 구현  (0) 2021.12.30
[servlet]요청 재지정  (0) 2021.12.29
[servlet] 상태정보 유지 기술  (0) 2021.12.29

+ Recent posts