프로그래밍 언어/Java

Java) 11/10 - JSP (View), 네비게이션

nomfang 2021. 11. 10. 16:06
728x90
반응형

# JSP

jsp는 MVC모델의 View를 맡아 네비게이션/결과 페이지를 제공하는?

-> 태그 기반으로 작성됨

EL 기법

request.getParameter("cnt"); 의 경우

<a href=life2.jsp?cnt="+ count +">result page로 값을 전달

jsp 파일 : ${param.cnt} 로 값을 전달 받는다

 

# Thread

서블릿 컨텍스트와 서블릿은 이미 생성되어 있음

클라이언트 요청 시 -> request(thread), response 생성됨

LIFE1

@WebServlet("/LIFE1")
public class LifeCycleTest1 extends HttpServlet {
    private int count = 0;
    private static final long serialVersionUID = 1L;


    public LifeCycleTest1() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("1. Servlet 생성");
    }


    public void init() throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("2. init() call by container");
    }


    public void destroy() {
        // TODO Auto-generated method stub
        System.out.println("4. destroy() call by container");
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("service() doGet() call by container");

        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");

        PrintWriter out = response.getWriter();

        out.println("<html><body bgcolor='yellow'>");
        out.println("<h3>Life Cycle Callback Method.. </h3>");
        out.println("<b> Count :: " + ++ count + "</b>");
        out.println("</body></html>");

        out.close();
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

/*
* LIFE1의 문제점
* 1. Ready On 상태 부분이 요청 시 함께 진행됨
* -> load on startup 옵션 지정
* -> xml, annotation 기반
*
* @WebServlet(urlPatterns= {"LIFE2"}, loadOnStartup=1)

*/
@WebServlet(urlPatterns= {"/LIFE2"}, loadOnStartup=1)

/*
* LIFE2의 문제점
* 1. 서버가 꺼지게 되면 필드 값을 영구적으로 잃어버리게 된다
* -> 서블릿 인스턴스가 Death되기 때문에
*
* 해결책
* -> 데이터를 저장 (라이프 사이클 메소드를 연계)
*
* destroy() : 죽기 직전 반드시 호출 - Database에 저장 가능 (Setter or Writer)
* init() : 새롭게 Ready On 할 때, 저장 된 Database의 값을 받아올 수 있다 (Getter or Reading)
*
*/

 

 

 

반응형