한글코드
- 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 해줘야 함
- UTF-16 : 모든 문자들을 2byte로 (java채택)
- Unicode
- 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 내장 객체 사용 할 수 없음
- exception : 아무 jsp에서 사용할 수 없음
-
- import
- <%@ page import="java.util.Date, java.text.SimpleDateFormat"%>
- 따로
- <%@ 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")%>로 받음
- forward될 때 전달되는 namevalue값 쓸 때 사용함
- 클라이언트한테 전달 받을 때 사용
- 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 나옴
- 변수 두번 선언해서 에러남
- include 지시자
<!--
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 |