성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

<구구단 페이지 만들기> 본문

백엔드개발/JSP

<구구단 페이지 만들기>

hyemi_flora 2024. 1. 13. 15:48

Q. chap01/gugudan으로 접속하는 사용자에게 멋있는 구구단 페이지를 응답하는 서블릿을 만들어보세요

 

package chap01.servlet;

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;

//chap01/gugudan으로 접속하는 사용자에게 멋있는 구구단 페이지를 응답하는 서블릿을 만들어보세요

@WebServlet("/gugudan2")
public class GugudanServlet2 extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setCharacterEncoding("UTF-8");
		PrintWriter out = resp.getWriter();

		out.print("<!DOCTYPE html>");
		out.print("<html>");
		out.print("<head>");
		out.print("<meta charset=\"UTF-8\">");
		out.print("<title>구구단</title>");
		//out.print("<link rel=\"stylesheet\" href=\"http://localhost:9000/chap01/assets/gugudan.css\">");
		// 절대경로를 쓰지 않고 상대경로를 쓴다	
		//out.print("<link rel=\"stylesheet\" href=\"/chap01/assets/gugudan.css\">"); -> 상대경로
		
		// @WebServlet("/gugudan2/") -> gugudan2 안의 / 빈 인덱스가 됨으로 
		//out.print("<link rel=\"stylesheet\" href=\"../assets/gugudan.css\">"); -> 상대경로를 쓸때 ../ 하나더 상위 폴더로 들어가야한다
		
		out.print("<link rel=\"stylesheet\" href=\"./assets/gugudan.css\">"); // -> 상대경로
		
		// 절대경로는 프로토콜 이름부터 시작 되는 경로 
		// 상대경로는 이 페이지에 접속했던 URL기준의 상대경로
		// a, link, img, script 태그 등은 사용 하는 것만으로도 서버로 요청을 보내 자원을 받아워서 활용한다
		
		out.print("</head>");
		out.print("<body>");
		out.print("<h2># Gugudan #</h2>");
		out.print("<div id=\"gugudan\">");
		
		
		for (int gop = 0; gop <= 9; ++gop) {
			for (int dan = 2; dan <= 9; ++dan) {

				if (gop == 0) {
					out.print(String.format("<div class=\"dan\">%d단</div>", dan));
				} else {
					out.print(String.format("<div class=\"data\">%d x %d = %d</div>", dan, gop, dan * gop));
				}
				out.print("");
			}
		}
		out.print("</div>");
		out.print("</body>");
		out.print("</html>");
	}
}
#gugudan{
	display: grid;
	grid-template-columns : repeat(8, 1fr);
}

.dan{
	background-color : black;
	color : white;
}

package chap01.servlet;

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;

//chap01/gugudan으로 접속하는 사용자에게 멋있는 구구단 페이지를 응답하는 서블릿을 만들어보세요

@WebServlet("/gugudan")
public class GugudanServlet extends HttpServlet {

	private void gugudan(PrintWriter out) {
		for (int step = 2; step <= 9; ++step) {
			out.print("<h2 id=\"maincolor\">"  + step + "dan" + "</h2>");
			for (int mul = 1; mul <= 9; ++mul) {
				out.print("<div id=\"servecolor\">"+step + " X " + mul + " = " + (step * mul) + "<br>"+"</div>");
			}
		}


	}
	

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {

		PrintWriter out = resp.getWriter();

		out.print("<html>");
		out.print("<head>");
		out.print("<title>Gugudan Page</title>");
		out.print("<style>");
		out.print("#maincolor { background-color: seagreen; color: white; width: 180px; margin: 15px; text-align: center;}");
		out.print("#servecolor { background-color: cornsilk; color: black; width: 200px;margin: 5px; text-align: center;}");	
		out.print("</style>");
		out.print("</head>");
		out.print("<body>");
		out.print("<h2># Gugudan #</h2>");
		gugudan(out);
		out.print("</body>");
		out.print("</html>");
	}
}

'백엔드개발 > JSP' 카테고리의 다른 글

JSP에서 사용되는 주석  (0) 2024.01.13
HTML source > input / form  (1) 2024.01.13
서블릿이란? Servlet  (0) 2024.01.13
JSP(Java Server Pages)  (0) 2024.01.13