프로그래밍/자바, JDBC

뉴렉처 학습(서블릿/JSP) 21강 ~ 22강(학습과제)

현호s 2020. 5. 12. 19:36
반응형

#21강 학습 과제(사용자 입력을 통한 계산 요청)

- 문제 : 사용자로부터 x, y 값 입력받아 결과 값으로서 x+y의 합계를 반환하기.

(직접 푼것)

1. add.html 파일 생성하여 입력받을 폼 생성 (WebContent에 add.html 생성 후 진행)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	// 입력 폼 생성 코드 x, y 입력, 결과 버튼
	<form action="add" method="post">
		<div>
			<label> x : </label>
			<input type="text" name="x" />
		</div>
		<div>
			<label> y : </label>
			<input type="text" name="y" />
		</div>
		<div>
			<input type="submit" valut="덧셈(계산)" />
		</div>
		<div>
			결과 : 0
		</div>
	</form>
    
</body>
</html>

2. 서블릿 생성하여 세부 코드 작성 (x+y 연산 등)

package com.nelecture.add;

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("/add")
public class sum extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = resp.getWriter();
		
		String temp1 = req.getParameter("x");
		
		String temp2 = req.getParameter("x");
		
		int x = Integer.parseInt(temp1);
		int y = Integer.parseInt(temp2);
		
		int sum = 0;
		
		sum = x + y;

		out.printf("x + y 결과 : %d", sum);

		
	}
}

 

#22강 과제풀이 (사용자 입력을 통한 계산 요청)

*21강 학습과제 풀이

1. 기존 com.newlecture.web 패키지에서 new 클릭 > servlet > class명 Add 입력 후 next > url mapping 편집(기존 Add > add) > service, inherited abstract methods만 체크 후 완료

2. 생성된 서블릿에 코드 입력 (x+y 연산 및 빈 문자열이 올 경우의 조건 설정 등)

package com.newlecture.web;

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("/add")
public class Add extends HttpServlet {
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		
		// 이때 빈 문자열이 오거나 or 진짜 담긴 값이 오는 경우 발생
		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 result = x + y;
		
		response.getWriter().printf("result is %d\n", result);
		
	}

}

3. add.html 생성하여 코드 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="add" method="post">
		<div>
			<label> x : </label>
			<input type="text" name="x" />
		</div>
		<div>
			<label> y : </label>
			<input type="text" name="y" />
		</div>
		<div>
			<input type="submit" value="덧셈(계산)" />
		</div>
		<div>
			결과 : 0
		</div>
	</form>
</body>
</html>

4. 입력 - 출력 결과 확인

x, y 입력 창 및 덧셈(계산) 버튼
입력(x, y : 5)에 따른 결과 출력

반응형