calc.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>
<div align="center">
<!-- 서블릿 버전 계산기 실행을 위해 계산 버튼 클릭시 서블릿 호출 -->
<form id="f1" action="./CalcTest" method="post">
<h3> 계산기</h3>
<hr>
<input type="text" name="num1" width="200" size="5">
<select name="operator">
<option value="+" selected> + </option>
<option value="-"> - </option>
<option value="*"> * </option>
<option value="/"> / </option>
</select>
<input type="text" name="num2" width="200" size="5">
<input type="submit" value="계산">
<input type="reset" value="다시입력">
</form>
</div>
</body>
</html>
web.xml 사용하는 서블릿
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// web.xml 사용하는 방법
public class calcServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost()로 포워딩 하고 있다.
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 변수선언
int num1, num2 ,result;
String op;
// 클라이언트 응답시 전달된 컨텐츠에 대한 mime type과 캐릭터셋 지정
response.setContentType("text/html; charset=UTF-8");
// 클라이언트 응답을 위한 출력 스트림 확보
PrintWriter out = response.getWriter();
// jsp에서 입력 값을 받아옴
num1 = Integer.parseInt(request.getParameter("num1"));
num2 = Integer.parseInt(request.getParameter("num2"));
op = request.getParameter("operator");
// calc 메소드 호출로 값을 가져옴
result = calc(num1, num2, op);
out.println("<HTML>");
out.println("<HEAD><TITLE>계산 결과</TITLE></HEAD>");
out.println("<BODY><CENTER>");
out.println("<H2>계산 결과</H2>");
out.println("<HR>");
out.println(num1 + " " + op + " " + num2 + " = " + result);
out.println("</BODY></HTML>");
}
// 실제 계산 메소드
private int calc(int num1, int num2, String op) {
int result = 0;
switch (op) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
}
return result;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>ServletTest</display-name>
<servlet>
<servlet-name>calcServlet</servlet-name> <!-- 변수명? 별명? -->
<servlet-class>calcServlet</servlet-class> <!--서블릿 클래스명 -->
</servlet>
<servlet-mapping>
<servlet-name>calcServlet</servlet-name> <!-- 위에 있는 서블릿 name값으로 서블릿 클래스와 연결하는 용도 -->
<url-pattern>/Calc</url-pattern> <!-- URL에 표시할 이름(혹은 매핑된 경로명?) -->
</servlet-mapping>
</web-app>
web.xml 안쓰고 어노테이션 사용하는 서블릿
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;
// web.xml 안쓰는 방법
@WebServlet("/CalcTest")
public class calcServlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost()로 포워딩 하고 있다.
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 변수선언
int num1, num2 ,result;
String op;
// 클라이언트 응답시 전달된 컨텐츠에 대한 mime type과 캐릭터셋 지정
response.setContentType("text/html; charset=UTF-8");
// 클라이언트 응답을 위한 출력 스트림 확보
PrintWriter out = response.getWriter();
// jsp에서 입력 값을 받아옴
num1 = Integer.parseInt(request.getParameter("num1"));
num2 = Integer.parseInt(request.getParameter("num2"));
op = request.getParameter("operator");
// calc 메소드 호출로 값을 가져옴
result = calc(num1, num2, op);
out.println("<HTML>");
out.println("<HEAD><TITLE>계산 결과</TITLE></HEAD>");
out.println("<BODY><CENTER>");
out.println("<H2>계산 결과</H2>");
out.println("<HR>");
out.println(num1 + " " + op + " " + num2 + " = " + result);
out.println("</BODY></HTML>");
}
// 실제 계산 메소드
private int calc(int num1, int num2, String op) {
int result = 0;
switch (op) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
}
return result;
}
}
반응형
'Java > eclipse 연습' 카테고리의 다른 글
(Java)파일 업로드.jsp (0) | 2020.09.22 |
---|---|
(Java)JSP 빈즈를 이용한 회원가입폼(DB x) (0) | 2020.08.28 |
(JavaScript)계산기 (0) | 2020.08.20 |
(JavaScript)현재 시간(1초마다 갱신) (0) | 2020.08.20 |
(Java)Thread Synchronization - ATM (0) | 2020.08.13 |