본문 바로가기
☕ Java 웹 프로그래밍/Servlet & JSP

[Servlet&JSP] 여러 개의 Submit 버튼 사용하기

by 일단연 2023. 5. 28.

* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.

 

2020 Servlet&JSP 프로그래밍

 

www.youtube.com

 

 여러 개의 Submit 버튼 사용하기 

버튼 2개 만들기: 덧셈과 뺄셈

  • add.html과 Add.java 복사+붙여넣기 해서 새 파일 만들기
  • add.html 수정
    • add.html의 <form>의 속성 action 값을 calc로 변경
    • add.html에 <input type=”submit” value=”뺄셈”/> 추가
    • 서버로 값을 전달하기 위해 add.html에서 두 <input>에 name=”operator” 추가
      • 덧셈 버튼과 뺄셈 버튼을 동시에 누를 수 없으니 같은 이름으로 해도 됨
      • 덧셈 버튼을 누르면 덧셈 값만 전달되고, 뺄셈 버튼을 누르면 뺄셈 값만 전달됨

  • name: value의 형태로 operator: 덧셈이 전달됨

  • URL 형태로 전달될 때는 ‘덧셈’이 URL 형식으로 변환됨
  • add.html 최종 코드
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 웹 프로그램</title>
</head>
<body>
  <form action="calc" method="post">
    <div>
      <p>계산할 값을 입력하세요.</p>
    </div>
    <div>
      <label>x : </label>
      <input name="x" type="text"/>
    </div>
    <div>
      <label>y : </label>
      <input name="y" type="text"/>
    </div>
    <div>
      <input type="submit" name="operator" value="덧셈">
      <input type="submit" name="operator" value="뺄셈">
    </div>
  </form>
</body>
</html>

 

  • Add.java 수정
    • 매핑주소를 calc로 변경 ( @WebServlet("/calc") )
    • 쿼리 operator의 값을 문자열 op로 받기
    • result는 0으로 초기화
    • op 값이 덧셈이면 x+y, 뺄셈이면 x-y 하도록 조건문 작성
  • Add.java 최종 코드
package com.newlecture.web;

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("/calc")
public class Calc extends HttpServlet {
  @Override
  protected void service(HttpServletRequest request
                        , HttpServletResponse response)
                        throws ServletException, IOException
  {
    response.setContentType("text/html; charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
		
    PrintWriter out = response.getWriter();
		
    String x_ = request.getParameter("x");
    String y_ = request.getParameter("y");
    String op = request.getParameter("operator");
		
    int x = 0;
    int y = 0;
		
    if(!x_.equals("")) {
      x = Integer.parseInt(x_);
    }
		
    if(!y_.equals("")) {
      y = Integer.parseInt(y_);
    }
		
    int result = 0;
		
    if(op.equals("덧셈")) {
      result = x + y;
    } else {
      result = x - y;
    }
		
    response.getWriter().printf("계산 결과는 %d\n", result);
  }
}

 

결과

  • 입력창

  • 개발자도구>Network

  • 덧셈 결과

  • 뺄셈 결과