728x90
Servlet
Servlet이란
자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성늘을 향상하기 위해 사용되는 자바 클래스의 일종이다.
JSP와 비슷하지만 JSP는 HTML 문서 안에 Java코드를 포함하는 반면, 서블릿은 자바코드안에 HTML을 포함하고 있다는 점에서 차이점이 있다.
Servlet | JSP |
자바 코드 안에 HTML 포함 | HTML 문서안에 Java코드 포함 |
Servlet 동작흐름
Servlet Life-Sycle
- Init() : 서블릿이 메모리에 로드될 때 한번만 호출 (코드 수정 시 다시 호출) 🔴
- doGet() : GET방식으로 data전송 시 호출 🟡
- doPost() : POST방식으로 data전송 시 호출 🟡
- service() : 모든 요청은 service()를 통해 doXXX()메소드로 이동 🟡
- destroy() : 서블릿이 메모리에서 해제되면 호출🔴
🔴 : 최초 요청 시 한번만 실행 / 🟡 : 요청시마다 반복 실행
Parameter 전송방식
GET | POST | |
특징 | 전송되는 데이터가 URL뒤 QueryString으로 전달 | URL과 별도로 전송 HTTP header 뒤 body에 입력 스트림 데이터로 전달 |
장점 | 간단한 데이터를 빠르게 전송 form tag뿐만 아니자 직접 URL에 입력하여 전송가능 |
데이터의 제한이 없음. 최소한의 보안유지 효과를 볼 수 있음 |
단점 | 데이터양에 제한이 있다(URL창만큼) 보안상의 문제 |
전달 데이터의 양이 같은 경우 GET보다 느리다 (전송패킷을 body에 구성해야하므로) |
SingleParamServlet.java
package com.ssafy.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;
/*
* 안녕하세요 댕꼬님!!!
* 아이디의 글자색을 서울 : 파랑, 대전 : 오렌지, 구미 : 핑크, 광주 : 초록, 부울경 : 보라
*/
@WebServlet("/singleparam.ssafy")
public class SingleParamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet call!!!!");
// 1. data get
String name = request.getParameter("username");
String id = request.getParameter("userid");
int area = Integer.parseInt(request.getParameter("area"));
// 2. logic >> 인사의 글자색을 서울 : 파랑, 대전 : 오렌지, 구미 : 핑크, 광주 : 초록, 부울경 : 보라
String color[] = {"blue", "orange", "pink", "green", "purple"};
// 3. response page
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println(" <body>");
out.println(" <h2 style=\"color:" + color[area] + "\">안녕하세요. " + name + "(" + id + ")님!!!</h2>");
out.println(" </body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost call!!!!");
// 1. data get
request.setCharacterEncoding("utf-8"); //doGet부분이랑 유일하게 다른 것 내부적으로io가 일어나기때문에 인코딩설정, get은 url로 넘어오기 때문에 ㄱㅊ
String name = request.getParameter("username"); //name으로 가져온다
System.out.println(">>>>>>>>>>>>" + name);
String id = request.getParameter("userid");
int area = Integer.parseInt(request.getParameter("area"));
// 2. logic >> 인사의 글자색을 서울 : 파랑, 대전 : 오렌지, 구미 : 핑크, 광주 : 초록, 부울경 : 보라
String color[] = {"blue", "orange", "pink", "green", "purple"};
// 3. response page
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println(" <body>");
out.println(" <h2 style=\"color:" + color[area] + "\">안녕하세요. " + name + "(" + id + ")님!!!</h2>");
out.println(" </body>");
out.println("</html>");
}
}
single.html
<!DOCTYPE html>
<html lang="ko">
<head>
<title>SSAFY-파라미터전달</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="col-lg-5">
<h5 class="text-center">Servlet을 이용한 파라미터 전달(Single)</h5>
<form name="paramform" method="post" action="/bw/singleparam.ssafy">
<div class="form-group">
<label for="userid">아이디:</label> <input type="text"
class="form-control" placeholder="아이디 입력" name="userid">
</div>
<div class="form-group">
<label for="username">이름:</label> <input type="text"
class="form-control" placeholder="이름 입력" name="username">
</div>
<div class="form-group">
<label for="area">지역:</label> <select name="area"
class="custom-select">
<option value="0">서울</option>
<option value="1" selected>대전</option>
<option value="2">구미</option>
<option value="3">광주</option>
<option value="4">부울경</option>
</select>
</div>
<button type="submit" class="btn btn-primary">전송</button>
</form>
</div>
</div>
</body>
</html>
실행화면
728x90
'WEB' 카테고리의 다른 글
JSP(Java Server Page) (0) | 2022.03.26 |
---|---|
Cookie(쿠키) (0) | 2022.03.25 |
MVC Pattern 이해하기 (0) | 2022.03.23 |
댓글