Back-end/JSP & Servlet
JSP EL(Expression Language)
EL 사용 이전까지는 jsp파일에서 request에서 getAttribute를 통해 값을 꺼내서 코드블록으로 값을 화면에 띄웠는데 EL방식을 이용하면 코드블록을 사용하지 않고도 view코드를 작성할 수 있다. 입니다. //원래 코드블록 방식 ${model} // list를 불러올때 원래 코드블록 방식 ${lists[0]} EL 의 데이터 저장소 pageContext - page내에서 사용할 수 있는 저장소 request session application page > request > session >application 순으로 값을 꺼내오기 때문에 같은 name을 가진 변수를 불러올땐 이 우선순위를 따른다. 하지만 특정한 한 위치에 있는 저장소에서 불러오기 위해선 내장 객체를 이용하면 된다 ${page..
JSP MVC model1 & model2 방식
앞서 model1 방식은 model과 view controller 가 결합된 방식으로 jsp에서 흔히 코드 블록으로 java 코드를 삽입하는 방식을 말한다. 입니다. 하지만 이와 반대로 model2 방식은 controller와 view가 물리적으로 분리된 방식으로 controller에서 포워딩해서 view쪽으로 흐름을 전달하는 방식이다.(dispatcher를 통해서 forwarding된다.) package com.newlec.web; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.h..
JSP 코드 블럭
Jasper는 jsp파일의 html 코드를 out.write라는 코드를 붙여서 java로 실행되게 해준다. (filename.jsp 파일을 filename_jsp.java로 변환해서 실행) jsp파일은 html파일과 다르게 java코드를 코드 블럭을 이용해서 작성할 수 있는데 일반적으로 변수를 선언할때는 기본적인 코드블럭을 쓰며 \ 값을 출력할때는 다음과 같은 코드 블럭을 쓴다. %뒤에=을 붙이면 Jasper는 이 코드를 java파일에서 out.print(x+y)로 변환시켜준다. 메소드를 선언할 때 코드 블럭에는 !를 붙여주면 된다. 또한, Page 지시자라는 것도 존재하는데 이는 페이지를 어떤 방식으로 인코딩할지 지정하는 지시자 역할이다.
servlet get,post 메소드에 특화된 서비스 함수
이전까지는 service라는 메소드를 통해 post와 get요청 모두 다 처리했지만 get,post 요청에 따라 특화된 서비스 함수를 사용할 수도 있다. @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("post req"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("get req"); } 물론 s..
servlet cookie를 이용한 상태 유지
이전까지 공부했던 application(servletcontext)와 session은 서버 측에 저장하는 상태 값이였다면 앞으로 공부할 cookie는 client 쪽에서 갖고 있는 상태 값 저장소이다. cookie를 처음 보낼 때는 WAS측에서 client 측으로 쿠키를 만들어서 보내준다 Cookie cookie = new Cookie(key,value); res.addCookie(cookie); 그 다음 서버 측에서 필요할 때마다 client의 cookie를 읽을 수 있다. Cookie[] cookies = req.getCookies(); //쿠키가 하나가 아니라 여러개로 심어질 수 있기 때문에 배열로 옴 String _c = ""; if (cookies != null) for (Cookie cooki..
servlet session객체를 이용한 상태 유지
사용자가 요청하는 데이터에 대한 값을 req의 getSession을 통해 Session 객체를 이용하여 상태를 저장할 수 있다. 여기서 사용자가 WAS에 요청을 할 때 session id값을 할당받게 되고 WAS는 그 세션값에 해당하는 공간에 상태를 저장하게 된다. session도 앞에서 봤던 servletcontext와 마찬가지로 getAttr와 setAttr를 통해 상태를 저장하거나 불러올 수 있다. package com.newlec.web; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jak..
servlet servlet context 상태 저장소
ServletContext를 통해 저장하고 싶은 value 값을 (key, value) 형태로 저장할 수 있다. package com.newlec.web; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletR..
servlet 입력으로 배열 받는 방법
x: y: num이라는 이름으로 값을 받으면 post 요청할 때 배열로 넘겨준다 다라서 req에서 num 값을 가져올 때 getParameter가 아닌 getParameterValues라는 메소드를 써야한다 package com.newlec.web; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.htt..
servlet utf-8 type 설정 및 serlvet filter 사용
servletresponse의 setCharacterEncoding을 통해 UTF-8로 인코딩할 수 있도록 할 수 있고 setContentType을 통해 html 파일 형태로 내보낼 수 있다! package com.newlec.web; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSe..
servlet 어노테이션을 활용한 url 매핑
그 전에는 web.xml에 파일에 아래를 추가했지만 na com.newlec.web.Nana na /hello 어노테이션을 활용하면 추가해주지 않아도 된다! 대신 web.xml에 파일에서 metadata-complete를 false로 설정해줘야한다. package com.newlec.web; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; im..