- url맵핑을 하는순간 톰캣이 @webServlet을 찾는다.
- public class Calc extends HttpServlet{ }을 메모리에 올린다.
- "/calc" url요청에 맞게 Calc클래스를 수행한다.
어노테이션을 이용한 URL 매핑
Nana를 실행하려면 사용자에게 요청할 url를 주면서 그 url과 Nana를 맵핑해야한다.
맵핑을 위해 web.xml파일을 사용했었다.
사용자가 주소창에 ?c=10를 쳐서 보이도록했었다.
<input type="text" name="x">+<input type="text" name="y">
구분자 &
사용자가 입력한값을 전달받아서 계산할 서버프로그램 : Calc 클래스 생성하기
직접입력하지말고 불러올것
ctrl + space하면 ->se치면 ->선택 ->오버라이딩된다.
web.xml을 url맵핑을 해줘야한다
metadata-complete="false">
맵핑정보 설정시 xml과 어노테이션으로 할 수있다.
metadata를 true로 하게되면 모든 메타데이터가 web.xml에 있는것으로 된다.( 정보를 xml에서 찾게된다)
false로 하면 어노테이션한부분을 찾게해준다
url은 항상 소문자로
자바코드가 달라지면 재시작할것
@webServlet("/calc")
<form action="/add">
<form> 태그의 action 속성은 폼 데이터(form data)를 서버로 보낼 때 해당 데이터가 도착할 URL을 명시합니다.
html페이지는 값을 받거나 계산하는 능력이없다. -> 정적인 페이지
<form action="서버코드 url">
서버를 재실행하고 3,4를 입력후 덧셈버튼을 누르면 404 오류가 발생한다.
1.프로젝트명을 같이 붙여주거나 2. 내 프로젝이 콘텐트명이 없도록해야한다.(바람직)
프로젝트명떼고 루트를 쓸 수 있게바꾸자
프로젝트가 서버에 있는 자원을 요청할때 항상 이 프로젝트명이 들어가는 문제가 발생한다.(계산기페이지에서 프로젝트명이 url에있음)
프로젝트명이 매번들어가는것은 바람직하지않다.
1 . 해당프로젝트 선택 -> 속성 Properities -> web project settings -> JSPPrj지우고 - > /넣어서 루트로 바꿔준다.-> apply and close
2. 오른쪽 서버탭에서 기존 서버를 지워야한다. delete -> ok
3. 서버를 재실행한다
프로젝트명없이 나온다.
x와 y값을 받아서 사용자화면에 더한 값을 출력해보자
콘솔창반응
입출력은 다문자열만가능하다
사용자가 3,4를 입력하면 3,4라는 문자열이 저장된것
String x_ = req.getParameter("x"); 사용자가 입력한값을 받아서 x에 넣는다.
문자열출력은 resp.getWriter().println(x+y);
Q. resp.getWriter().println(x+y);
PrintWriter out=response.getWriter();
URL창에 출력결과가 나와 클라이언트가 볼 수 있다.
먼저 위의 response는 서버가 클라이언트에게 '응답'한다는 의미를 가진 객체입니다.
서버가 클라이언트에게 '응답'하려면 무조건 response라는 객체를 통해 작업을 해야합니다.
여기서 getWriter()는 '쓰기'를 통해 응답하겠다는 메서드입니다. 데이터타입은 PrintWriter입니다.
html페이지에 원하는 결과를 출력
out.print("Hello Servlet"); 브라우저에 Hello Servelt이 뜬다.
Q. 웹프로그램과 콘솔프로그램의 차이 ?
- 입/출력 도구가 추가되었다.
- 실행을 직접할 수 없다. 톰캣에 의해서 실행되도록 한다.
- 톰캣이 실행될 수있도록 서블릿코드를 만들고 url을 맵핑시켜서 톰캣이 내것을 실행
- 자바와 비슷하다.
Q. 스트림버퍼를 통해 읽어오는것은 모두 문자열이다.
콘솔입력이든 , 파일입력이든, 네트웍 입력이든 모두 버퍼를 쓴다.
문자열 코드를 읽어오는것.
Q.톰캣에 메모리가 언제 올라가는지 ?
요청을 받을때 먼저 메모리에 올라가있는 지 확인, 없으면 메모리에올린다.
자주사용하는 url같은경우 (ex. index) timeout이있다.
처음요청할땐 서블릿이 로드해야하므로 살짝느리다.
Q.request:입력도구 , response:출력도구 는 WAS에만 있나?
입력은 요청하면서 같이온다. 사용자가 요청하면서 가져온데이터를 알려준다.(쿠키 등) WAS는 자바에서 주로 쓰임
어플리케이션실행을 도와줌, 웹서버는 입력 도구가 필요없다.
서버쪽에서 프로그램을 동작시킬 수있는 환경을 갖고있으면 입출력도구를 제공한다
'2021 Newlecture > Servlet & JSP' 카테고리의 다른 글
코드블럭 <%%> <%! %> <%= %> <%@ %> (0) | 2021.04.16 |
---|---|
Server Path / 코드블럭 / 4대 저장소 (0) | 2021.04.15 |
POST와 GET요청 코드 분리하기/서블릿 생명주기/doGET(),doPost() 오버라이드/sendRedirect (0) | 2021.04.14 |
한글깨짐 문제해결 / 계산했던 연산식 출력 / POST와 GET요청 (0) | 2021.04.13 |
사용자가 요구하는 만큼 반복출력 / UTF-8로 설정변경 (0) | 2021.04.08 |
이클립스를 이용해서 서블릿실행 / 웹출력 (0) | 2021.04.07 |
서블릿코드 작성과 컴파일 / 톰캣이 프로그램을 실행하는 과정 (0) | 2021.04.06 |
웹기반의 클라이언트 / 서버프로그램 / Tomcat설치 (0) | 2021.04.05 |