본문 바로가기

Servlet

02Servlet_ex>ex02 (구구단)

구현해야 할 것

조건: 

1. 새로고침 버튼 클릭시 num1 과 num2 의 값이 (1~9 사이의 값)각각 랜덤하게 바뀐다.

2.계산 버튼 클릭시 사용자가 입력한 값이  num1 x num2 의 값과 같은지 확인한다. 

      단) null일때와 공백일때는 0을 입력한 것으로 처리한다.

                                              O -> alert 정답입니다 -> 기존 화면으로 링크 이동

                                              X -> alert 오답입니다 -> 기존 화면으로 링크 이동

 

 

NewFile.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<title>Insert title here</title>
</head>

<script>

$(function(){
  fnNum();
  fnRefresh();
})


//랜덤값을 생성하는 메소드
function fnRandom(min,max){
  return Math.floor(Math.random()*max)+min;
}


function fnNum(){
  var num1=fnRandom(1,9);
  var num2=fnRandom(1,9);
$('#span_num1').text(num1);
$('#span_num2').text(num2);
$('#num1').val(num1);
$('#num2').val(num2);
}

//새로고침 버튼
function fnRefresh(){
  
  $('#btn_refresh').click(function(){
    
    fnNum();
  })
}




</script>
<body>

<form action="/servlet_ex/gugudan" method="post">

<button type="button" id="btn_refresh">새로고침</button>
<div>
<label for="answer">
<span id="span_num1" ></span>
<span>X</span>
<span id="span_num2"></span>
</label>
<input type="text" id="answer" name="answer" size="5">
<input type="hidden" name="num1" id="num1" >
<input type="hidden" name="num2" id="num2" >
<button id="btn_submit">계산</button>
</div>

</form>

</body>
</html>

Gugudan.java

package ex02;

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 Gugudan
 */
@WebServlet("/gugudan")
public class Gugudan extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Gugudan() {
        super();
        // TODO Auto-generated constructor stub
    }

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

	//요청 인코딩
	  request.setCharacterEncoding("UTF-8");
	
  //요청파라미터
	  String strNum1=request.getParameter("num1");
	  String strNum2=request.getParameter("num2");
	  String strAnswer=request.getParameter("answer");
	 
	  int num1=0;
	  int num2=0;
	  int answer=0;
	  int result=0;
	  
	  //null처리(공백이 아니고 null 이 아니라면 형변환)
	  if(strNum1!=null&&!strNum1.isEmpty())
	  {
	    num1=Integer.parseInt(strNum1);
	  }
	  if(strNum2!=null&&!strNum2.isEmpty())
    {
      num2=Integer.parseInt(strNum2);
    }
	  
	 if(strAnswer!=null&&!strAnswer.isEmpty())
	  {
	      answer=Integer.parseInt(strAnswer);
	   }
	    
	  

	//응답 인코딩
	  response.setContentType("text/html; charset=UTF-8");
	
	// 스트림
	  PrintWriter out=response.getWriter();
	
    // 응답하기
    out.println("<script>");
    if(num1 * num2 == answer) {
      out.println("alert('정답입니다.')");
    } else {
      out.println("alert('오답입니다.')");
    }
    out.println("location.href='/servlet_ex/ex02/NewFile.html'");
    out.println("</script>");
    out.flush();
    out.close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

'Servlet' 카테고리의 다른 글

02Servlet_ex>ex01(회원가입 폼)  (0) 2023.10.01