성장 기록 블로그🌴

!1012 JSP & Servlet 2일차! 본문

AI & BigData 교육과정/JavaScript 관련

!1012 JSP & Servlet 2일차!

wlswls2s 2022. 10. 12. 11:28
728x90

< JSP & Servlet 2일차 내용 >

 


◆ JSP & Servlet 기본

개념정리

- URL Pattern - 

http://localhost:8081/Servlet/ex01?num=123

 

=> Servlet 부분은 프로젝트의 경로 : 프로젝트 파일명 (contextPath)

 

< URL Mapping > 

=> url 매핑은 경로 자체는 마음대로 바꿀 순 없지만 이름 자체는 얼마든지 바꿀 수 있음!

 

# PrintWriter 객체

텍스트 출력 스트림에 출력해주는 객체

- response.getWriter() 메소드를 통해 생성!

- out.print() 메소드를 통해 출력!

- PrintWriter out = new PrintWriter();

 

# form 태그 <html문서에서 작성! >

데이터 전송 필수 3가지!

1. 데이터를 가지고 어디로 요청할지 : from태그의 action 속성

<form action="Ex04">
Data : <input type = "text" name="data">


<input type = "submit" value = "데이터전송" >
<button>데이터전송</button>


</form>

2. 어떤 데이터를 가져가는 가 : input태그의 name 속성

Data : <input type = "text" name="data">

3. 언제 데이터(요청)를 보낼 것인가 : submin타입의 input 또는 button 둘 중 사용

<input type = "submit" value = "데이터전송" >
<button>데이터전송</button>

<button>데이터전송</button>

 

< 전체 코드> - HTML코드

#1-1 Ex04DataSend.html

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<!-- h1: 제목 태그 -->
	<h1>Data 보내기</h1>
	
	
	<!-- form태그 : Server로 데이터를 보내주기 위한 태그 -->
	<!--- 데이터 전송 필수 3가지!
	- 1. 데이터를 가지고 어디로 요청할지 : from태그의 action 속성
	- 2. 어떤 데이터를 가져가는 가 : input태그의 name 속성
	- 3. 언제 데이터(요청)를 보낼 것인가 : submin타입의 input 또는 button
	- Servlet으로 보낼 때는 URLMapping만 적어도 된다
	=> action="http://localhost:8081/Servlet/Ex04" 이거 대신 action="Ex04"도가능
	-->
	
	
	<form action="Ex04">
		Data : <input type = "text" name="data">
		
		<!--  둘 중 하나 사용하기! -->
		<input type = "submit" value = "데이터전송" >
		<button>데이터전송</button>
		
	</form>
</body>
</html>

 

< 전체 코드> - Servlet코드

#1-2 Ex04DataSend.java

package com;

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 implementation class Ex04DataSend
 */
@WebServlet("/Ex04")
public class Ex04DataSend extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		//Form 태그 데이터 받아오기
		// input 태그의 data 하나 : 파라미터
		// data들이 request안에 들어있다.
		// request.getParamenter();
		String data = request.getParameter("data");
		
		System.out.println(data);
		

		// PrintWriter 객체 : Servlet이 HTML문서를 응답할 때
		// HTML 문서 안에다가 태그 및 글자를 작성할 수 있는 객체
		
		PrintWriter out = response.getWriter();
		
		out.print("<h1>" + data + "</h1>");
	}

}

 

# Servlet & html 응용 실습 예제 - 두 수의 데이터를 전송받아 0+0 = 00꼴로 합 출력하기!

#2-1 Ex05DataSend.html

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<!-- html에서 숫자 2개를 입력받아 servlet에서 oo + oo = oo 꼴 출력하기 -->
	
	<form action="Ex05">
		<p>
		 <input type = "text" name="data1"> +
		 <input type = "text" name="data2">
		 
		 
		<button>확인</button>
		
		</p>
		
		<!-- input 정수 타입으로 받는 버전!
		 	<input type = "number name="num1">
		 	<input type = "number name="num2">		 	
		-->
	</form>
</body>
</html>

#2-2  Ex05DataSend.java

package com;

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 implementation class Ex05plus
 */
@WebServlet("/Ex05")
public class Ex05plus extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		String data1 = request.getParameter("data1");
		String data2= request.getParameter("data2");
		
		int a = Integer.parseInt(data1);
		int b = Integer.parseInt(data2);
		int result = a+b;
		System.out.println(data1 + "+" + data2 + "=" + result);
		

		// PrintWriter 객체 : Servlet이 HTML문서를 응답할 때
		// HTML 문서 안에다가 태그 및 글자를 작성할 수 있는 객체
		
		PrintWriter out = response.getWriter();
		
		out.print("<h1>" + data1 + "+" + data2 + "=" + result + "</h1>");
		
		
		/* input 정수 타입으로 받는 버전!
	 		int a = Integer.parseInt(request.getParameter("num1") );
	 		int b = Integer.parseInt(request.getParameter("num2") );
	 		int result = a+b
	 		뒤는 동일
	 		
		*/
	}
}

 

# 테이블 태그에 값 차례대로 집어넣기!

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<form action="Ex06">
		<input type = "text" name="num1">
		<input type = "text" name="num2">
		<input type = "text" name="num3">
		<input type = "text" name="num4">
		<input type = "text" name="num5">
		<input type = "text" name="num6">
		
		<button>확인</button>
		
	</form>
	
				
			
	
</body>
</html>

# 테이블 값 대입

package com;

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 implementation class Ex06table
 */
@WebServlet("/Ex06")
public class Ex06table extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		
		int a = Integer.parseInt(request.getParameter("num1"));
		int b = Integer.parseInt(request.getParameter("num2"));
		int c = Integer.parseInt(request.getParameter("num3"));
		int d = Integer.parseInt(request.getParameter("num4"));
		int e = Integer.parseInt(request.getParameter("num5"));
		int f = Integer.parseInt(request.getParameter("num6"));

		// PrintWriter 객체 : Servlet이 HTML문서를 응답할 때
		// HTML 문서 안에다가 태그 및 글자를 작성할 수 있는 객체
		
		PrintWriter out = response.getWriter();
		out.print("<table border = '1'>"
				+ "<tr>"
				+ "<td>" + a + "</td>"
				+ "<td>" + b + "</td>"
				+ "<td>" + c + "</td>"
				+ "<td>" + d + "</td>"
				+ "<td>" + e + "</td>"
				+ "<td>" + f + "</td>"
				+ "</tr>"
				+ "</table>"
		);
		
		
	
	
	
	
	}

}

< 한번 입력으로 데이터 출력하기!>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<form action="Ex06">
		<input type = "text" name="num1">
	
		<button>확인</button>
		
	</form>
	
				
			
	
</body>
</html>

package com;

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 implementation class Ex06table
 */
@WebServlet("/Ex06")
public class Ex06table extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

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

		PrintWriter out = response.getWriter();
		
		out.print("<table border = '1'>");
		out.print("<tr>");
		
		for(int i=1;i<=a;i++)
		{
			out.print("<td>" + i + "</td>");			
		}
		
	
		out.print("</tr");
		out.print("</table>");
				
		
		
	
	
	
	
	}

}

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<!-- 구구단 수 입력하기! -->
	<form action="Ex07">
		출력을 원하는 구구단 수를 입력하세요 <input type = "text" name="num1">
	
		<button>send</button>
		
	</form>
</body>
</html>

package com;

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 implementation class Ex07mul
 */
@WebServlet("/Ex07")
public class Ex07mul extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		int a = Integer.parseInt(request.getParameter("num1"));

		PrintWriter out = response.getWriter();
		
		out.print("<table border = '1'>");
		for(int i=1;i<=9;i++)
		{
			out.print("<tr>");
			out.print("<td>");
			for(int j=1;j<=i;j++)
			{
				
				out.print(  a + "*" + i + "= " + (i*j) );
				out.print("<br>");
				

				
			}
			out.print("</td>");
			out.print("</tr>");
		}
		
		out.print("</table>");
	}

}

 

< 구구단 예제 02 > -  원하는 단 두개를 입력해서 처음 단부터 끝 단까지 단을 출력하고 원하는 색으로 표까지 색칠!

< Ex08makemul.html>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<form action="Ex08">
		색상선택<input type = "color" name = "color"><br>
		<input type = "text" name="num1">에서
		<input type = "text" name="num2">까지의 구구단을 출력
		
		<input type = "submit" value = "출력하기">
	</form>	
</body>
</html>

< Ex08makemul.java>

package com;

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 implementation class Ex08makemul
 */
@WebServlet("/Ex08")
public class Ex08makemul extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	
		
		// 파라미터 수집 : 각각의 파라미터(보내진 데이터)를 가져와서 변수에 담는 과정
		String color = request.getParameter("color");
		int a = Integer.parseInt(request.getParameter("num1"));
		int b = Integer.parseInt(request.getParameter("num2"));
		
		
		// 받아온 데이터를 기반으로 응답 작성
		PrintWriter out = response.getWriter();
		
		
		out.print("<table border = '1' bgcolor = "+color+" >");
		for(int i=a;i<=b;i++)
		{
			out.print("<tr>");
			
			for(int j=1;j<=9;j++) 
			{
				
				out.print("<td>");
				out.print(  i + "*" + j + "= " + (i*j) );
				out.print("</td>");
			}
		
			out.print("</tr>");
		}
		
		out.print("</table>");
	}

}

 

 

 

728x90