728x90
반응형
하기와 같이 4가지 방법으로 웹에서 계산기를 구현해보려고 한다.
1. JSP 내부에 JAVA 로직을 포함
2. JSP + 자바 빈즈(외부 JAVA 클래스 파일)
3. HTML + Servlet
4. HTML + Servlet + JAVA 클래스 파일
1. JSP 내부에 JAVA 로직을 포함
JSP파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
int result = 0; // 초기화 필수
if (request.getMethod().equals("POST")) {
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
String op = request.getParameter("op");
if (op.equals("+")) {
result = num1 + num2;
} else if (op.equals("-")) {
result = num1 - num2;
} else if (op.equals("x")) {
result = num1 * num2;
} else if (op.equals("/")) {
result = num1 / num2;
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 - 1</title>
</head>
<body>
<h1>계산기</h1>
<hr>
<form method="post">
<input type="text" name="num1"> <select name="op">
<option>+</option>
<option>-</option>
<option>x</option>
<option>/</option>
</select> <input type="text" name="num2"> <input type="submit"
value="계산 결과보기">
</form>
<hr>
<h2>
계산 결과:
<%=result%></h2>
</body>
</html>
- input,select : name 속성
- form의 submit을 통해 POST 방식으로 '요청'
요청에 대한 정보는 "request 객체"에 저장되어있음!☆ - ☆request 객체
선언, 초기화, 객체화도 한적이없음!
JSP -> 서블릿으로 변환될때, 자동으로 생성해주는 객체
== JSP 내장 객체
ex) request, response, out, session, application, ... - 웹에서는 정보들이 모두 String 타입으로 관리됨
2. JSP + 자바 빈즈(외부 JAVA 클래스 파일)
JSP파일
- <jsp:useBean id="cb" class="test.CalcBean" />
<%-- test 패키지에 있는 CalcBean 클래스를 cb 라는 이름으로 객체화 --%>
CalcBean cb=new CalcBean();\ - <jsp:setProperty property="*" name="cb"/>
<%-- cb 라는 이름을 가진 객체의 setter 메서드 자동매핑 호출 --%>
name 속성의 이름과 객체의 멤버변수명(setter명)을 비교하기때문에 식별자 규칙이 매우 중요 - <jsp:getProperty property="result" name="cb"/>
cb.getResult();
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="cb" class="test.CalcBean"/>
<%-- test 패키지에 있는 CalcBean 클래스를 cb라는 이름으로 객체화 --%>
<%-- CalcBean cb = new CalcBean(); --%>
<jsp:setProperty property="*" name="cb"/>
<%--cb라는 이름을 가진 객체의 setter 매서드 자동매핑 호출 --%>
<%--메서드 호출 --%>
<% cb.calc(); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 -2 </title>
</head>
<body>
<h1>계산기</h1>
<hr>
<form method="post">
<input type="text" name="num1">
<select name="op">
<option>+</option>
<option>-</option>
<option>x</option>
<option>/</option>
</select>
<input type="text" name="num2">
<input type="submit" value="계산 결과보기">
</form>
<hr>
<h2>계산 결과: <jsp:getProperty property="result" name="cb"/></h2>
<%--cb.getResult --%>
</body>
</html>
JAVA 파일 - setter들을 호출하여 멤버변수를 초기화
package test;
public class CalcBean {
private int num1;
private int num2;
private String op="";
private int result;
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
public void calc() {
if (op.equals("+")) {
result = num1 + num2;
} else if (op.equals("-")) {
result = num1 - num2;
} else if (op.equals("x")) {
result = num1 * num2;
} else if (op.equals("/")) {
result = num1 / num2;
}
}
}
3. HTML + Servlet
HTML 파일
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 - 3</title>
</head>
<body>
<h1>계산기</h1>
<hr>
<form method="post" action="/day36/CalcServlet"> <!-- 해당 서블릿을 불러줄 URL을 적어야함 -->
<input type="text" name="num1"> <select name="op">
<option>+</option>
<option>-</option>
<option>x</option>
<option>/</option>
</select> <input type="text" name="num2"> <input type="submit"
value="계산 결과보기">
</form>
</body>
</html>
Servlet 파일
package test;
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("/CalcServlet")
public class CalcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public CalcServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
String op = request.getParameter("op");
int result=calc(num1,num2,op);
PrintWriter out=response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>계산기 - 3 결과화면</TITLE></HEAD>");
out.println("<BODY><H1>RESULT PAGE</H1>");
out.println("<HR>");
out.println(num1+" "+op+" "+num2+" = "+result);
out.println("</BODY>");
out.println("</HTML>");
}
public int calc(int num1,int num2,String op) {
int result=0;
if (op.equals("+")) {
result = num1 + num2;
} else if (op.equals("-")) {
result = num1 - num2;
} else if (op.equals("x")) {
result = num1 * num2;
} else if (op.equals("/")) {
result = num1 / num2;
}
return result;
}
}
4. HTML + Servlet + JAVA 클래스 파일
HTML 파일
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 - 4</title>
</head>
<body>
<h1>계산기</h1>
<hr>
<form method="post" action="/day36/CalcServlet2">
<input type="text" name="num1"> <select name="op">
<option>+</option>
<option>-</option>
<option>x</option>
<option>/</option>
</select> <input type="text" name="num2"> <input type="submit"
value="계산 결과보기">
</form>
</body>
</html>
Servlet 파일
package test;
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("/CalcServlet2")
public class CalcServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
public CalcServlet2() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
String op = request.getParameter("op");
Calc calc=new Calc(num1,num2,op);
int result=calc.getResult();
PrintWriter out=response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>계산기 - 4 결과화면</TITLE></HEAD>");
out.println("<BODY><H1>RESULT PAGE</H1>");
out.println("<HR>");
out.println(num1+" "+op+" "+num2+" = "+result);
out.println("</BODY>");
out.println("</HTML>");
}
}
JAVA 파일
package test;
public class Calc {
int result=0;
public Calc(int num1,int num2,String op) {
if (op.equals("+")) {
result = num1 + num2;
} else if (op.equals("-")) {
result = num1 - num2;
} else if (op.equals("x")) {
result = num1 * num2;
} else if (op.equals("/")) {
result = num1 / num2;
}
}
public int getResult() {
return result;
}
}
728x90
반응형
'JSP' 카테고리의 다른 글
[JSP] application을 이용한 SNS 예제 (0) | 2022.08.02 |
---|---|
[JSP] session을 이용한 장바구니 예제 (0) | 2022.08.02 |
[JSP] 내장 객체 request, response, out, session, application, exception (0) | 2022.08.02 |
[JSP] 에러페이지 처리, include 지시어, 액션, forward 액션, 스크립트릿 (0) | 2022.08.02 |
[JSP] JSP(JavaServer Pages), Servlet 란? (0) | 2022.08.01 |