요르딩딩
Servlet&JSP 프로그래밍 (04강 ~ 14강) 본문
728x90
반응형
[04. 톰캣 설치 ]
- 아파치 톰캣 사이트에서 압축파일 다운로드
- bin (바이너리) > startup.bat 클릭하면 실행됨 (바로 꺼진다면, java home이 환경변수 설정이 안되어있어서 그럼.)
- 실행 후 바로 종료된다면 !!!
- java home 경로 지정
- window기준 : 시작 > 시스템 > 시스템정보 > 고급 시스템 설정 > 환경변수 > 시스템변수 > JAVA_HOME (jdk경로 지정해야함. 사용자마다 다름)
- JAVA_HOME변수가 없다면 생성.
- 또는 포트가 이미 사용중인지 확인 할것
- java home 경로 지정
- 재가동 후 브라우저에 localhost:8080 입력하면, 고양이 사이트가 자동으로 뜸 ->(index.jsp가 실행되는것임.)
[05. 웹문서 추가]
- 홈 디렉터리 : apache/webapps/ROOT/
- 웹문서가 위치 : apache/webapps/ROOT/nana.txt
- 실행 : http://localhost:8080/nana.txt
- 기본 문서 실행 : http://localhost:8080 또는 http://localhost:8080/index.jsp
- 로컬IP 확인 : cmd > ipconfig 입력
[06. context 사이트 추가]
- http:// IP(or hostname):Port/context/리소스들
- apache/webapps/Root/it/news.txt 실행 : http://localhost:8080/it/news.txt
- 효율적인 관리를 위해 분리하기 (ROOT와 같은 개념으로 여러개 생성가능)
- webapps/ITWeb/news.txt
- webapps/ROOT
- 연결하기
- apache/conf/server.xml 열기
- <Context ~> 추가하기
<Host name="localhost" appBase="webapps" unpackWARs ="true" autoDeploy="true"> <Context path= "it" docBase ="D:/~apache/webapps/ITWeb" privileged="true">
- 서버 재시작
[07. 서블릿 프로그램 만들기]
- server Application Let (servlet) : 서버 어플리케이션 조각 (모든기능이 조각나있다.)
- public class 이름 extends HttpServlet 의 추상클래스를 통해서 was의 HttpServlet servlet을 참조할 수 있음.
- 목록확인 : cmd > dir
- 실행 : Nana.java가 있는 폴더로 이동하여, javac Nana.java 입력 > 서블릿 못 찾음
- 옵션 확인 : javac
- 서블릿 라이브러리 위치 : apache/lib/servlet-api.jar
- 서블릿 사용하기 : javac -cp D:~/apache/lib/servlet-api.jar Nana.java
[08.서블릿 객체 생성과 실행]
- apache/webapps/ROOT/nana.txt
- apache/webapps/ROOT/WEB-INF/web.xml
- apache/webapps/ROOT/WEB-INF/classes/Nana.class
- WEB-INF는 외부에서 접근하면 안된다.
- classes폴더 생성 후 경로를 설정해줘야 한다.
- apache/webapps/ROOT/WEB-INF/web.xml 열기
<servlet> <servlet-name>na</servlet-name> <servlet-class>Nana</servlet-class> </servlet> <servlet-mapping> <servlet-name>na</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
- 서블릿 코드 실행 : http://localhost:8080/hello
- 흰화면이 정상, 오류가 안나면 됨.
[09. 서블릿 문자열 출력]
- 자바 > 콘솔(UI)/웹/윈도우 > 프로그래밍
- HttpServletRequset request, HttpServletResponse response
- 텍스트파일의 java파일을 실행할 경우
- java파일 > 컴파일하여 class파일로 만든 후 > 톰캣의 ROOT 하위로 옮기고 > 톰캣 재가동
- 쓰기는 stream계열과 writer계열이 있고, 다국어의 경우 writer계열을 사용한다. (한국어는 다국어이니깐 writer계열사)
- stream계열 사용하여 출력하기 -
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Nana extend HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
OutputStream os = response.getOutputStream(); // 출력을 위한 Stream계열 사용
PrintStream out = new PrintStream(os, ture); // 바로 flush(출력) 하겠다.
out.println("Hello Servlet!!");
}
}
- 다국어 Writer계열 사용하여 출력하기 -
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Nana extend HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PrintWriter out = response.getWriter // HttpServletResponse의 Writer계열 사용하기
out.println("Hello Servlet!!");
}
}
[10.웹 개발을 위한 이클립스 IDE 준비하기]
- ctrl + F11 = 코드수정 > 컴파일 > 배포 > 톰캣 서버 재시작 > 브라우저로 요청
- 이클립스 다운로드 > workspace생성 > 톰캣 설정
[10. JSP프로젝트의 web.xml에서 빨간색 밑줄로 오류가 발생한다면.]
- Multiple Aunotation~~~에러 발생
- 프로토콜이 http > 보안이 강화된 https로 바뀌었기때문이다.
<?xml ~
<web-app xmlns:xsi = "http:// ~~" // 빨간줄 오류 발생시 http -> https로 모두 변경하면 됨~!!!
[11. 이클립스를 이용한 서블릿 프로그래밍]
- RUN 실행시 홈디렉터리에 있는 문서를 실행함 : index.html 실행됨.
- 톰캣의 디렉터리로 옮겨지고 > 톰캣이 실행되고 > 옮겨진 파일이 실행되는것이다.
- web.xml에서 url-pattern을 servlet에 해당하는 class파일에 매핑시켜준다
[12. 어노테이션을 이용한 URL 매핑]
- @WebServlet("/hello") : 어노데이션을 이용한 URL 매핑하는 방법
- web.xml에 서블릿매핑 정보를 사용하지 않고, 어노테이션으로 바로 활용하기 위해서, web.xml의 <web-app ~ metadata-complete="false"로 해줘야한다.
- 이것은 빌드유형이 메이븐인 스프링프로젝트에서는 따로 사용하지 않는듯 하다.
- 즉, URL을 매핑하는 방법은 2가지이다
- web.xml의 <servlet>, <url-pattern> 이용한 방법
- @WebServlet("/hi") 이용한 방법 ---> 깔끔하게 분업화된 내용을 적용할 수 있다.
[13. Servlet 출력 형식의 이해]
- println이 브라우저에서 줄바꿈이 안되는 이유?
- HTML마크업 언어를 통해서 화면에 랜더링 된다. 그러므로 <br>태그를 써야한다.
- 크롬에서는 왜 <br> 태그가 그냥 나올까?
- 브라우저에 컨텐츠 형식을 알려주지 않은 경우, 자의적인 해석을 한다.
- html(엣지)해석하냐 text(크롬)로 해석하냐 차이가 있음
[14. 한글과 콘텐츠 형식 출력하기]
- ISO-8859-1 (인코딩방식) : 서버에서 한들을 지원하지 않는 문자코드로 인코딩한 경우
- 1바이트씩 보냄
- UTF-8 (인코딩 방식) : 서버에서는 UTF-8로 인코딩해서 보냈지만 브라우저가 다른 코드로 잘못 해석한 경우
- 한글은 2바이트씩 보냄
- 인코딩 방식을 지정해 줘야한다.
- response.setCharacterEncoding("UTF-8");
- 브라우저에서도 인코딩 방식을 변경해줘야한다.
- 이렇게 2개 모두 설정해주기 불편하므로, Response Header에 인코딩 방식을 넣어줘야한다.
- repoonse.setContentType("text/html; charset=UTF-8"); // 브라우저에 인코딩 방식 설정!!!
- 헤더에 인코딩 방식이 전달됨.
- 2개의 코드가 세트로 항상 작성되도록 할것.
- response.setCharacterEncoding("UTF-8"); // 인코딩 방식 설정!!! (이것만하면, 브라우저의 인코딩 방식도 따로 지정해줘야한다.) ->이걸로 보내니!!
- repoonse.setContentType("text/html; charset=UTF-8"); // 브라우저에 인코딩 방식 설정!!! 이걸로 읽어라!!
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Nana extend HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setCharacterEncoding("UTF-8"); // 인코딩 방식 설정!!! (이것만하면, 브라우저의 인코딩 방식도 따로 지정해줘야한다.)
repoonse.setContentType("text/html; charset=UTF-8"); // 브라우저에 인코딩 방식 설정!!!
PrintWriter out = response.getWriter // HttpServletResponse의 Writer계열 사용하기
out.println("Hello Servlet!!");
}
}
728x90
반응형
'[강의] > [서블릿 JSP 강의] (뉴렉처)' 카테고리의 다른 글
Servlet&JSP 프로그래밍 (57강 ~ 67강) (0) | 2024.09.30 |
---|---|
Servlet&JSP 프로그래밍 (46강 ~ 55강) (0) | 2024.09.11 |
Servlet&JSP 프로그래밍 (36강 ~ 45강) (0) | 2024.08.21 |
Servlet&JSP 프로그래밍 (26강 ~ 35강) (0) | 2024.08.09 |
Servlet&JSP 프로그래밍 (15강 ~ 25강) (1) | 2024.06.07 |
Comments