application
이 생성되고 소멸 될 때까지 계속 유지
server
에는 여러 개의 web application이 존재
할 수 있다.사용범위
: 전역 범위
에서 사용하는 저장공간(tomcat서버가 저장되는 공간)생명주기
: WAS가 시작해서 종료할 때까지웹 서버가 유지되는 기간동안 유지
-> application 저장소 선언하기
ServletContext application = arg0.getServletContext();
-> application에 값 저장하기
application.setAttribute("value", value); application.setAttribute("op", op);
-> application에서 값 꺼내기
int x = (int) application.getAttribute("value"); String operator = (String) application.getAttribute("op");
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="calc2" method="post"> <div> <label>입력 : </label> <input type="text" name="value"> </div> <div> <input type="submit" name="operator" value="+"> <input type="submit" name="operator" value="-"> <input type="submit" name="operator" value="="> </div> </form> </body> </html>
"+"
나 "-"
를 클릭하면 첫번 째 입력했던 숫자와application에 저장
되고, 두번 째 숫자를 입력하고"="
을 클릭하면 연산 결과가 출력된다.package com.koit.web.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/calc2") public class MyServlet2 extends HttpServlet{ @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { //application 저장소 선언 ServletContext application = arg0.getServletContext(); PrintWriter out = arg1.getWriter(); String value_ = arg0.getParameter("value"); String op = arg0.getParameter("operator"); int value = 0; if(value_ != null && !value_.equals("")) { value = Integer.parseInt(value_); } if(op.equals("=")) { // 두번째 숫자와 '=' 이 value와 op에 저장됨. int x = (int) application.getAttribute("value"); int y = value; // 두번재 넘어온 숫자 String operator = (String) application.getAttribute("op"); int result = 0; if(operator.equals("+")) { result = x + y; }else { result = x - y; } out.println("결과 : " + result); }else { // op가 +, - 인 경우 또 value와 op값을 받아야하는데, //요청은 단발성이기 때문에 요청이 다시 들어오면 기존 값은 사라진다. // 그렇기 때문에 기존 요청을 application에 저장해놓고 //다시 파라미터를 전달받아야 한다. application.setAttribute("value", value); application.setAttribute("op", op); arg1.sendRedirect("calc2.html"); } }
application 저장소 선언하기
ServletContext application = arg0.getServletContext();
사용자가 처음 입력한 숫자와 '+', '-' 를 파라미터로 받아 변수에 저장한다.
ex) 5+
op변수가 '+', '-' 인 경우 두번째 숫자와 '='의 요청을 받아야하는데,
그렇게 되면 첫 번째 받는 요청의 값이 사라지게 된다.
ex) 3=
그렇기 때문에 첫번째 요청값인 5+를 application 저장소에 저장을 해야한다.
application에 값 저장하기
"value"라는 이름의 value값을 저장하고, "op"라는 이름에 op값을 저장한다.
application.setAttribute("value", value); ex) 5 application.setAttribute("op", op); ex) +
그 다음 두번째 요청 값인 숫자와 '='을 다시 변수에 받아오면
처음 요청된 '+','-' 에 맞게 연산을 해야하기 때문에
application에서 값을 꺼내와야 한다.
application에서 값 꺼내기
(저장할 때 썼던 이름값으로 담겨진 값을 가져온다)
int x = (int) application.getAttribute("value"); String operator = (String) application.getAttribute("op");