ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 브라우저에서 수의 덧셈을하고 출력하기
    JAVA/웹 프로그래밍 - 서블릿 2020. 11. 1. 19:44

    웹 페이지에 두 수를 입력받을 공간을 만들고 수의 입력 후에 전송 버튼을 클릭하면

    두 수의 합이 웹 페이지에 출력되도록 만들어 보자.

    이에 대해서는 html을 먼저 만들어보자.

     

    add1.html 파일을 WebContent 폴더에 만든다.

    add1.html

    더보기
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    
    <body>
    	<form action="Add1" method="post">
    		x : <input type="text" name="x"><br>
    		y : <input type="text" name="y"><br>
    	<input type="submit" value="덧셈결과"><br>
    		결과 : 0	
    	</form>	
    </body>
    
    </html>

     

    위의 html 파일을 실행해보자.

    그리고 이에 대한 처리를 위해서 서블릿 파일을 만들어야 한다.

    위의 action에서 Add1이라 지정했으므로, 이 서블릿의 클래스 명은 Add1이 되어야 한다.

    요청은 form태그 내의 서브밋을 눌렀을 때, action이 요청하는 의미이다. 

    src의 패키지를 선택하고 우클릭해서 new에서 Servlet을 클릭하고 클래스 명에 Add1이라 선택하고

    next를 선택하고 다시 next를 선택한다. 여기서 

    Constructors form superclass를 체크 해제하고

    doPost와 doGet 함수를 채크 해제하고 service를 체크한다. 그리고 finish를 선택한다.

    그리고 이 만들어진 서블릿 파일에서 주석으로 처리된 문장을 제거한다.

    Add1.java

    더보기
    package com.iot.web;
    
    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("/Add1")
    public class Add1 extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	protected void service(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		response.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=UTF-8");
    		PrintWriter out = response.getWriter();
    		
    		String x_ = request.getParameter("x");
    		String y_ = request.getParameter("y");
    		
    		int x = Integer.parseInt(x_);
    		int y = Integer.parseInt(y_);
    		
    		int sum = 0;
    		
    		sum = x + y;
    		
    		out.printf("%d + %d = %d",x,y,sum);
    	}
    }

     

    실행해보자.

    실행하면 두 수의 합이 웹 페이지에 출력됨을 알 수 있다.

    html파일에서 두수의 합을 출력하는 부분이 있는데 이 부분에 대한 표현은

    jsp페이지를 이용하면 결과값에 연산 결과를 표현할 수 있다. 이는 나중에 한다.

    여기에 한 가지 치명적인 단점이 있다.

    두 수의 입력을 하지 않고 실행하면 에러가 발생한다. 이에 대한 예외처리가 필요하다.

    이를 처리해보자.

    처리할 방식은 간단하다.

    Add1.java에서 처리를 하면 된다. 방법은 먼저 입력이 안들어올 것을 생각해서

    두 수의 초기값을 우선 0으로 설정했다가 수의 입력이 정상적으로 이뤄지면

    그 때 각 각의 수를 저장하고 덧셈 연산을 하면 된다.

    Add1.java의 서비스 함수

    더보기
    protected void service(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		response.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=UTF-8");
    		PrintWriter out = response.getWriter();
    		
    		String x_ = request.getParameter("x");
    		String y_ = request.getParameter("y");
    		
    		int x = 0;
    		int y = 0;
    		
    		if (!x_.equals(""))	x = Integer.parseInt(x_);
    		if (!y_.equals(""))	y = Integer.parseInt(y_);
    		
    		int sum = 0;
    		
    		sum = x + y;
    		
    		out.printf("%d + %d = %d",x,y,sum);
    	}

     

    소스 파일

    add1.html
    0.00MB
    Add1.java
    0.00MB

     

     

     

     

     

     

     

    이번에는 연사을 할 수가 여러 개인 경우에 대해서 처리를 해보자.

    add2.html과 Add2.java 파일에서 이를 구현해보자.

    약간의 힌트는 여러 개는 배열을 이용하면 된다.

    add2.html 

    더보기
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="Add2" method="post">
    		<input type="text" name="num">
    		<input type="text" name="num"><br>
    		<input type="text" name="num">
    		<input type="text" name="num"><br>
    	<input type="submit" value="덧셈결과"><br>
    		결과 : 0	
    	</form>	
    </body>
    </html>

     

     

    Add2.java파일의 service함수

    더보기
    protected void service(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		response.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=UTF-8");
    		PrintWriter out = response.getWriter();
    		
    		String[] num_ = request.getParameterValues("num");
    		
    		int result = 0;
    		
    		for (int i = 0; i < num_.length; i++)
    		{
    			int num = Integer.parseInt(num_[i]);
    			result += num;
    		}
    		out.println("합계 : " +result);
    	}

     

     

     

    이 또한 수의 입력 공간에 비어있는 상태에서는 에러가 발생하므로 예외처리를 해야 한다.

    Add2.java 파일의 service함수

    더보기
    protected void service(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		response.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=UTF-8");
    		PrintWriter out = response.getWriter();
    		
    		String[] num_ = request.getParameterValues("num");
    		
    		int result = 0;
    		
    		for (int i = 0; i < num_.length; i++)
    		{
    			int num = 0;
    			
    			if (!num_[i].equals(""))
    				num = Integer.parseInt(num_[i]);
    			
    			result += num;
    		}
    		out.println("합계 : " +result);
    	}

     

     

    소스 파일

    add2.html
    0.00MB
    Add2.java
    0.00MB

     

     

    댓글

Designed by Tistory.