1. 상태 유지 방법 2. Application 객체를 이용한 상태 유지 방법 책갈피처럼 서블릿을 이어갈 수 있는 상태 값을 저장시켜주는 공간이다. 예로 A라는 서블릿이 실행되고 B라는 서블릿이 실행되도록 한다. 1) 코드 입력 : 결과 : 0 @WebServlet("/calc2") public class Calc2 extends HttpServlet{ @Override protected void service(HttpServletRequest request , HttpServletResponse response) throws ServletException, IOException { //어플리케이션 저장소에 서블릿 값을 저장 ServletContext application = request.getServ..
분류 전체보기
1. 여러 개의 Submit 버튼 사용하기 x : y : 버튼이 2개 생성되며 하나는 value 값이 덧셈, 나머지 하나는 value 값이 뺄셈이다. 버튼 클릭 시 calc라는 서블릿을 실행한다. @WebServlet("/calc") public class Calc extends HttpServlet{ @Override protected void service(HttpServletRequest request , HttpServletResponse response) throws ServletException, IOException { //UTF-8 형식으로 전송하는 것 response.setCharacterEncoding("UTF-8"); //웹 브라우저에 UTF-8 형식으로 읽으라고 하는 것 respon..
1. 웹 동작 과정 톰캣(WAS)에서 Servlet Container에 있는 Servlet에 접근하기 전에 필터를 거치게된다. 해당 필터에서 추가적인 내용을 수행하거나, 다음 서블릿 또는 필터가 작동하거나 작동하지 못 하게 할 수 있다. (필터는 여러개 있을 수 있다.) 2. 필터 생성 public class CharacterEncodingFilter implements Filter { //기존보다 더 추가된 추상 메소드 @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request , ServletResponse response , Filter..
1. POST 요청 GET 요청은 모든 파라미터들을 URL에 담아 전송했지만, POST 요청은 URL이 아닌 body에 포함시켜 전송한다. 따라서 어떤 내용을 전송했는지 URL에서 확인할 수 없다. 입력할 내용이 많은 경우 또는 전송할 내용에 보안상 중요한 내용이 있을 때 사용한다. 2. 코드 제목 내용: form 태그에서 method를 post 방식으로 지정해준다. @WebServlet("/notice-reg") public class NoticeReg extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx..
1. GET 요청을 이용한 파라미터 전달 GET방식을 사용할 때 QueryString을 받는 방법은 아래와 같다. @WebServlet("/hello2") public class Nana extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //UTF-8 형식으로 전송하는 것 response.setCharacterEncoding("UTF-8"); //웹 브라우저에 UTF-8 형식으로 읽으라고 하는 것 response.setContentType("text/html; charset=UTF-8")..
1. 웹에서 한글 파일이 깨지는 이유 톰캣은 기본적으로 ISO-8859-1이라는 방식으로 인코딩하여 문자를 전송한다. 이는 1바이트씩 전송을 수행하는데, 한 글자에 2바이트인 한글은 바이트가 나뉘기때문에 문자가 깨지는 것이다. 또한 웹서버에서는 UTF-8이라는 형식으로 2바이트로 문자를 전송해도, 웹 브라우저에서 다른 인코딩 방식을 지니고 있으면 한글이 제대로 출력되지 않는 문제가 발생한다. 2. 해결 방법 @WebServlet("/hello2") public class Nana extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletE..
1. 루트 폴더에 index.html 생성 WebContent가 루트 폴더이다. 이 폴더에 아래와 같은 index.html을 생성하고 실행시켜보겠다. 환영합니다. 그런데 주소를 보면 프로젝트 폴더가 표시되고 있다. 이는 보안적으로 취약하므로 프로젝트 폴더 표기없이 바로 index.html에 접근할 수 있도록 수정해보겠다. 2. URL에서 프로젝트 폴더명 숨기기 프로젝트 폴더 우클릭 => Properties => Web Project Settings => Context root 에서의 프로젝트명을 '/' 로 치환 => 적용 3. 서블릿 클래스인 Nana 클래스 생성 서블릿 클래스는 src 폴더 밑에 생성한다. 패키지명은 임의로 지어주면 되는데 com.newlecture.web이라고 명명해보겠다. packa..
1. 웹 브라우저에 Servlet 문자열 출력하는 코드 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Nana extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { OutputStream os = response.getOutputStream(); PrintStream out = new PrintStream(os,true); out.println("hello Servlet!!"); } } service함수의 매개..
1. 서블릿 클래스 저장 폴더 classes 폴더에 서블릿 클래스 파일들을 두지만, 해당 폴더는 서버 관리자만이 접속할 수 있으며 사용자가 해당 폴더에 접근할 수 없어야 한다.(WEB-INF 폴더는 외부에서 절대로 접근할 수 없도록 하였다.) 2. 서블릿 호출 과정 따라서 클라이언트가 서버에 무언가를 요청할 때 특정 서블릿이 실행되어야 한다면, 실제 서블릿 클래스 이름이 아닌 숫자와 같은 매핑된 코드로 특정 서블릿이 실행되도록 호출을 한다.(위 사진에서는 4번) 3. 서블릿 코드와 URL 매핑 서블릿 코드를 매핑하는 것은 위와 같다. Nana.class 라는 서블릿을 호출하기 위해서는 hello 매핑된 이름으로 접근하도록 하였다. hello라는 url이 오면 na라는 서블릿을 실행해달라고 하고, na 서..
1. 포인트 컷이란? AOP를 적용할 때 해당 객체의 모든 메소드에 적용하는 것이 아닌, 개발자가 원하는 특정 메소드만 AOP를 적용하는 것을 의미한다. 2. xml 설정 logBeforeAdvice와 logAroundAdvice로 AOP를 실행할 때, classicPointCut에 지정되어있는 total 메소드에만 AOP를 적용하여 실행한다는 의미이다. classicAroundAdvisor classicBeforeAdvisor logAfterReturningAdvice logAfterThrowingAdvice 따라서 proxy에 주입해주는 객체로 기존의 logAroundAdvice -> classicAroundAdvisor로 위에 생성한 객체를 주입해줘야한다. 그렇다면 앞으로 total 메소드에만 AO..