티스토리 뷰

Send16.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Send16.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<script type="text/javascript">

   function formCheck()
   {
      var num1 =document.getElementById("num1");
      var num2 =document.getElementById("num2");
      
      if (num1.value=="" || num2.value=="")
      {
         alert("정수의 내용을 모두 입력해야 합니다.");
         return false;
         
      }
      return true;
   }
</script>
</head>
<body>

<!-- 포워딩 / 리다이렉트 관련한 아주아주아주 중요한 실습 -->


<!-- 사칙 연산 수행을 위한 정수 입력 페이지를 구성한다. -->s
<!-- 이 과정에서 연산자를 함께 입력받을 수 있도록 한다. -->
<!-- 사용자 최초 요청 페이지 -->
<!-- →http://localhost:8090/WebApp05/Send16.jsp -->

<!-- 데이터 수신 및 연산 전용 페이지 -->
<!-- →http://localhost:8090/WebApp05/Redirect16.jsp -->
<!-- → java → Servlet  -->

<!-- 최종 결과 출력 페이지 -->
<!-- → http://localhost:8090/WebApp05/Receive16.jsp -->

<div>
   <h1>JSP 를 이용한 데이터 송수신 실습</h1>
   <hr>
</div>
 <div>
   <H2> Send16.jsp ● ->Redirect16.jsp ○ ->Receive16.jsp ○</H2>
  </div>

<div>
   <form action="Redirect16.jsp" method="post" onsubmit="return formCheck()">
      정수1 <input type="text" name="num1" class="txtNumber">
      <select name="calResult">
         <option value="0" selected="selected">연산선택</option>
         <option value="addition">더하기</option>
         <option value="subtract">빼기</option>
         <option value="multiplecation">곱하기</option>
         <option value="division">나누기</option>
      </select>
      정수2 <input type="text" name="num2" class="txtNumber">
      
      <button type ="submit">확인</button>
   </form>
</div>

</body>
</html>

Redirect16.jsp

<%@ page contentType="text/html; charset=UTF-8"%>

<%
   // Redirect16.jsp
   
   // 데이터 수신
   
   int num1 = Integer.parseInt(request.getParameter("num1"));
   int num2 = Integer.parseInt(request.getParameter("num2"));
   
   String cal = request.getParameter("calResult");
   

      //연산 처리
   String result ="";

   if (cal.equals("addition"))
   {
      result += String.format("%d", (num1+num2));
   }
   else if (cal.equals("subtract"))
   {
      result += String.format(" %d",(num1-num2));
   }
   else if (cal.equals("multiplecation"))
   {
      result += String.format("%d", (num1*num2));
   }
   else if (cal.equals("division"))
   {
      result += String.format("%.1f",(num1/(double)num2));
   }
      //check ~!!!
      // 결과 데이터 재전송 →sendRedirect() 메소드 사용
      // ※ response 객체의 주요 메소드 중 하나인 『sendRedirect(String location)』
      //    : 지정된 URL(location)로 요청을 재전송한다.
      // 리퀘스트가 이자리에서 소멸되기 대문에Receive16.jsp까지 이어서 넘어가질 않는다
      response.sendRedirect("Receive16.jsp?num1="+num1+"&num2="+num2+"&cal="+cal+"&result="+result);
       
      
      //session.setAttribute("message", result);

      // 리다이렉트

%>

Receive16.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
   request.setCharacterEncoding("UTF-8");
   
   String num1 = request.getParameter("num1");
   String num2 = request.getParameter("num2");
   String cal = request.getParameter("cal");
   String result = request.getParameter("result");
   
   if(cal.equals("addition"))
      cal = "+";
   else if(cal.equals("subtraction"))
      cal = "-";
   else if(cal.equals("multiplecation"))
      cal = "*";
   else if(cal.equals("division"))
      cal = "/";
   
   String strResult = String.format("%s %s %s = %s", num1,cal,num2,result);
   //String strResult =(String)session.getAttribute("message");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Receive16.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>

   <div>
      <h1>최종 수신 페이지(Receive16.jsp)</h1>
    </div>
  
    <div>
      <h2>연산 결과 : <%=strResult %></h2>      
    </div>

</body>
</html>

'Web(국비) > JSP' 카테고리의 다른 글

[JSP]-onchange란?  (0) 2019.10.27
Redirect VS, Forward (Redirect와 forward의 차이)  (0) 2019.10.27
[JSP]RequestDispatcher인터페이스란?  (0) 2019.10.25
JSP-포워딩/리다이렉트 관련 문제  (0) 2019.10.24
JSP  (0) 2019.10.24