HTML을 시작했다 (어제).
JSP와 Servlet은 컴포넌트, 톰캣은 컨테이너 라고 간단하게 개념정리를 하고 시작했다.
톰캣을 통해서 JSP와 Servlet을 처리하는 거다.
1. 톰캣 설치 및 환경변수 설정
Win+R -> sysdm.cpl ,3 -> 환경변수 진입
시스템변수에 이름 CATALINA_HOME 경로 톰캣 설치위치 (나는 C:\Tomcat)
설정 완료 확인을 위해 cmd가 실행중이라면 재실행 후 set catalina_home 입력해서 경로가 나오는지 확인
2. html 작성 및 접속하기
자바에서 java -> package -> project 라면 톰캣에서 Context는 project의 느낌이다.
default Context가 webapps\ROOT\ 이다
톰캣 설치 경로 내 webapps\ROOT\ 안에 html파일을 저장하면
ip주소:8080/파일명.html 로 접속하여 해당 파일을 확인할 수 있다.
아래는 html 기본 문법을 연습한 예제이다
https://codepen.io/hj-rich/pen/BaoEoQx
3. 자바 파일 + 톰캣
Win+R -> sysdm.cpl ,3 -> 환경변수 내 시스템변수 새로만들기 -> 이름 classpath 경로 .;c:\Tomcat\lib\servlet-api.jar;
위 작업을 통해 자바 파일을 작성하고 컴파일할 때 servlet 관련 class를 활용할 수 있도록 설정해준다.
자바 파일을 통해 서버 역할을 하기 위해 저장하고 컴파일할 경로는 아래와 같다
C:\Tomcat\webapps\Root\web-inf\src\*.java
C:\Tomcat\webapps\Root\web-inf\class\
C:\Tomcat\webapps\Root\web-inf\lib\
자바 파일은 ROOT\web-inf\src\ 여기에 보관하고 컴파일 할 때
javac -d ..\class 파일명.java 로 해서 class 폴더 안에 컴파일 결과가 저장되도록 한다
추가할 jar파일은 web-inf 내의 lib 폴더에 두도록 한다
4. 서블릿의 생성, init(), doGet(), dePost(), destroy().
init()메소드는 콜백 메소드다. 호출시점은 서블릿이 생성되는 시점이다.
doGet()메소드는 검색했을 때 끝에 값이 보인다 지금은 끝에 사과가 보인다
doPost()는 보이지 않는다. 따라서 로그인과 같이 값을 숨겨야할 경우에 사용된다.
PreparedStatement에서 ?처리하는 게 생각난다.
doGet()메소드가 default이기 때문에 doPost()를 사용해야 하는 경우엔 지정을 해줘야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package com.hello;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
public void init() {
System.out.println("init()...");
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
System.out.println("doGet()...");
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Page</title>");
out.println("<body>HelloServlet!!<br>안녕하세용용융용 앙냥냥 no Korean T.T</body>");
out.println("</head>");
out.println("</html>");
}
@Override
public void destroy() {
System.out.println("destroy()...");
}
//이게 기본 라이프 사이클이다
//서블릿 생성되면 콜백 init() 호출. -> doPost() -> destroy()
}
|
cs |
HttpServlet 클래스를 상속받아서 메소드들을 오버라이드 했다.
HttpServletResponse 객체 resp를 이용해서 한 줄 한 줄 html문을 전송해줘서 클라이언트가 그 결과를 보게 처리한다.
맨 위에 setContextType을 UTF-8로 지정해주지 않으면 한글은 깨지게 된다.
5. 톰캣 서버측 설정
톰캣 내 ROOT\Web-INF\web.xml 파일을 열어서
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.hello.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
톰캣 내 conf 경로 내 context.xml 파일을 열어서
<Context reloadable="true" privileged="true">
reloadable = "true" 값을 주면 컴파일할 때마다 알아서 destory()후 재실행한다
privileged = "true" 값을 주면 권한을 부여한다.
숙제
'HTML & CSS' 카테고리의 다른 글
CSS 적용 우선순위 (Specificity), JS로 style 다루기 (0) | 2020.11.29 |
---|---|
CSS에 변수와 계산식을 사용해보자! - calc(var(--myVar) + 180px) (0) | 2020.11.28 |
링크 공유될 때 제목과 내용, 이미지 설정하기 : <meta property="og:title" content="!!"> + SEO 구글 검색에 노출시키기 (2) | 2020.10.09 |