bitcamp-web-project ex04패키지
servlet1
web.xml로 배포하는건 바로 eclipse…경로 밑에 있는 폴더 안에서 배포되는거임
WEB-INF에 있는 폴더는 요청할때 톰캣서버가 막기때문에 static 리소스는 거기 두면 안됌!!분명히 얘기했음!!!!!!! 절대두지마세요!!
8080은 톰캣이 자주쓰는 포트번호
원래 서버의 설정파일을 그대로 복사해서 쓰기 때문에 이클립스에서 서버 새로 만들 때 마다 8080임
<form action="/bitcamp-web-project/ex04/s1" method="get">
이름: <input type="text" name="name"><br>
나이: <input type="number" name="age"><br>
<input type="submit" value="전송">
</form>
form action태그
<form action="/bitcamp-web-project/ex04/s2" method="post">
이건 절대경로
절대경로를 적으면 경로 바뀔때 마다 매번 바꿔줘야한다
상대경로를 적으면 s2만 적어주면 된다. 왜냐? 같은 방 안에 담긴 애들이기 때문에!
주소를 지정할 때는 반드시 상대경로를 지정한다. html에서 루트로 시작하는건 절대경로임!!!!!
루트란? localhost:9999/bitcamp……
html의 루트(서버루트) : localhost:9999/
servlet루트 : bitcamp-web-project/
html은 서블릿 아닌데 서블릿 콘테이너한테 요청하면 안됌!!!!!!!
서블릿 콘테이너는 서블릿의 생성실행소멸을 관리하는거지 html같은 정적자원을 관리하지 않음
jsp는 서블릿으로 바뀐 다음에 실행한다. 즉 jsp는 서블릿이나 마찬가지다.
자바스크립트는 서버가 실행하는게 아니고 브라우저가 실행하는거임.
프론트엔드 개발자란 web browser에서 실행하는 프로그램을 개발하는 사람들
우리는..현재 풀스택 개발자임….
상대경로 s2를 적으면 경로는 현재를 기준으로 계산된다.
배포폴더에 먼저 웹서버가 요청한 자원이 있나 없나 찾아보고 없으면 일을 서블릿 콘테이너에게 위임한다.
html바꼈을때 리프레쉬하는거지 servlet은 자동으로 리로딩된다.
get방식이기때문에 서블릿컨테이너가 얘에 대해서 서비스를 호출할 것이고 서비스가 오버로드된 서비스를 호출하고 거기서 클라이언트가 겟ㅇ냐 포스트냐 고르고 우리는 get요청이니까 doget을 호출한다.
boardService가 왜 서블릿 컨테이너에 들어있나? 누군가가 담아놔서. datahandlerListener가 담아놨음!!
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext ctx = request.getServletContext();
BoardService boardService =
(BoardService) ctx.getAttribute("boardService");
// 웹주소에 동봉된 데이터(Query String : qs)를 읽는다.
int no = Integer.parseInt(request.getParameter("no"));
UTF-8로 인코딩 안해도 되는 이유 : 넘어오는게 한글이 아니고 숫자라서.
하지만 읽어올때는?? 반드시 인코딩해줘야함
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
사용자아이디/암호를 get방식으로 보내면 데이터가 cache되기 때문에 겟보다 post방식으로 보내줘야 한다!
테스트를 위해 임의로 만든 객체 : 테스트용 객체 = mockup객체