본문 바로가기

JAVA/JSP

JSP - (Servlet) 서블릿 설명 및 예제 (doGET, doPOST)

반응형

** 서블릿

: java 언어로 웹어플리케이션을 개발하기 위한 기술

종류

서블릿

jsp


서블릿이 다시 중요하게 생각되는 요즘이다.

2000년도 초기까지는 jsp만으로 충분했었다. 하나의 jsp안에 사용자의 

요청에 대한 처리

데이터 처리

보여주기 위한 html 가 뒤섞여 있는 구조이다.

간단한 경우에는 적합하겠지만 복잡한 경우 혹은 수정에 대한 요구가 빈번한 경우에는 부적합하다.


그러나 현재의 웹은 사용자의 요구사항이 복잡해지고 빈번한 수정이 요구되고 있어, 이러한 빈번한 수정요구에 유연하게 대처하기 위한 기법이 필요하다.

프로그래밍 개발 패턴을 고안하기 시작한다.("디자인패턴")



디자인패턴 중 MVC패턴 이라는 것이 유명


M : Model

어플리케이션 데이터 처리 담당

java 클래스

V : View

어플리케이션 표현 담당

jsp

C : Controller

어플리케이션 제어 담당

서블릿or(jsp)




** 서블릿의 예제

jsp의 경우

<%

String name = "홍길동";


%>

안녕하세요. <%= name %> 님!


서블릿의 경우

String name = "홍길동";

// jsp에서 쓸때는 자동생성됬지만 서블릿을 이용할 때는 밑에 세문장을 써줘야함

// 응답방식과 사용할 문자셋을 설정

response.setContentType("text/html");

// html 출력하기 위한 스트림을 설정

response.setCharacterEncoding("UTF-8");


PrintWriter out = response.getWriter();

out.print("안녕" + name + "님");

out.print("<hr>");

out.close();




** 서블릿의 달력 예제

package com.hanb.servlet;


import java.io.IOException;

import java.io.PrintWriter;

import java.util.GregorianCalendar;


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 implementation class Calendar

*/

@WebServlet("/Calendar")

public class Calendar extends HttpServlet {

private static final long serialVersionUID = 1L;


/**

* @see HttpServlet#HttpServlet()

*/

public Calendar() {

super();

// TODO Auto-generated constructor stub

}


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

*      response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

// response.getWriter().append("Served at:

// ").append(request.getContextPath());

// 응답방식 설정

response.setContentType("text/html");

// 응답문자셋 설정

response.setCharacterEncoding("UTF-8");

// 요청한 클라이언트의 브라우저에 출력을 위한 스트림을 얻어온다.

PrintWriter out = response.getWriter();


// 출력할 html을 한방에 내보낸다.

String str = "";


GregorianCalendar today = new GregorianCalendar();

int year = today.get(java.util.Calendar.YEAR);

int month = today.get(java.util.Calendar.MONTH);


str += year + "년";

str += (month + 1) + "월";

str += "<h2>";

str += "<hr>"; // 동적으로 만든다.

str += "<table border='1'>";


str += "<tr>";

for (int i = 1; i <= 31; i++) {


str += "<td>";

str += i;

str += "</td>";


if (i % 7 == 0) {

str += "</tr>";// 선생님은 여기에 <tr> 추가함

}

}

str += "</table>";


out.println(str);


}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

*      response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}


}


---------------------------------------------------------------------------------------------------------




** 서블릿의 doGet 과 doPost 방식



: 사용자가 서비스를 요청하는 방식에는 크게 두가지 방식

get 방식

post 방식

form 태그에 method를 "post"로 하지 않는 이상 기본방식은 get 방식이다.


예제)


Hello02.java(서블릿파일)


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//response.getWriter().append("Served at: ").append(request.getContextPath());

response.setContentType("text/html");

response.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

out.println("Get방식의 요청입니다.");


}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//doGet(request, response);

response.setContentType("text/html");

response.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

out.println("Post방식의 요청입니다.");


}


ex01.jsp( jsp 파일)

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<a href="Hello02">get방식의 요청</a><br>


<form action="Hello02" method="post">

<input type="submit" value="post방식의 요청">

</form>

</body>

</html>

반응형