[JSP] 11. application 객체

자료공유거나 페이지이동하는 application

(include와 web.xml을 사용하지 않고 내용을 공유한다)

(1) application을 이용한 예제

 

JSP에서 application이라는 내장객체를 사용할때,

 

공유를 위해서 setAttribute(변수명,값), getAttribute(변수명)을 사용합니다.

 

또한, application.getInitParameter("name값"); 을 통해서 시작할때 한번만 값을 초기화한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<body>
<h1>
우리 과정은
<%=application.getInitParameter("title"%>
이며 종료날짜는
<%=application.getInitParameter("enddate"%>
입니다.
</h1>
 
 
<% 
int i=200
String s ="app7";
 
application.setAttribute("share", i); //변수하고자하는이름을 share%>
<%=application.getAttribute("share"%>
</body>
 

 

 

 

 

 

8-2) 우의 코드와 연결되는 코드입니다.

 

또한 setAttribute와 getAttribute의 응용코드입니다. 

 

Attribute는 Object반환되기때문에 필수적으로 값을 저장하기위해서는 형변환해야한다.

 

그리고 setAttribute를 통해 변수에 값을 저장할때 연산도 같이 적어도 상관없다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>
<h1>
우리 과정은
<%=application.getInitParameter("title"%>
이며 종료날짜는
<%=application.getInitParameter("enddate"%>
입니다.
</h1>
 
<% Object share= application.getAttribute("share"); %> <!-- Object타입 -->
<%-- <%= ((String)share).toUpperCase() %>    --%>
 
<% application.setAttribute("share", (int)share+100); %>
<%= application.getAttribute("share"%>
</body>
</html>
 
 
 
 

 

8-3) application의 사용을 위와 다르게 Servlet에서 사용해보았습니다.

 

위의 코드와는 연결됩니다.

 

application의 공유범위는 프로젝트안에 있으면 모든 jsp와 서블릿은 공유할 수 있습니다.

 

application의 공유기간은 실행시, tomcat서버가 종료될 때까지 계속 실행된다입니다.

 

또한, 서블릿을 이용해서 application을 하려면, 객체를 직접 만들어서 사용해야한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ShareServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        ServletContext application = getServletContext(); 
        Object share = application.getAttribute("share");
        application.setAttribute("share",((Integer)share)+1000);
    
        response.setContentType("text/html; utf-8");
        PrintWriter out = response.getWriter();
        out.println("<h3>"+application.getAttribute("share")+"</h3>");
    }
}
 
※ 이는 (1).jsp => (2).jsp => 3.java순서로 실행한다.
 

FileReader를 이용한 로그 읽기 : 파일을 스캐너방식을 이용해서 한줄한줄 반복처리로 전체를 브라우저 출력. (이떄, DB로 저장하는게 아니라 파일로 저장하도록 )

이전 게시글과 반대로 FileReader fr = new FileReader("경로")를 통해서 파일에 저장된 값을 읽어올 객체를 생성합니다. 그리고, 반복문안에서 스캐너에 fr를 대입하고, 한줄씩 읽을 값이 있다면? 한줄씩 line변수에 읽어서 저장한다.
그리고 최종 출력한다. 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.io.*, java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> 파일읽어오기 (log_read)</title>
</head>
<body>
<% 
//파일을 읽는다, 로그Read
    FileReader fr= new FileReader("c:/log.txt");
    Scanner sc= new Scanner(fr);
    while(sc.hasNextLine()==true){ //다음라인에 읽을게 없을때까지 반복
    String line = sc.nextLine(); //한줄 읽기위해
    out.println(line +"<br>"); //브라우저에 한 줄씩 출력
    }
%>
</body>
</html>