Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- NestedFor
- 환경설정
- 참조형변수
- 한국건설관리시스템
- 컬렉션프레임워크
- Java
- 객체 비교
- 인터페이스
- 다형성
- 예외미루기
- EnhancedFor
- abstract
- cursor문
- 사용자예외클래스생성
- 예외처리
- 집합_SET
- 컬렉션 타입
- 정수형타입
- 자바
- 대덕인재개발원
- 제네릭
- 자동차수리시스템
- 메소드오버로딩
- 어윈 사용법
- 추상메서드
- oracle
- 생성자오버로드
- exception
- GRANT VIEW
- 오라클
Archives
- Today
- Total
거니의 velog
230925_Servlet 1 본문
[server.xml]
[test.jsp]
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
String name = "홍길동";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h2><%= name %>씨 안녕하세요.<br />연습용 페이지입니다.</h2>
</body>
</html>
- http://localhost:8090/webTest/test.jsp
[ServletTest01.java]
package kr.or.ddit.basic;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* 서블릿이란? 컨테이너(서블릿 엔진)에 의해 관리되는 자바 기반 웹 컴포넌트로서
* 동적인 웹 컨텐츠 생성을 가능하게 해 준다.
*
* 이 예제는 배포 서술자(web.xml)을 이용하여 실행할 Servlet을 등록하여 처리하는 예제이다.
*/
/*
* http://localhost:8090/webTest/servletTest01.do
*
* - http ==> 프로토콜
* - localhost ==> 서버 컴퓨터 이름(또는 도메인명) 또는 서버의 IP주소
* - 8090 ==> Port번호 (80번일 경우 생략이 가능하다.)
* - /webTest ==> 컨텍스트 패스 (보통 웹 프로젝트 이름으로 지정한다.)
* - /servletTest01.do ==> 서블릿 요청 패턴
*/
// Servlet클래스는 HttpServlet 클래스를 상속해서 작성한다.
public class ServletTest01 extends HttpServlet {
// 이 클래스에서는 service()메서드 또는 doGet()메서드, doPost()메서드를 재정의해서
// 처리할 내용을 작성한다.
// doGet()메서드나 doPost()메서드는 service()메서드를 통해서 자동으로 호출된다.
// 위 메서드의 매개변수로 주어지는 객체들
// 1) HttpServletRequest객체 ==> 서비스 요청에 관련된 정보 및 메서드를 관리하는 객체
// 2) HttpServletResponse객체 ==> 서비스 응답에 관련된 정보 및 메서드를 관리하는 객체
// doGet()메서드 ==> GET방식의 요청을 처리하는 메서드
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8"); // 응답 문서의 인코딩 방식 설정
response.setContentType("text/html; charset=utf-8"); // 응답 문서의 ContentType 설정
// 처리한 내용을 응답으로 보내기 위해서 PrintWrite객체를 생성한다.
PrintWriter out = response.getWriter(); // 클라이언트와 연결된 PrintWriter객체 생성
// 처리한 내용을 출력한다. (==> 응답으로 전송한다.)
// 방법1) append()메서드 이용하기
out.append("<html>")
.append("<head><meta charset='utf-8' /><title>첫번째 Servlet</title></head>")
.append("<body>")
.append("<h2 style='text-align: center;'>")
.append("안녕하세요, 첫번째 Servlet 프로그램입니다.</h2>")
.append("</body>")
.append("</html>");
}
// doPost()메서드 ==> POST방식의 요청을 처리하는 메서드
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
[web.xml]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<servlet>
<servlet-name>servletTest01</servlet-name>
<servlet-class>kr.or.ddit.basic.ServletTest01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletTest01</servlet-name>
<url-pattern>/test01.do</url-pattern>
</servlet-mapping>
</web-app>
- http://localhost:8090/webTest/test01.do
[ServletTest02.java]
package kr.or.ddit.basic;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* 이 예제는 서블릿 등록을 배포 서술자(web.xml)를 이용하지 않고
* @WebServlet 이라는 애너테이션을 이용하여 등록하는 예제이다.
*
* @WebServlet 애너테이션은 Servlet버전 3.0이상에서 사용할 수 있다.
*
* @WebServlet 애너테이션의 속성들
* 1. name : 서블릿의 이름을 설정한다. ( 기본값 : 빈문자열("") )
* 2. urlPatterns : 서블릿의 URL패턴의 목록을 설정한다. ( 기본값 : 빈배열( { } ) )
* 예) urlPatterns="/url패턴1" 또는 urlPatterns={ "/url패턴1" } ==> 패턴이 1개일 경우
* 예) urlPatterns={ "/url패턴1", "/url패턴2", ... } ==> 패턴이 2개 이상일 경우
* 3. value : urlPatterns와 동일한 기능을 한다.
* 4. description : 주석(설명글)을 지정한다.
*/
@WebServlet(
urlPatterns = {"/test02.go"},
description = "애너테이션을 이용한 서블릿 설정"
)
public class ServletTest02 extends HttpServlet {
// doGet 메서드
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
// 처리한 내용 출력하기
// 방법2) print(), println(), printf() 메서드를 이용한 내용 출력
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>두 번째 서블릿</title></head>");
out.println("<body>");
out.println("<h2>안녕하세요, 두번째 Servlet 입니다...<br />");
out.println("@WebServlet 애너테이션을 이용한 예제입니다.</h2>");
out.println("</body>");
out.println("</html>");
}
// doPost 메서드
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
- http://localhost:8090/webTest/test02.go
[servletTest.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>서블릿 요청 연습</title>
<script type="text/javascript">
window.onload = function(){
document.getElementById("getBtn").addEventListener("click", function(){
location.href = "http://localhost:8090/webTest/servletTest03.do";
});
}
</script>
</head>
<body>
<h2>서블릿 요청 연습</h2>
<br /><hr /><br />
<h3>GET방식 요청하기1 ==> 링크 방식</h3>
<a href="http://localhost:8090/webTest/servletTest03.do">GET방식 요청 1</a>
<br /><hr /><br />
<h3>GET방식 요청하기2 ==> form태그의 method속성 이용하기</h3>
<!--
<form>태그의 속성
action속성 ==> <form>태그에서 구성하여 서버로 보낸 데이터를 받아서 처리할 문서명을 지정하는 속성
method속성 ==> get 또는 post (이 속성이 생략되면 기본적으로 Get방식으로 처리된다.)
-->
<form action="http://localhost:8090/webTest/servletTest03.do" method="get">
<input type="submit" value="GET방식 요청2" />
</form>
<br /><hr /><br />
<h3>GET방식 요청하기3 ==> javascript의 location.href속성 이용하기</h3>
<form>
<input id="getBtn" type="button" value="GET방식 요청3" />
</form>
<br /><hr /><br />
<h3>POST 방식 요청하기 ==> form태그의 method속성을 'post'로 지정한 경우</h3>
<form action="http://localhost:8090/webTest/servletTest03.do" method="post">
<input type="submit" value="POST방식 요청" />
</form>
</body>
</html>
- http://localhost:8090/webTest/basic/servletTest.jsp
[ServletTest03.java]
package kr.or.ddit.basic;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* - Servlet의 동작 과정에 대하여...
*
* 1. 사용자(클라이언트)가 URL을 클릭하여 HTTP요청(Request)을 Servlet Container로 전송(요청)한다.
* 2. 컨테이너는 web.xml에 정의된 'url패턴'을 확인하여 어느 서블릿을 통해 처리해야 할지를 검색한다.
* (로딩이 안 된 경우에는 로딩을 한다. 처음 로딩 시 init()메서드가 호출된다.)
* (이부분 설정의 서블릿 버전 3.0이상에서는 @WebServlet 애너테이션을 이용하여 설정할 수 있다.)
* 3. Servlet Container는 개별 요청을 처리할 쓰레드를 생성하여 해당 서블릿 객체의 service()메서드를 호출한다.
* (이 때 HttpServletRequest객체와 HttpServletResponse객체를 생성하여 매개변수에 넘겨준다.)
* 4. service()메서드는 전송 방식(GET, POST등의 메서드 타입)을 체크하여 적절한 메서드를 호출한다.
* (doGet(), doPost(), doPut(), doDelete() 등)
* 5. 요청 및 응답 처리가 모두 완료되면 HttpServletRequest객체와 HttpServletResponse객체는 자동으로 소멸된다.
* 6. 컨테이너로부터 서블릿이 제거되는 경우에는 destroy()메서드가 호출된다.
*/
// Servlet의 LifeCycle 예제
//@WebServlet(
// urlPatterns = {"/servletTest03.do"},
// description = "서블릿 생명 주기"
//)
@WebServlet("/servletTest03.do")
public class ServletTest03 extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println(this.getServletName() + "에서 init() 메서드 호출");
}
@Override
public void destroy() {
System.out.println(this.getServletName() + "에서 destroy() 메서드 호출");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("service() 메서드 시작...");
// GET방식과 POST방식에 맞는 메서드 호출하기
// 방법1 ==> 부모 클래스인 HttpServlet의 service()메서드에게 위임하기
// super.service(request, response);
// 방법2 ==> 클라이언트의 전송 방식(GET, POST)을 구분해서 직접 메서드 호출하기
// HttpServletRequest객체의 getMethod()메서드를 이용한다.
String method = request.getMethod();
System.out.println("method => " + method);
if("GET".equals(method)) {
doGet(request, response);
}else {
doPost(request, response);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet() 메서드 시작...");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>서블릿 생명 주기 - doGet()</title></head>");
out.println("<body><h2 style='color: red;'>doGet()메서드를 처리한 결과입니다...</h2></body>");
out.println("</html>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost() 메서드 시작...");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>서블릿 생명 주기 - doPost()</title></head>");
out.println("<body><h2 style='color: blue;'>doPost()메서드를 처리한 결과입니다...</h2></body>");
out.println("</html>");
}
}
'대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
230927_Servlet 3 (2) | 2023.09.27 |
---|---|
230926_Servlet 2 (0) | 2023.09.26 |
230922_Log4J (0) | 2023.09.22 |
230921_MyBatis 과제_myBatisBoardTest (0) | 2023.09.21 |
230921_MyBatis 2 (0) | 2023.09.21 |