일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- linux
- jsp
- ReactJS
- devops
- Design Patterns
- Web Server
- springboot
- Oracle
- Spring
- java
- laravel
- Spring Boot
- Spring Batch
- JVM
- db
- MySQL
- IntelliJ
- 요리
- Gradle
- AWS
- javascript
- elasticsearch
- php
- Git
- ubuntu
- it
- jenkins
- tool
- 맛집
- redis
- Today
- Total
아무거나
[Servlet] 간단 예제 본문
Servlet 란?
- 동적 웹어플리케이션 컴포넌트
- java 확장자
- 클라이언트의 요청에 동적으로 작동하고, 응답은 html을 이용
- java thread이용하여 동작
- MVC패턴에서 Controller로 이용됨.
[이클립스 기준]
1. Project 오른쪽 클릭 -> new -> dynamic web project
- 계속 next누르고 마지막에 Generate web.xml deployment descriptor 체크하고 finish
2. 서블릿 생성
- 프로젝트 오른쪽클릭 -> new -> servlet 클릭하여 생성
# 패키지 : com.javalec.ex
# 클래스 : HelloWorld
# 서블릿은 일반 클래스와 달리 슈퍼클래스로 HttpServlet을 기본적으로 상속받고있다.
** 다 입력 후 next
- 매핑하는곳 -> 기본적으로 클래스명하고 똑같이 되어있다.
- URL 매핑하는곳을 확인하자(URL접근할때 경로이다.) 그리고 next
- 기본적으로 사용할 메소드를 선택 후 finish
3. 실행 확인
[Helloworld.java]
/**
* Servlet implementation class HelloWorld
*/
@WebServlet("/HWorld") // url mapping
public class HelloWorld extends HttpServlet { // HttpServlet를 상속
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloWorld() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HellowWorld~~~");
// response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- http://localhost:8080/helloworld/HWorld 로 접근하자.
4. web.xml에 서블릿 맵핑
너무 길고, 보안에 노출되어 있는 경로를 간단하게 매핑하는 것.
- 기존 경로 : http://localhost:8090/helloworld/servlet/com.javalec.ex.HelloWorld // 주소가 너무 길고 정보가 노출되었다.
- URL 매핑 경로 : http://localhost:8090/helloworld/HWorld
5. web.xml 매핑 방법
- 소스에 url mapping 애노테이션 제거
[HelloWorld.java]
....
//@WebServlet("/HWorld") // url mapping
public class HelloWorld extends HttpServlet { // HttpServlet를 상속
....
- WebContent경로에 있는 web.xml파일
[web.xml]
........
<display-name>helloworld</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>helloworld</servlet-name> <!-- 임의의 이름을 만든다 -->
<servlet-class>com.javalec.ex.HelloWorld</servlet-class> <!-- 매핑할 클래스 파일명을 패키지명을 포함하여 정확히 입력 -->
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/hw</url-pattern> <!-- servlet-class의 클래스를 매핑할 임의의 이름을 입력한다. 주의할점은 /로 시작해야된다 -> 웹 브라우저 접근경로 -->
</servlet-mapping>
</web-app>
** helloworld클래스가 실행되면 /hw로 실행되라.
- http://localhost:8090/helloworld/hw 로 접속해서 확인하자.
6. 어노테이션을 이용한 서블릿 매핑 방법
- 소스에 url mapping 애노테이션 추가
[HelloWorld.java]
....
@WebServlet("/HWorld") // url mapping
public class HelloWorld extends HttpServlet { // HttpServlet를 상속
....
- http://localhost:8090/helloworld/HWorld 로 접속
** JSP는 HTML 코드 안에다가 JSP코드를 넣고 Servlet는 JAVA파일이므로 class의 속성 super class를 가질 수 있고 확장자가 java이다.
Servlet는 반드시 매핑해야된다.
참고: https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp-%EA%B0%95%EC%A2%8C/dashboard
'Java & Kotlin > JSP & Servlet' 카테고리의 다른 글
[JSP] 학습 1 (0) | 2019.12.21 |
---|---|
[Servlet] 서블릿 학습(4) (0) | 2019.12.21 |
[Servlet] 서블릿 학습(3) (0) | 2019.12.21 |
[Servlet] 서블릿 학습(2) (0) | 2019.12.21 |
[Servlet] 서블릿 학습 (1) (0) | 2019.12.21 |