JSP, Servlet 환경 설명

강정우·2022년 7월 28일
1

JSP, Servlet, JDBC

목록 보기
2/19
post-thumbnail

annotation

  • 주석을 달다는 뜻으로 ip주소를 보면 이렇게 생겼다 앞서 언급한대로 ip주소:port번호/폴더명/파일명 순이다 원래대로라면 파일명에 full path가 들어가야한다. 하지만 이렇게 주소를 써버린다면 보안성이 매우 취약하고 매우 길이가 길어지므로 비효율적이다.
    이를 방지하기위해 get방식과 port방식이 나왔다.

servlet에서 html 작성하는 법

<style>

package com.example;

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;

// URL Mapping : 현재파일의 경로를 압축시켜주는 것 보안상 경로가 유출되기 때문에 취약/현재파일의 경로가 복잡함
@WebServlet("/table")

public class ex05MakeTable extends HttpServlet {

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

		int num1 = Integer.parseInt(request.getParameter("num1"));

		// table 태그를 브라우저에 출력하시오.
		response.setContentType("text/html;charset=euc-kr");
		// servlet과 HTML의 통로가 생기는 코드
		PrintWriter out = response.getWriter();
		out.print("HTML 페이지 응답");
		out.print("<table border=1>");
		out.print("<tr>");
		for (int i = 1; i <= num1; i++) {
			out.print("<td>" + i + "</td>");
		}
		out.print("</tr>");
		out.print("</table>");

	}

}
</style>
  • out.print에 넣으면 servlet에 의해 다시 html로 들어가기 때문에 태그를 사용할 수 있다.
  • 또한 자바 언어가 기반으로 돌아가기 때문에 자바에 있는 for문 등 다양한 method가 적용가능하다.

HTTP Protocol Method

  • 프로토콜에는 2가지 방식이 있다.
  1. HTTP : 무엇을 보낼지 정하는 규약으로 주로 HTML 문서를 보낸다.
  2. TCP/IP : 어떻게 보낼지 정하는 규약으로 회선교환방식과 패킷교환방식이 있다.
  • 회선 교환방식이란? 데이터를 쪼개지 않고 한큐에 보내는 방식으로 전화같은 것으로 이해하면 된다.
  • 패킷 교환방식이란? 10의 data가 있다면 잘개 쪼개어 보내는 방식으로 중간에 중단되어도 중단된 부분부터 다시 시작할 수 있다는 장점이 있다. 이때 1번 패킷을 header 나머지를 body라고 한다. 가장 위에 있는 파란색 패킷이 header 패킷이다.

1. Get

  1. URL에 데이터를 포함시켜 요청
  2. 데이터를 패킷의 Header(헤더)에 포함하여 전송
  3. 전송하는 데이터의 길이에 한계(브라우저에서 제한)
  4. 보안위 취약
  5. 캐싱할 수 있다.
  6. 속도가 Port방식에 비해 빠르다.

get method

<h1>Get</h1>
	<!-- default값은 get 방식이다. -->
	<form action="ex06" method="get">
		<input type="text" name="content"> 
		<input type="submit" name="Get">
	</form>

encoding

  • get은 url을 통해 data를 전송하기 때문에 url 인코딩방식 자체를 바꿔줘야한다.
  1. 제일 상단 server 폴더에 server.xml을 들어간다.
  2. source 를 누른다.
  3. 63번째 줄에 connector를 수정한다.
  4. EUC-KR은 낡은 방식이고 UTF-8은 최신 방식이다.

2. Port

  1. URL에 데이터를 노출하지 않고 요청
  2. 데이터를 패깃의 Body 부분에 담아 전송
  3. 전송하는 데이터의 길이에 제한이 없음
  4. 보안에 강함
  5. 캐싱할 수 없음

port method

<h1>Post</h1>
	<form action="ex06" method="post">
		<input type="text" name="content"> 
		<input type="submit" name="Post">
	</form>

encoding

  1. 앞서 언급했듯 port방식은 data의 패킷이 body에 담겨 가기때문에 servlet 파일 자체를 수정해 주어야한다.
  2. 따라서 거의 그냥 default처럼 일단 쓰고 보자!!

3. service

  1. java의 main과 같은 메소드이며 만약 port방식과 get방식이 둘다 공존한다면 service 방식이 호출된다.

그렇다면 왜 그럴까?

service를 안 쓰면 둘 중 하나가 호출된다.

또한 갯과 포스트를 둘다 호출할 일이 없다. 왜냐하면 어차피 넘어오는 값이 servlet에서 get이다 post다 둘중하나만 처리한다. 따라서 service 함수 하나만 쓴다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글