JSP & Servlet 32

2020 jsp(java server page) & servlet(ServerApplicationLet) 13.사용자 입력을 통한 GET 요청

form 에서 사용자의 입력값을 어떻게 mapping 시킬까? html에서 사용자의 입력을 처리하는 태그가 form 이다 "안녕하세요"를 몇번 듣고 싶으신가요? 중요한 것은 name 속성과 submit버튼이다. 그리고 action 속성에 서블릿 맵핑 주소를 적어두었다. summit버튼 클릭시 요청이 hello에게 가게되고 (http://~~hello) 입력값이 있다면 ?cnt=(name의 text값) 으로 쿼리스트링을 만들어 준다

JSP & Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 12.기본값 사용하기

사용자가 직접 키값을 주지않아도 응답할 수 있는 방법은 없을까? 방법은 기본 값 설정에 있다. http://~~/hello?cnt=20 에서 http://~~/hello?cnt= http://~~/hello? http://~~/hello 모두 가능하다. 어떻게 해석되는지 살펴보자. http://~~/hello?cnt=20 > "20" http://~~/hello?cnt= > "" http://~~/hello? > null http://~~/hello > null 사용자의 전달을 허용하려면 묵시적으로 약속된 값이 있어야한다. int cnt = 100; 기본 값을 잡아주고 String 변수로 req.getParameter("cnt")의 값을 받고 if 문으로 조건을 걸어둔다고 보면 이렇게 된다 @Overri..

JSP & Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 10.GET 요청과 쿼리스트링

GET요청이란? 클라이언트의 요청이다. 문서를 요청할떄 추가적인 인자를 전달할 수 있다. http://~~/hello > http://~~/hello?cnt=3 같이 키값을 요청하는데 이것을 쿼리스트링 이라고 한다. 즉 질의이다. 서버는 정적인 부분 만이아니라 해당 문서를 만들어 응답해줘야하는 것이다. cnt 는 키이며 3이 값으로 보면된다. 사용자로부터 입력을 받는 방법은 무엇일까? req.getParameter("키값") ; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("UTF-8")..

JSP & Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 9.한글과 콘텐츠 형식 출력하기

한글이 깨지는 이유는 2가지이다. 1.서버에서 한글을 지원하지않는 문자코드로 인코딩한 경우 : 톰캣은 ISO-8859-1 을 기본 문자셋으로 사용한다. 1byte 씩 전달하는데 한글은 1byte로 표현되지 않고 2byte로 표현된다는 것을 알고 있을 것이다. 톰캣의 기본 전송방식으로 인해 깨지게 되는 것이다. 2.서버에서 UTF-8로 인코딩해서 보냈지만 브라우저가 다른 코드로 잘못 해석한경우 : 2byte 씩 보내지만 브라우저가 다른 코드로 잘못 해석(EUC-KR)한 경우 그럼 어떻게 보낼 데이터를 명시할 수 있을까?? reponse.setCharacterEncoding("UTF-8"); 으로 명시하는 것이다. 이는 곧 서버에서 보낼 문자셋을 정의한다. @Override protected void ser..

JSP & Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 8.서블릿 출력 형식을 지정해야 하는 이유

@WebServlet("/hello") public class Nana extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); for (int i = 0; i < 100; i++) { out.println((i + 1) + " : Hello Servlet!!"); } } 결과를 보자. 크롬이 정상적으로 보이지만, 사실 정상적인것은 Edge 이다. 브라우저의 웹문서로 인식하기 때문에 절대로 내려쓰기로 보여질 수가 없는 것이다. html 마크업 ..

JSP &amp; Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 7.어노테이션을 이용한 URL 매핑

@WebServlet("/hello") public class Nana extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); out.println("Hello IDE"); } } 사용자에게 요청할 URL과 클래스를 매핑하기위해서는 web.xml을 사용해야했는데 Annotation을 사용하면 더욱 쉽게 사용이 가능하다. @WebServlet("/hello")에 주목하자 반드시 web.xml에 가서 web-app 설정에서 metadata-com..

JSP &amp; Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 6.Eclipse 를 이용한 Servlet 프로그래밍

HOME Directory 는 webcontent 라는 사실을 기억한다. html, css, jsp 등 파일을 저장한다. 해당 파일을 실행하면 톰캣서버와 연동되어 이클립스 내부에서 바로 실행된다. 프로젝트명이 context가 되는데 기본프로젝트 명은 context명을 갖는게 좋은 것이 절대 아니다. = 해당 프로젝트 우클릭 Properties > web Project Setting > context root 를 /로 변경하면 기본 프로젝트인 ROOT가 된다. 자바 파일은 Java Resources/src에 둔다, 패키지 및 클래스 파일을 만들어보자. 이후 extends HttpServlet 으로 상속을 마치고 service 메서드를 Override 해준다. PrintWriter out = resp.get..

JSP &amp; Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 4. 사용자에게 문자열 출력 및 인사말 건내기

웹 : UI 이며 콘솔UI, 윈도우UI로 나뉜다. 입력과 출력을 담당하는 부분이 웹으로 바뀌는 것이다. 서버에서 클라이언트로 원격으로 출력결과를 보이는 것, 클라이언트로부터 원격으로 입력을 받는 방법을 다루는 것이다. 입 출력내용이 다르기에 그 부분을 이해하는게 가장 중요한 부분이다. public void service(HttpServletRequest request, HttpServletResponse response) Servlet을 만들때 필요한 요청도구 Request , 출력도구는 Response 이다. -->> reponse.getOutputStream(); 스트림 객체를 사용함 (IO 입출력부분) PrintSteam out = new PrintSteam(os, true); 버퍼는 채워져야 보내..

JSP &amp; Servlet 2020.06.27

2020 jsp(java server page) & servlet(ServerApplicationLet) 3.Tomcat에 의한 Servlet 코드 배치와 요청

톰캣에 의한 서블릿 코드 배치와 요청 방법 Class 파일의 약속된 장소가 있다. -> WEB-INF/classes/패키지명/클래스명/클래스파일 하지만 절대로 실행되지 않는다. 사용자에 의해 요청되는 디렉토리가 절대 아니다. 그렇기에 설정과 프로그램 코드를 넣는 것이다. Server의 디렉토리임으로 Client 접근할 수 없는 private 영역인 것이다. 그럼 요청은 어떻게 할까? 흐름을 대략적으로 알아보자 Client -->>GET:1/2/3/4 -->>WAS(톰캣) --->>URL과 맵핑된 Servlet 코드를 찾아서 실행해줌 즉 사용자가 요청한 이름에 Mapping 되어있는 Servlet 코드를 실행하여 결과를 돌려주는 방식이다. 1.사용자에게는 다른 이름으로 요청하게끔 해준다. 2.URL 형식으..

JSP &amp; Servlet 2020.06.27