It Study/프로그래밍 공부

서블릿 구구단 연습 예제

prlkt5200 2024. 10. 1. 00:11
반응형

순차적으로 예제를 올리겠습니다.
솔직히 유튜브에서 따라치기는 하나 거의 이해를 못했습니다.....
그치만 언젠가는 이해할 수 있을 거 같고, 또 참고자료로 활용가능할 것 같기에 기록을 남겨봅니다.

package com.sbs.jsp.board.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;


@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setCharacterEncoding("UTF-8"); //들어오는 데이터를 utf 8로 인식
    resp.setCharacterEncoding("UTF-8");// 완성된 html의 인코딩을 utf 8로 하겠다.
    resp.setContentType("text/html; charset UTF-8");//브라우저에게 우리가 만든 결과물이 utf 8이다
    resp.getWriter().append("안녕");
  }
}

 

 

package com.sbs.jsp.board;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class Rq {

  private final HttpServletRequest req;
  private final HttpServletResponse resp;

  public Rq(HttpServletRequest req, HttpServletResponse resp) {
    this.req = req;
    this.resp = resp;

    try {
      req.setCharacterEncoding("UTF-8");
    } catch (UnsupportedEncodingException e) {
      throw new RuntimeException(e);
    }
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html; charset UTF-8");
  }

  public int getIntParam(String paramName, int defaultValue) {
    String value = req.getParameter(paramName);

    if (value == null) {
      return defaultValue;
    }
    try {
      return Integer.parseInt(value);
    } catch (NumberFormatException e) {
      return defaultValue;

    }
  }

  public String getParam(String paramName, String defaultValue) {
    String value = req.getParameter(paramName);

    if (value == null) {
      return defaultValue;
    }
  return value;
  }


  public void writer(String str){
    try {
      resp.getWriter().append(str);
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }
}

 

 

 

package com.sbs.jsp.board.servlet;

import com.sbs.jsp.board.Rq;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/gugudan")
public class GugudanServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


    Rq rq = new Rq(req, resp);



    //req.getParameter로 가져오는 값은 그냥 문자열이기에 형변환을 해준 것이다.
    int dan = rq.getIntParam("dan", 9 );
    int limit = rq.getIntParam("limit", 9);

  rq.writer("<h1>%d단</h1>".formatted(dan));
    for (int i = 1; i <= limit; i++) {
      rq.writer("<div>%d * %d = %d</div>".formatted(dan, i, dan * i));

    }

  }
}
반응형