본문 바로가기

Jsp

JSP 서블릿을 이용한 계산기 만들기(어노테이션 )2

Index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h1 align="center">계산기</h1>
	<hr />
	<form align="center" action="./Calc" method="post">
		<input type="text" name="first"> 		<!-- 변수 1 -->
		<select name="operater">
			<option value="+">+</option>
			<option value="-">-</option>
			<option value="*">*</option>
			<option value="%">%</option>
		</select> 
		<input type="text" name="second">      <!-- 변수 2 -->
		<input type="submit"value="계산" name="B1">
		<input type="reset" value="다시입력"name="B2">
	</form>

</body>
</html>

 

clacjava.java

package Controller;

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("/calcjava")		//어노테이션.
public class calcjava extends HttpServlet {
	/*
	 * public int calcjava(int first, int second, String op ) { int result = 0;
	 * 
	 * if (op.equals("+")) { result = first + second;
	 * 
	 * } else if (op.equals("-")) { result = first - second;
	 * 
	 * } else if (op.equals("*")) { result = first * second;
	 * 
	 * } else if (op.equals("/")) { result = first / second;
	 * 
	 * } return result; }
	 */
	
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

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


		int first, second;
		int result;
		String op;

		response.setContentType("text/html; charset=euc-kr");

		PrintWriter out = response.getWriter();

		first = Integer.parseInt(request.getParameter("first"));
		second = Integer.parseInt(request.getParameter("second"));
		op = request.getParameter("operater");

		/* result = calcjava(first, second, op); */
		Calc calc = new  Calc(first,second,op);
		result = calc.getResult();

		out.println("<HTML>");
		out.println("<HEAD><TITLE>계산기</TITLE></HEAD>");
		out.println("<BODY><center>");
		out.println("<H2>계산 결과</H2>");
		out.println("<HR>");
		out.println(first + " " + op + " " + second + "= " + result);
		out.println("</BODY></HTML>");
	}


}

 

데이터 클래스

package Controller;

public class Calc {
	
	private int first;
	private int second;
	private String op;
	
	
	
	public Calc(int first,int second,String op) {
		
		this.first = first;
		this.second = second;
		this.op = op;
	}
	
	
	
	public int getResult() {
		
		int result = 0;
	
		
		 if (op.equals("+")) {
			 result = first + second;
		  
		  } else if (op.equals("-")) {
			  result = first - second;
		  
		 } else if (op.equals("*")) { 
			 result = first * second;
		  
		  } else if (op.equals("/")) {
			  result = first / second;
		
		  }
		 return result;
		  
}
}

web.xml

<web-app>
  <servlet>
     <servlet-name>calcjava</servlet-name>
     <servlet-class>Controller.calcjava</servlet-class>
  </servlet>
  
  <servlet-mapping>
     <servlet-name>calcjava</servlet-name>
     <url-pattern>/Calc</url-pattern>
  </servlet-mapping>
  </web-app>

 

 

 

결과

 

어노테이션 @WebServlet("/calcjava") 지정

 

form action="./calcjava" > 해당 경로를 일치시켜준다.