Cute Blinking Unicorn

서버/JSP

243p 컨트롤러 계산기 구현

민밥통 2023. 12. 5. 17:19

 

jsp.zip
0.40MB

 

 

 

뷰 구현: calcForm

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기-컨트롤러</title>
</head>
<body>
	<h2>계산기-컨트롤러</h2>
	<hr>
	<form method="post" action="/jwbook/calcControl">
		<!--서버에 똑같은 환경에서 돌아가기 때문에 세션과 같은 그런 환경 정보-->
		<input type="text" name="n1" size="10"> <select name="op">
			<option>+</option>
			<option>-</option>
			<option>*</option>
			<option>/</option>
		</select> <input type="text" name="n2" size="10">
		<input type="submit" value="확인">
		
<!--	<h4>이름을 입력하세요</h4>
		<hr>
		<input type="text" name="n3" size="10"> 
		-->
	</form>
</body>
</html>

계산 처리 결과를 보여주는 화면 구현을 위해 

calcReult.jsp 파일 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기-컨트롤러</title>
</head>
<body>
<h2>계산 결과-컨트롤러</h2>
<hr>
결과: ${n1} ${op} ${n2} = ${result}
</body>
</html>

컨트롤러 구현: CalcController 

이거는 추가할 때 서블릿으로 추가해야한다.

java package: ch08

class name: CalcController

URL mapping: calcControl

 

서블릿으로 추가하지 않으면 연동이 되지 않는다. 

package ch08;

import java.io.IOException;
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("/calcControl")
public class CalcController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public CalcController() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int n1 = Integer.parseInt(request.getParameter("n1"));
		int n2 = Integer.parseInt(request.getParameter("n2"));
		String opp = request.getParameter("op");
		
		long result = 0;
		
		switch(request.getParameter("op")) {
			case "+": result = n1+n2;break;
			case "-": result = n1-n2;break;
			case "/": result = n1/n2;break;
			case "*": result = n1*n2;break;
		}
		request.setAttribute("result", result);
		request.setAttribute("n1", n1);
		request.setAttribute("n2", n2);
		request.setAttribute("op", opp);
		getServletContext().getRequestDispatcher("/ch08/calcResult.jsp").forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

결과

결과: ${n1} ${op} ${n2} = ${result} 이부분이랑

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

int n1 = Integer.parseInt(request.getParameter("n1"));

int n2 = Integer.parseInt(request.getParameter("n2"));

String opp = request.getParameter("op");

 

long result = 0;

 

switch(request.getParameter("op")) {

case "+": result = n1+n2;break;

case "-": result = n1-n2;break;

case "/": result = n1/n2;break;

case "*": result = n1*n2;break;

}

request.setAttribute("result", result);

request.setAttribute("n1", n1);

request.setAttribute("n2", n2);

request.setAttribute("op", opp);

이부분 흐름 확인해볼 것! 

'서버 > JSP' 카테고리의 다른 글

html로 컨트롤러 들어가기  (1) 2023.12.07
247p 고급 컨트롤러 서블릿 구현  (1) 2023.12.05
h2 설치 및 활용  (1) 2023.12.05
MVC패턴  (1) 2023.12.05
액션 종합 예제: 계산기 구현 jsp, java Bean, Html 세가지로 활용  (0) 2023.11.30