JSP(2023-03-27)

권단비·2023년 3월 27일
0

IT

목록 보기
107/139

[함수오버라이딩]

doGet / doPost : 함수오버라이딩
애너테이션(@) : 하나의 기능이 있는 함수와 동일한 기능을 한다.

Servlet : 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종

HttpServlet : Http 프로토콜을 캡슐화한 객체

・HttpServlet 클래스에서 사용자 요청을 처리하는 doGet/doPost 메서드는 모두 HttpServletRequest와 HttpServletResponse 객체를 매개변수로 가지고 있다.
・HttpServletRequest와 HttpServletResponse 객체는 서블릿과 클라이언트 사이를 연결해주는 중요한 객체들 이다.
[계산 : html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="FormEx" method="get">
		이름 : <input type="text" name="name" size=10></br> ID : <input
			type="text" name="id" size=10></br>
			<input type="checkbox" name="hobby" value="cook">요리
			<input type="checkbox" name="hobby" value="run">조깅
			<input type="checkbox" name="hobby" value="swim">수영
			<input type="checkbox" name="hobby" value="sleep">잠~~<br />
			<input type="radio" name="major" value="kor">국어
      		<input type="radio" name="major" value="eng" checked="checked">영어
      		<input type="radio" name="major" value="mat" >수학
			<input type="submit" value="전송">
			<input type="reset" value="리셋">
	</form>
</body>
</html>
--------------------------------------------------------------------------
[계산 : java]
package edu.global.ex;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
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을 상속받아서 Servlet 파일이라 부른다.
/**
 * Servlet implementation class HelloWorld
 */
@WebServlet("/FormEx") // http://localhost:8282/servelt_example/formex
public class formex extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public formex() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// html에서 method가 get방식이면 해당 메소드 실행
		System.out.println("doGet() ..");
		System.out.println(request.getRemoteAddr());
		System.out.println(request.getRemoteHost());

		request.setCharacterEncoding("UTF-8");

		//	이름 : <input type="text" name="name" size=10></br> name에 적혀있는 데이터와 동일하게 써야한다.
		String name = request.getParameter("name");
		String id = request.getParameter("id");
		String[] hobbys = request.getParameterValues("hobby");
		String major = request.getParameter("major");

		System.out.println(name);
		System.out.println(id);

		response.setContentType("text/html; charset=EUC-KR"); // 한글 지원
		PrintWriter out=response.getWriter();

		out.print("<html><head></head><body>");
		out.print("아이디:" + id + "<br/>");
		out.print("전공:" + major + "<br/>");
		out.print("취미들:" + Arrays.toString(hobbys) + "<br/>");
		out.print("이름:" + name + "<br/>");
		out.print("</body></html>");
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// html에서 method가 post방식이면 해당 메소드 실행
		System.out.println("doPost() ..");
		System.out.println(request.getRemoteAddr());
		System.out.println(request.getRemoteHost());

		request.setCharacterEncoding("UTF-8");

		//	이름 : <input type="text" name="name" size=10></br> name에 적혀있는 데이터와 동일하게 써야한다.
		String name = request.getParameter("name");
		String id = request.getParameter("id");

		System.out.println(name);
		System.out.println(id);

		response.setContentType("text/html; charset=EUC-KR"); // 한글 지원
		PrintWriter writer=response.getWriter();

		writer.print("<html><head></head><body>");
		writer.print("아이디:" + id + "<br/>");
		writer.print("이름:" + name + "<br/>");
		writer.print("</body></html>");
	}
}
[결과값]
doGet() ..
0:0:0:0:0:0:0:1
0:0:0:0:0:0:0:1
aa
ㅂㅂ


[계산 : html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="Circle" method="post">
	반지름 : <input type="text" name="radius" value="" size=10></br>
			<input type="submit" value="전송">
			<input type="reset" value="리셋">
	</form>
</body>
</html>
--------------------------------------------------------------------------
[계산 : circle]
package edu.global.ex;
public class Circle{
	private double radius;
	public Circle(double radius) {
		this.radius=radius;
	}
	public double getArea() {
		return radius * radius * Math.PI;
	}
}
--------------------------------------------------------------------------
[계산 : java]
package edu.global.ex;
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("/Circle") // http://localhost:8282/servelt_example/formex
public class CircleEx extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public CircleEx() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// html에서 method가 get방식이면 해당 메소드 실행
		System.out.println("doGet()");

		request.setCharacterEncoding("UTF-8");
		String radius = request.getParameter("radius");

		Circle circle = new Circle(Double.valueOf(radius));
		//==================================================
		response.setContentType("text/html; charset=UTF-8"); // 한글 지원
		PrintWriter out=response.getWriter();

		out.print("<html><head></head><body>");
		out.print("반지름:" + radius + "<br/>");
		out.print("원의 넓이:" + circle.getArea() + "<br/>");
		out.print("</body></html>");
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// html에서 method가 post방식이면 해당 메소드 실행
		System.out.println("doPost()");

		request.setCharacterEncoding("UTF-8");
		String radius = request.getParameter("radius");

		Circle circle = new Circle(Double.valueOf(radius));
		//==================================================
		response.setContentType("text/html; charset=UTF-8"); // 한글 지원
		PrintWriter out=response.getWriter();

		out.print("<html><head></head><body>");
		out.print("반지름:" + radius + "<br/>");
		out.print("원의 넓이:" + circle.getArea() + "<br/>");
		out.print("</body></html>");
	}
}
[결과값]


[계산 : html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="Grade" method="post">
	국어 점수 : <input type="text" name="kor" value="" size=10></br>
	영어 점수 : <input type="text" name="eng" value="" size=10></br>
	수학 점수 : <input type="text" name="math" value="" size=10></br>
			<input type="submit" value="전송">
			<input type="reset" value="리셋">
	</form>
</body>
</html>
--------------------------------------------------------------------------
[계산 : grade]
package edu.global.ex.grade;
class Grade {
	public double kor, eng, math;
	public Grade(double kor, double eng, double math) {
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}

	public double getSum() {
		return (kor + eng + math);
	}

	public double getAvg() {
		return (kor + eng + math) / 3.0;
	}

	public double round(double n) {
		return Math.round(n * 100.0) / 100.0;
	}

	public char getGrade() {
		char grade = '가';
		if (getAvg() >= 90) {
			grade = '수';
		} else if (getAvg() >= 80) {
			grade = '우';
		} else if (getAvg() >= 70) {
			grade = '미';
		} else if (getAvg() >= 60) {
			grade = '양';
		} else {
			grade = '가';
		}
		return grade;
	}
}
--------------------------------------------------------------------------
[계산 : java]
package edu.global.ex.grade;
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("/Grade") // http://localhost:8282/servelt_example/formex
public class GradeEx extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public GradeEx() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// html에서 method가 get방식이면 해당 메소드 실행
		System.out.println("doGet()");

		request.setCharacterEncoding("UTF-8");
		double kor = Double.valueOf(request.getParameter("kor").trim()); // trim() : 의미 없는 공백 삭제
		double eng = Double.valueOf(request.getParameter("eng").trim());
		double math = Double.valueOf(request.getParameter("math").trim());

		Grade grade = new Grade(kor, eng, math);
		// ==================================================
		response.setContentType("text/html; charset=UTF-8"); // 한글 지원
		PrintWriter out = response.getWriter();

		out.print("<html><head></head><body>");
		out.print("국어 점수:" + grade.round(kor) + "<br/>");
		out.print("영어 점수:" + grade.round(eng) + "<br/>");
		out.print("수학 점수:" + grade.round(math) + "<br/>");
		out.print("==================" + "<br/>");
		out.print("총점:" + grade.round(grade.getSum()) + "<br/>");
		out.print("평균:" + grade.round(grade.getAvg()) + "<br/>");
		out.print("등급:" + grade.getGrade() + "<br/>");
		out.print("</body></html>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// html에서 method가 post방식이면 해당 메소드 실행
		System.out.println("doPost()");

		request.setCharacterEncoding("UTF-8");
		double kor = Double.valueOf(request.getParameter("kor").trim()); // trim() : 의미 없는 공백 삭제
		double eng = Double.valueOf(request.getParameter("eng").trim());
		double math = Double.valueOf(request.getParameter("math").trim());

		Grade grade = new Grade(kor, eng, math);
		// ==================================================
		response.setContentType("text/html; charset=UTF-8"); // 한글 지원
		PrintWriter out = response.getWriter();

		out.print("<html><head></head><body>");
		out.print("국어 점수:" + grade.round(kor) + "<br/>");
		out.print("영어 점수:" + grade.round(eng) + "<br/>");
		out.print("수학 점수:" + grade.round(math) + "<br/>");
		out.print("==================" + "<br/>");
		out.print("총점:" + grade.round(grade.getSum()) + "<br/>");
		out.print("평균:" + grade.round(grade.getAvg()) + "<br/>");
		out.print("등급:" + grade.getGrade() + "<br/>");
		out.print("</body></html>");
	}
}
[결과값]


[계산 : html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로또 대왕</h1>
	<form action="Lotto" method="post">
			<input type="submit" value="로또의 완성">
			<input type="reset" value="리셋">
	</form>
</body>
</html>
--------------------------------------------------------------------------
[계산 : lotto]
package edu.global.ex.grade;
import java.util.*;
public class Lotto {
	public HashSet<Integer> getLottoNum() {
		HashSet<Integer> set = new HashSet<Integer>();
		while (set.size() < 6) {
			set.add((int) (Math.random() * 45) + 1);
		}
		System.out.println(set);
		return set;
	}
}
--------------------------------------------------------------------------
[계산 : java]
package edu.global.ex.grade;
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("/Lotto") // http://localhost:8282/servelt_example/formex
public class LottoEx extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public LottoEx() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// html에서 method가 get방식이면 해당 메소드 실행
		System.out.println("doGet()");
		Lotto lotto = new Lotto();

		request.setCharacterEncoding("UTF-8");

		// ==================================================
		response.setContentType("text/html; charset=UTF-8"); // 한글 지원
		PrintWriter out = response.getWriter();

		out.print("<html><head></head><body>");
		out.print("로또 번호:" + lotto.getLottoNum() + "<br/>");
		out.print("</body></html>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// html에서 method가 post방식이면 해당 메소드 실행
		System.out.println("doPost()");

		Lotto lotto = new Lotto();

		request.setCharacterEncoding("UTF-8");

		// ==================================================
		response.setContentType("text/html; charset=UTF-8"); // 한글 지원
		PrintWriter out = response.getWriter();

		out.print("<html><head></head><body>");
		out.print("로또 번호:" + lotto.getLottoNum() + "<br/>");
		out.print("</body></html>");
	}
}
[결과값]
doPost()
[32, 18, 22, 41, 26, 30]


[JSP 태그의 개념 이해]

JSP : Java Server Page
HTML : 정적언어
JavaScript : HTML을 동적으로 만들기 위해 나온 언어

Servlet은 Java언어를 이용하여 문서를 작성하고, 출력객체를 이용하여 HTML 코드를 삽입함.
JSP는 Servlet과 반대로 HTML 코드에 JAVA언어를 삽입하여 동작 문서를 만들 수 있다.
HTML 코드안에 AVA코드를 삽입하기 위해서는 태그를 이용해야 함.
[JSP태그 종류]
지시자 : <%@ %> : 페이지 속성
주석 : <%-- --%>
선언 : <%! %> : 변수, 메소드 선언
표현식 : <%= %> : 결과값 출력
스크립트릿 : <% %> : JAVA 코드
액션태그 : <jsp:action> </jsp:action> : 자바빈 연결
클라이언트가 웹브라우저로 helloWorld.jsp를 요청하게 되면 JSP컨테이너가 JSP파일을 Servlet파일(.java)로 변환함.
Servlet파일(.java)은 컴파일 된 후 클래스 파일(.class)로 변환되고, 요청한 클라이언트한테 html파일 형태로 응답됨.

jsp >(servlet)> html 코드만 읽을 수 있고, java언어는 읽지 못한다.
servlet언어 : out.println()
jsp도 servlet파일이다.

C:\Users\USER\Documents\JSP\apache-tomcat-9.0.73\work\Catalina\localhost\servelt_example\org\apache\jsp

[계산 : jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% // 스크립트릿
		int i = 0;
		while (true) {
			i++;
			out.println("2 * " + i + " = " + (2 * i) + "<br/>");
			out.println("============<br />");
			if (i >= 9)
				break;
		}
	%>
</body>
</html>
[결과값]


[계산 : 구구단.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		// 스크립트릿
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= 9; j++) {
				out.println(i + " * " + j + " = " + (i * j) + "<br/>");
			}
			out.println("============<br/>");
		}
	%>
</body>
</html>
[결과값]


[계산 : 구구단2.jsp]
<%
		// 스크립트릿
		out.print("<table border='1'>");
		for (int i = 0; i <= 9; i++) {
			out.print("<tr>");
			for (int j = 2; j <= 9; j++) {
				if (i == 0) {
					out.print("<td>" + j + "단" + "</td>");
				} else {
					out.println("<td>" + j + " * " + i + " = " + (i * j) + "</td>");
				}
			}
			out.print("</tr>");
		}
		out.print("</table>");
	%>
[결과값]


[계산 : 구구단3.jsp]
	<%
		for (int i = 1; i < 10; i++) {
			out.println(i + "단을 출력합니다." + "<br>");
			//위에서 i의 값이 2라면 2*1 ~ 2*9까지 진행합니다.
			//이 반복문(j)이 종료되면 위의 반복문 변수 i가 1증가하여 다시 3*1 ~ 3*9까지 진행하는 식으로  9단까지 반복
			for (int j = 1; j < 10; j++) {
				out.println(i + " * " + j + " = " + (i * j) + "<br>");
			}
			out.println("<hr>");
		}
	%>
[결과값]


[계산 : 변수선언.jsp]
<%!// 변수 선언
	int i = 10;
	String str = "abc";

	private int sum(int a, int b) {
		return a + b;
	}%>
	<%out.println("<hr>");%>

	<%=i%><br />
	<%=str%><br />
	<%=sum(1, 5)%>
[결과값]


0개의 댓글