티스토리 뷰
인프런의 해당 강의를 듣고 정리한 내용입니다.
www.inflearn.com/course/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EC%9B%B9%EC%95%B1
# Servlet 파일 생성
1. Maven 프로젝트 생성
org.apache.maven.archetypes:maven-archetype-webapp 선택
2. 프로젝트 내의 pom.xml 파일 수정
pom.xml는 Maven project의 핵심. 해당 프로젝트에 import 되는 jar파일 정보 및 버전정보를 담고 있으며 최종적으로 패키징되는 기준값을 담고 있어서 프로젝트 실행과 배포를 위한 설정을 하는 파일.
dependencies는 pom.xml의 핵심이라고 볼 수 있는 의존성을 정의하는 부분으로. 라이브러리를 불러오는 부분이다.
maven을 통해 불러온 라이브러리들은 Java Build Path에서 Maven Dependencies 하위 목록으로 들어가며 별도 설정이 불가하고 pom.xml을 통해서만 추가/삭제/버전 변경 등이 가능하다.
3. 자바 클래스 생성
프로젝트 - src - main 에서 Directory 생성 (java)
-> 생성된 java Directory에서 Package 생성
-> 생성한 Package에서 자바 클래스 생성
4. 자바 클래스 작성
자바 클래스에서 HttpServlet을 상속받도록 하고
Generate을 누르고 override Methods 에서 doGet 함수 클릭
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8"); //응답방식 결정
PrintWriter out = resp.getWriter();
out.println("Hello~~");
out.close();
}
}
5. 작성한 자바 클래스를 프로젝트에 등록 (2가지 방법)
1) WEB-INF 폴더안의 web.xml에서 <web-app>태그 사이에 아래 내용 추가
<servlet-class> 태그 사이에는 연결할 자바 클래스명 작성
<url-pattern> 태그 사이에는 외부에서 호출할 때 이름 작성
<servlet>
<servlet-name>hello-servlet</servlet-name>
<servlet-class>org.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello-servlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
2) Annotation 방식
자바 클래스 위에 @WebServlet("/HelloServlet") 작성 (괄호 안에 외부에서 호출할 때 이름 작성)
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("Hello~~");
out.close();
}
}
# Tomcat Server 등록
1. 상단에 디버그 부분에 Add Configuration 눌러서 등록
- Tomcat Server - Local 클릭하고 이름과 브라우저 등 지정
- Deployment에서 Artifacts 등록 (myWeb:war exploded : 압축해제된)
- 아래 Application context에 적은 것이 페이지의 메인 이름이 됨 (/myWeb)
2. run 하고 localhost:8080/ 으로 접속.
- localhost:8080/ 뒤에는 위에서 기억했던 Application context에 썼던 이름 적기 (localhost:8080/myWeb)
: index.jsp 파일의 내용이 나타남
- Annotation방식으로 자바 클래스 파일을 프로젝트에 등록할때 썼던 주소로 접속 가능 (localhost:8080/myWeb/HelloServlet)
: 해당 자바 클래스 파일 내용이 나타남
3. jsp 파일 내용을 변경할 경우 서버를 재시작해야만 새로고침이 되는 것 변경하기
- Deployment로 등록한 Artifacts 수정
: 해당 Artifcats의 Output directory를 프로젝트의 src - main - webapp으로 변경 (직접 개발하고 있는 폴더로)
- 이제 코드를 수정한 후 서버 재시작 할 것 없이 F5로 새로고침하면 변경사항 적용 가능
#Maven빌드와 Tomcat Server 실행
1. Maven 메뉴의 Lifecycle에서 자주사용되는 clean, complie, package, install
- compile : 컴파일하며 프로젝트 내에 target폴더 생성
- clean : target 폴더를 삭제
- package : 프로젝트를 export. target 폴더 내에 war파일로 생성됨
2. export하여 배포
package로 export한 war파일을 복사하여 tomcat 폴더 - webapps로 붙여넣기
-> tomcat폴더 - bin - startup.bat 로 tomcat 구동 ( 또는 cmd 창에서 구동가능)
-> tomcat폴더 - webapps에 복사했던 war파일을 압축해제하여 그 디렉토리에 압축해제한 폴더를 만들어 구동하는 것을 볼 수 있음
#tomcat manager 이용하여 WAR파일 배치
위의 WAR파일을 복사하여 구동했던 것을 tomcat manager를 통해서도 가능
1. cmd로 실행하고 있던 tomcat 서버를 shutdown.bat 으로 종료
2. tomcat manager 설정
tomcat 폴더 - conf 에서 텍스트 에디터로 파일을 수정해야함.
code tomcat-users.xml 명령어 입력 : 비쥬얼 스튜디오 코드로 tomcat-users.xml 파일을 열어서 수정
3. vscode에서 tomcat-users.xml에 아래내용 추가
<!--manager를 통해 사용할 기능들 추가-->
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin"/>
<!--사용자를 등록하고 사용자가 사용할 수 있는 role들을 추가-->
<user username="admin" password="tomcat" roles="manager,manager-gui,manager-script,manager-jmx,manager-status,admin"/>
4. localhost:8080/manager 로 tomcat manager 사이트 접속
- 애플리케이션들 여러개 확인 가능
- 경로가 /hello 인 (기본경로) 애플리케이션을 <중지>, <배치된 것을 제거> 버튼 클릭
-> 아래 배치할 WAR 파일에 파일을 선택하고 배치 버튼 클릭 (프로젝트 폴더 - target - war파일)
-> 다시 애플리케이션 목록에 /hello 경로의 애플리케이션이 생기고 실제로 tomcat 폴더에 가보면 WAR파일 확인 가능
'백엔드 및 서버' 카테고리의 다른 글
[ Spring ] DI (Dependency Injection) xml 방식 설명 및 사용법 (0) | 2021.01.22 |
---|---|
[ JSP / Servlet ] MVC 패턴이란? (0) | 2020.12.04 |
[ JSP / Servlet ] Filter 사용하기 (0) | 2020.12.02 |
[ JSP / Servlet ] GET, POST 방식 전송 (0) | 2020.12.02 |
[ JSP / Servlet ] 서블릿 출력 형식, 컨텐츠 형식 , 인코딩 형식 지정하기 - 한글이 깨지거나 원하는 출력이 나타나지 않는다면? (0) | 2020.12.02 |