-
구구단의 원하는 단을 입력해서 출력하기JAVA/웹 프로그래밍 - 서블릿 2020. 10. 29. 23:47
문제
구구단 프로그램을 만들어보자.
웹 페이지에 localhost:9090/GooGoodan?dan=5 를 입력하면 5단이 출력되게 만들자.
파일 생성
java resources의 하위에 src폴더가 있고 이 폴더 하위로 com.iot.web 패키지가 있다.
이 패키지를 선택하고 우클릭해서 new를 선택하고 Servlet을 선택한다.
클래스 명은 GooGooDan으로 한다. 대소문자를 구분하기 때문에 이를 인지하고 단어들을 사용하자.
next를 클릭한다. 다시 next를 선택한다.
Constructors from superclass 를 체크 해제한다.
doPost함수와 doGet함수 체크 해제를 한다.service함수는 체크한다.
Finish를 선택한다.
파일이 생성되면, 주석이 있는 부분은 모두 지운다.
아래의 내용을 복사해서 붙여 넣자.
GooGooDan.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("/GooGooDan") public class GooGooDan extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String dan_ = request.getParameter("dan"); // 리퀘스트의 정보를 받는다. int dan = Integer.parseInt(dan_); for (int i = 1; i < 10; i++) out.println(dan +" X " +i +" = " +(dan*i) +"<br>"); } }
GooGooDan.java 에서 서버를 실행해보자.
당연히 에러가 뜬다.
웹 브라우저의 주소 창에 http://localhost:9090/GooGooDan?dan=5 라고 적으면 5단이 뜬다.
실행결과
위의 내용에는 예외처리를 해줘야 하는 부분이 존재한다.
처음에 서버를 실행했을 때의 아무것도 입력이 안 된 상태와, "?"만, "?dan", "?dan=" 에 대한 처리를 하자.
아래의 내용을 붙여 넣자.
GooGooDan.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("/GooGooDan") public class GooGooDan extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); int dan = 2; // 2단으로 초기화 String dan_ = request.getParameter("dan"); // 리퀘스트의 정보를 받는다. // dan_이 null이 아니면 정수로 변환 if (dan_ != null && dan_ != "") { dan = Integer.parseInt(dan_); } for (int i = 1; i < 10; i++) out.println(dan +" X " +i +" = " +(dan*i) +"<br>"); } }
웨 브라우저에 각 문장들을 입력해보자.
1. http://localhost:9090/GooGooDan
2. http://localhost:9090/GooGooDan?
3. http://localhost:9090/GooGooDan?dan
4. http://localhost:9090/GooGooDan?dan=
5. http://localhost:9090/GooGooDan?dan=3
각 경우에 대한 예외 처리가 잘 되었음을 알 수 있다.
그런데, 위의 방식은 잘 사용하지 않는 방식이다.
잘 사용하는 방식은 index.html을 만들어서 구구단을 출력하는 Test.java를 링크를 걸어놔서 2단,3단,4단을
출력하는 방식으로 본다.
index.html 파일을 만들어보자.
html 파일은 WebContent 폴더에 만들어야 한다.
index.html 내용
더보기<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="http://localhost:9090/GooGooDan?dan=2">2단 출력 </a><br> <a href="http://localhost:9090/GooGooDan?dan=3">3단 출력 </a><br> <a href="http://localhost:9090/GooGooDan?dan=4">4단 출력 </a> </body> </html>
Test.java는 삭제를 하면 안된다.
그리고 index.html 소스 내에서 마우스 우클릭해서 run as 를 선택하고 run on server를 선택한다.
즉, index.html을 실행해야 한다.
각 단들을 선택하면 그에 대한 단들이 출력 됨을 알 수 있다.
'JAVA > 웹 프로그래밍 - 서블릿' 카테고리의 다른 글
form과 textArea & 한글 깨짐 해결 (0) 2020.10.30 form 형태로 전달하기 (0) 2020.10.30 반복문을 이용하여 문자열 여러 번 출력 (0) 2020.10.29 자바와 Tomcat 서버 연결하기 (0) 2020.10.29 Tomcat 서버 설치 (0) 2020.10.29