out 내장객체
JSP에는 out이라는 내장객체가 있기때문에 Servlet이랑은 다르게, 별도의 객체생성할 필요가 없습니다.
더 편리하다는 장점이 있겠죠! (+ HTML에서 Java코드를 한 눈에 볼 수 있는 장점까지도 있습니다)
그렇다면, out 내장객체를 사용한 코드를 통해서 기본적인 특성들을 설명하겠습니다.
우선, 기본적인 사용셋팅을 다음과 같이 했습니다.
out을 사용하기위해서 PrintWriter를 import해야합니다.
buffer='1kb'로 버퍼로 크기를 임의로 지정했습니다. (버퍼의 기본공간크기는 8kb)
autoFlush="true"를 통해서 버퍼공간이 꽉차면, 자동으로 autoFlush되도록 설정.
※ 여기서 잠깐!! JSP페이지는 생성된 결과를 곧바로 브라우저에 전송하지 않고 출력버퍼라고 불리는 곳에서 임시로 출력 결과를 버퍼에 저장해두었다가 한번에 웹 브라우저에 전송합니다. 이러한 (출력)buffer를 사용하는 이유는 (1) 작은 데이터를 여러번 전송하는 것보다 한 번 큰 데이터를 전송하므로 전송 성능이 향상된다. (2) 응답결과가 바로 전송되지 않기때문에 JSP실행 도중에 출력버퍼를 지우고 새로운 내용을 보여줄 수 있다. (3) 버퍼가 다 차기전까지는 헤더를 변경할 수 있다 따라서,위의 코드에서는 buffer를 설정해주고 autoflash속성을 부여해주었습니다. |
이제, 기본적인 설정이 끝났다면, out 내장객체에 대한 속성들을 사용하는 코드들을 보도록 하자
out.getBufferSize() : 현재 버퍼값을 출력한다
out.getRemaining() : 쓸 것 다쓰고, 남은 값을 반환한다.
out.println : 브라우저 출력문
out.flush() : 브라우저에 출력하고, 삭제
out.clearBuffer(); : 브라우저에 출력하지않고, 삭제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<%@page import="java.io.PrintWriter"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" buffer="1kb" autoFlush="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> 내장객체 out</title>
</head>
<body>
<%= out.getBufferSize() %> <!-- 자주사용 -->
out.println("<h1> 출력내용</h1>");
<%= out.getRemaining() %>
</body>
</html>
<!-- 모든 jsp는 버퍼크기로 저장된다.
그리고 그때그때출력하지않고, 마지막에 모아두었다가 한꺼번에 출력된다. -->
|
request 내장객체
시작부터 예를 통해서 설명을 해드리도록 하겠습니다.
if(request.getMethod().equals("POST")){
request.setCharacterEncoding("utf-8");
out.println(request.getParameter("a"));
}
else if(request.getMethod().equals("GET")){
out.println(request.getParameter("a"));
}
a.html에서 form태그를 b.jsp로 파라미터들을 전송한다고 한다. 이때, 조건문을 통해서
만약에 doPost메서드로 사용됬다면 인코딩과정을 거져서 a파라미터를 출력한다.
만약에 doGet메서드로 사용됬다면 바로 a파라미터를 출력한다.
※ 이때, a파라미터값은 input태그의 text타입이라고도 추정할 수 있겟죠? 아닐수도 있지만요! 또한, 입력할때는
http://localhost:port:경로명/?a=값을 작성하면 직접경로를 통해 입력할 수도 있어요!
본격적으로 request객체에 대해서
request.getHeader("user-agent")라는 기능도 있습니다. 이는 navigator객체로도 같은 결과를 만들 수 있습니다.
(2)
또한, SimpleDateFormat과 Date객체를 사용하려고 한다.
SimpleDateFormat을 사용해서 년/월/일/시/분/초의 형태를 재설정한다.
재설정한 변수.format(date변수)를 통해 원하는 형태로 현재시간이 출력되는 예제도 접하도록 하였습니다.
(3)
-Djava.net.preferIP4Stack=true 를 run config....에서 작성한다면 IPv6 -> IPv4형태로 현재아이피주소가 출력되게 됩니다.
(4)
response.sendRedirect("http://www.google.com")는 입력경로 자체를 www.google.com으로 재설정한다는 것을 의미해요. 이 코드는 국민은행싸이트에서 보안카드숫자전체입력화면에서 해킹사건으로 사용됬던 코드로써
a태그 링크와도 같다
(5) FileWriter 객체를 이용해서 파일 작성하기. logwriter
FileWriter fw =new FileWriter();
fw.writer("입력할 값을 쓰시오");
fw.close();
※ 로그기록을 간단하게 파일에 저장하기위해--> 내컴퓨터에 여러사용자가 접근시, 그 로그를 txt파일로 확인가능
※ c:\log.txt 파일 없으면 생성하고 저장한다. 있으면 저장한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<%@page import="java.text.SimpleDateFormat, java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.io.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> request, response, 파일쓰기 </title>
</head>
<body>
<%
String clientIP = request.getRemoteAddr();
String fileName = request.getRequestURI();
Date now = new Date();
SimpleDateFormat sd = new SimpleDateFormat("yyyy년도 MM월 dd일 HH시 mm분 ss초");
String now2=sd.format(now);
%>
<%= clientIP+"컴퓨터가"+fileName+"에 접근한 시각은"+now2+"입니다<br>" %>
<%= request.getHeader("user-agent") %>
<% response.sendRedirect("http://www.google.com"); %>
<% FileWriter fw = new FileWriter("c:\\log.txt",true); //또는 \한개로 작성해도된다. 또한, 2번째 매개변수를 true를 두어야지 누적할 수 있다. 안그러면 계속 초기화
fw.write(
clientIP+"컴퓨터가"+fileName+"에 접근한 시각은 "+now2+"입니다.\r\n"); //줄바꿈처리는 \r\
fw.close();
%>
</body>
</html>
|
'WEB 기초 > Jsp' 카테고리의 다른 글
[JSP] 11. application 객체 (0) | 2018.04.23 |
---|---|
[JSP] 10. include객체 (0) | 2018.04.23 |
[JSP] 8. (2-9)단 구구단 (테이블 이용) (0) | 2018.04.23 |
[JSP] 7. 에러 및 주석정리 (0) | 2018.04.23 |
[Only Servlet] 6. 주어진 배열값을 객체에 저장해서 출력하기 (0) | 2018.04.22 |