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>