JSP, Servlet 환경설정

강정우·2022년 7월 27일
0

JSP, Servlet, JDBC

목록 보기
6/19
post-thumbnail

sevrlet 사용하기

  1. java project가 아닌 dynamic web project folder를 생성한다.

  2. 현재 우리가 신경쓸 것은 Java Resources 와 src 폴더 뿐이다.
    우선 Java Resources밑에 src폴더에 Servlet 파일을 생성하자

  3. 클래스 이름은 편의상 ex01로 지정하겠다.

  4. 우선 다음과 같이 세팅하고 다음 체크박스들은 다음에 포스팅하겠다.

  5. 다음과 같이 뜬다면 내가 내 pc에 접속했다는 뜻이다.

  6. 다음은 servlet의 구조이다.

sevlet 구조 이해하기

현재 우리의 상황은 클라이언트와 서버를 둘다 동시에 북치고 장구치고 하는 상황이다.
우리가 클라이언트가 되어 서버(본인pc)에 요청(html실행시키기)을 하면 클라이언트pc에 html화면이 뜰것이다. 그러면 양식을 작성하여 제출하면 그때 Servlet이 동작하며 HTML의 form 태그에 명시되어있는 servlet 클래스로 넘어가게된다. 그리고 양식을 제출할 때 모든 정보를 담고있는 request객체가 같이 넘어오는데 .get 함수를 이용하여 클라이언트의 종합적인 정보를 꺼내서 쓰거나 가공하여 새로운 HTML 문서를 만들어 다시 servlet으로 보내는 데 이때 필요한 객체가 printWriter객체이다. 이를 다시 서버에보내 결과적으로 클라이언트가 볼 수 있게 해준다.

sevlet 코드와 함께 이해하기

1. 기본 문법 및 개념

<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;

@WebServlet("/ex01")
public class ex01 extends HttpServlet {
		
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// Servlet은 service가 main 함수를 맡고있다.

		// 누군가 접속했다면 서버에 알림이 가는 코드
		System.out.println("someone's connected");
		
		// request : 서버에 접속하는 사용자의 모든 정보(사용자가 입력한 것도 포함)를 담고있는 객체
		String ip = request.getRemoteAddr();
        // 접속한 사용자의 ip를 받아서 출력해주는 코드
		System.out.println("Clinet's IP is "+ip);
		
		// response : 서버에 접속한 사용자에게 어떠한 데이터를 응답해주는 객체
		response.setContentType("text/html; charset=utf-8");
		
		// 사용자에게 어떠한 파일응답할지 정의해주는 기능 "text/???"
		// response하면 우리눈에 보이진 않지만 비어있는 html파일이 생성이 된다.
		// 그렇다면 servlet과 html을 이어줄 수 있는 통로를 만들어야 한다.
		// 보통 이 통로의 이름을 PrintWriter 라고 함.
        
		PrintWriter out =  response.getWriter();
		out.print("Welcome to JW Server");
		
	}
}
</style>

2. 기본 문법 및 개념(2)

<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;

@WebServlet("/ex02")
public class ex02 extends HttpServlet {

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
        // getParameter는 아래 사진에서 보듯 String type만 받을 수 있다.
        // 따라서 HTML에서 Servlet으로 Integer가 넘어온다면 형 변환은 필수적이다.
		int nu1 = Integer.parseInt(request.getParameter("num1"));
		int nu2 = Integer.parseInt(request.getParameter("num2"));
		System.out.println(nu1+nu2);
		
		
		response.setContentType("text/html;charset-utf-8");
		PrintWriter out =  response.getWriter();
		
		// 아래 코드들은 html 파일로 가기때문에 다 인식한다!
		// print 함수안에는 여러 tag들이 들어갈 수 있다.
		out.print(nu1+nu2+"<br>");
		
	}
}
</style>

  • 이때 HTML의 필수조건들
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>두 수의 합은?</h1>
	<!-- form을 보내는거임 ex02로 -->
	<!-- html과 servlet을 연결해주는 태그 form태그 -->
	<!-- form tag에 action이라는 속성을 추각(어떤 서버페이지로 보낼건지 지정) -->
	<form action="ex02">
	<!-- servlet에서 인식할 수 있도록 name tag를 만들고 -->
		<input type="number" name="num1">
		+
		<input type="number" name="num2">
		<!-- servlet으로 보낼 수 있도록 sumit button도 하나 -->
		<input type="submit" name="합구하기">
</form>
</body>
</html>
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글