이전까지 프로젝트 진행함.

--------------------------------------------------------------------------------



프로젝트 생성 후 환경설정 시작


- DBConn.java

- ojdbc14.jar

- standerd.jer

- jstl.jar



--------------------------------------------------------------------------------

Servlet(서블릿)


1. 서블릿은 Sun사에서 내놓은 웹프로그래밍 언어의 한 종류. Java 언어를 기반으로 동적인 컨텐츠를 생성.


2. Java 코드안에 HTML 코드가 혼재되어 있다.


3. 서블릿은 Servlet 인터페이스를 구현하여 GenericServlet을 만들고 이를 다시

   http 프로토콜에 맞게 확장한 HttpServlet 클래스를 상속한 후 내부 메서드를 재성의(오버라이딩)하여 사용한다.


4. 서블릿의 동작 순서

- 클라이언트의 요청 (서블릿 주소)

- 서블릿 Handler 8080 포트에서 요청 받음.

- 서블릿 컨테이너에서 해당 서블릿 검색

- 해당 서블릿 실행

- 서블릿의 결과인 HTML 도큐먼트를 웹클라이언트에서 출력(웹페이지).


5. Deployment Descripter(배치 기술서)

- 환경 설정 파일.

- web.xml

- 서블릿 맵핑

- 패키지를 포함한 클래스명 과 경로 패턴은 동일할 필요는 없음.

- 서블릿 이름은 위와 아래가 동일해야함.



<servlet>

<servlet-name>서블릿 이름</servlet-name>

<setvlet-class>패키지를 포함한 클래스명</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>서블릿 이름</servlet-name>

<url-pattern>경로 패턴</url-pattern>

</servlet-mapping>


----------------------------------예)

WEB.XML 내 서블릿 맵핑 작업


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>Servlet_20121203</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  

  <servlet>

<servlet-name>servlet01</servlet-name>

<servlet-class>com.test.Servlet01</servlet-class>

  </servlet>

  <servlet-mapping>

<servlet-name>servlet01</servlet-name>

    <url-pattern>/Servlet01</url-pattern>

  </servlet-mapping>


</web-app>





* 맵핑을 해야 서블릿 요청이 가능함.

* HttpServlet 클래스를 상속받은 클래스를 서블릿이라 부름.

* doGET, doPOST 가 먼저 호출



WEB.XML에서 서블릿 맵핑후 실제 실행 주소

http://localhost:8090/Servlet_20121203/Servlet01




-----------------------------------------------------------------------

첫 번째 서블릿 클래스 작성


//Servlet01.java

package com.test;


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;


public class Servlet01 extends HttpServlet {

private static final long serialVersionUID = 1L;


//사용자 요청이 GET방식인 경우 자동 호출

//브라우저에 요청한 주소는 GET 방식.

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//HTML 도큐먼트 동적 생성 코드 작성

PrintWriter out = resp.getWriter();

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<title>");

out.println("</title>");

out.println("</head>");

out.println("<body>");

out.println("<div>Hello, Servlet World!</div>");

out.println("</body>");

out.println("</html>");

}


//사용자 요청이 POST인 경우 자동 호출

//<form action="" method="post"></form> 태그를 이용한 요청

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

super.doPost(req, resp);

}


}


실행 주소

http://localhost:8090/Servlet_20121203/Servlet01



-----------------------------------------------------------

서블릿과 JSP 비교


//Servlet02.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%

String str = "Hello, JSP World!";

%>    

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<div>

<h3><%=str%></h3>

</div>

</body>

</html>



//eclipse_source\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\Servlet_20121203\org\apache\jsp\Servlet02_jsp.java

//JSP 소스 코드가 서블릿으로 변환된 모습

//Servlet02_jsp.java

package org.apache.jsp;


import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;


public final class Servlet02_jsp extends org.apache.jasper.runtime.HttpJspBase

    implements org.apache.jasper.runtime.JspSourceDependent {


  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();


  private static java.util.List _jspx_dependants;


  private javax.el.ExpressionFactory _el_expressionfactory;

  private org.apache.AnnotationProcessor _jsp_annotationprocessor;


  public Object getDependants() {

    return _jspx_dependants;

  }


  public void _jspInit() {

    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();

    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());

  }


  public void _jspDestroy() {

  }


  public void _jspService(HttpServletRequest request, HttpServletResponse response)

        throws java.io.IOException, ServletException {


    PageContext pageContext = null;

    HttpSession session = null;

    ServletContext application = null;

    ServletConfig config = null;

    JspWriter out = null;

    Object page = this;

    JspWriter _jspx_out = null;

    PageContext _jspx_page_context = null;



    try {

      response.setContentType("text/html; charset=EUC-KR");

      pageContext = _jspxFactory.getPageContext(this, request, response,

      null, true, 8192, true);

      _jspx_page_context = pageContext;

      application = pageContext.getServletContext();

      config = pageContext.getServletConfig();

      session = pageContext.getSession();

      out = pageContext.getOut();

      _jspx_out = out;


      out.write('\r');

      out.write('\n');


String str = "Hello, JSP World!";


      out.write("    \r\n");

      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");

      out.write("<html>\r\n");

      out.write("<head>\r\n");

      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">\r\n");

      out.write("<title>Insert title here</title>\r\n");

      out.write("</head>\r\n");

      out.write("<body>\r\n");

      out.write("<div>\r\n");

      out.write("\t<h3>");

      out.print(str);

      out.write("</h3>\r\n");

      out.write("</div>\r\n");

      out.write("</body>\r\n");

      out.write("</html>");

    } catch (Throwable t) {

      if (!(t instanceof SkipPageException)){

        out = _jspx_out;

        if (out != null && out.getBufferSize() != 0)

          try { out.clearBuffer(); } catch (java.io.IOException e) {}

        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);

        else log(t.getMessage(), t);

      }

    } finally {

      _jspxFactory.releasePageContext(_jspx_page_context);

    }

  }

}




---------------------------------------------------------------------------------------

문제) 반복문을 이용해서 1~100 사이의 짝수만 출력. Servlet 이용.

* 서블릿 클래스 작성 - HttpServlet 클래스 상속한 클래스

* 서블릿 맵핑 - web.xml - 웹서버 재실행 필요.


---------------------------------------------------------------------------------------

//Servlet03.java

package com.test;


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;


public class Servlet03 extends HttpServlet {


//사용자 요청이 GET방식인 경우 자동 호출

//브라우저에 요청한 주소는 GET 방식.

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

StringBuilder str = new StringBuilder();

for (int a=2; a<=100; a+=2) {

str.append(String.format("%d<br>",a));

}

//HTML 도큐먼트 동적 생성 코드 작성.

PrintWriter out = resp.getWriter();

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println(str);

out.println("</div>");

out.println("</body>");

out.println("</html>");


}


//사용자 요청이 POST인 경우 자동 호출

//<form action="" method="post"></form> 태그를 이용한 요청

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


}



}




//web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>Servlet_20121203</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  

  <!-- 서블릿 요청 주소 -->

<servlet>

<!-- 서블릿 매핑용 이름 -->

<servlet-name>servlet01</servlet-name>

<!-- 서블릿 이름 -->

<servlet-class>com.test.Servlet01</servlet-class>

</servlet>

<!-- 클라이언트 요청 주소 -->

<servlet-mapping>

<!-- 서블릿 매핑용 이름 -->

<servlet-name>servlet01</servlet-name>

<!-- 클라이언트 요청 주소 이름 -->

<url-pattern>/Servlet01</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>servlet03</servlet-name>

<servlet-class>com.test.Servlet03</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>servlet03</servlet-name>

<url-pattern>/Servlet03</url-pattern>

</servlet-mapping>


</web-app>



----------------------------------------------------------------

문제) 반복문을 이용해서 1~100 사이의 짝수만 출력. 

마지막에 짝수들의 합까지 출력. JSP 이용.

실행 예)

2

4

6

8

...


100

------

합계:2550



//Servlet04.java

package com.test;


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;


public class Servlet04 extends HttpServlet {


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


StringBuilder str = new StringBuilder();

int sum = 0;


for (int a=1; a<=100; a++) {

if (a%2 == 0) {

str.append(String.format("%d<br>", a));

sum += a;

}

}

str.append(String.format("----------<br>합계: %d", sum));


//한글 출력용 인코딩 처리 

resp.setContentType("text/html; charset=EUC-KR");

//HTML 도큐먼트 동적 생성 코드 작성.

PrintWriter out = resp.getWriter();

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println(str);

out.println("</div>");

out.println("</body>");

out.println("</html>");


}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

super.doPost(req, resp);

}


}




-----------

데이터 송수신 테스트1 (텍스트 박스 객체)



//Send01.jsp -> 입력 페이지 역할. 입력된 데이터를 서버로 전송.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(obj) {

//데이터 검사

var name = document.getElementById("name");

var tel = document.getElementById("tel");

var msg = document.getElementById("msg");

msg.style.display = "none";

//빈칸 검사

if (name.value == "" || tel.value == "") {

msg.style.display = "inline";

return;

}

//데이터 전송

obj.form.submit();

}


</script>

</head>

<body>

<div>

<h2> 데이터 전송 테스트1</h2>

<!-- action 속성에 서블릿 주소로 표기할 것 -->

<form action="Receive01" method="post">

이름 <input type="text" id="name" name="name"><br>

전화 <input type="text" id="tel" name="tel"><br>

<input type="button" value="전송" onclick="myFunc(this)">

<span id="msg" style="color:red; display:none">데이터 모두 입력해라~</span>

</form>

</div>

</body>

</html>


//Receive01.java -> 처리, 출력 페이지 역할. 클라이언트가 전송한 데이터 수신 및 처리. 결과 메시지를 클라이언트에게 전송.

package com.test;


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;


public class Receive01 extends HttpServlet {


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


//송수신 데이터에 한글이 포함된 경우이므로 아래의 명령 추가

req.setCharacterEncoding("euc-kr");

//데이터 수신

String name = req.getParameter("name");

String tel = req.getParameter("tel");

String str = String.format("%s %s", name, tel);

//결과출력

//한글 출력용 인코딩 처리 

resp.setContentType("text/html; charset=EUC-KR");

//HTML 도큐먼트 동적 생성 코드 작성.

PrintWriter out = resp.getWriter();

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2> 데이터 전송 테스트1</h2>");

out.println("<h3>");

out.println(str);

out.println("</h3>");

out.println("</div>");

out.println("</body>");

out.println("</html>");

}


}



//web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>Servlet_20121203</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>


<servlet>

<servlet-name>receive01</servlet-name>

<servlet-class>com.test.Receive01</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>receive01</servlet-name>

<url-pattern>/Receive01</url-pattern>

</servlet-mapping>


</web-app>


//요청주소

http://localhost:8090/Servlet_20121203/Send01.jsp


------------------------------------------------------------------------------------------

데이터 송수신 테스트2 

-> Send02, Receive02를 모두 서블릿으로 변경


//Send02.java

package com.test;


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;


public class Send02 extends HttpServlet {


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


resp.setContentType("text/html; charset=EUC-KR");

PrintWriter out = resp.getWriter();

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("<script type=\"text/javascript\">");

out.println("function myFunc(obj) {");

out.println("var name = document.getElementById(\"name\");");

out.println("var tel = document.getElementById(\"tel\");");

out.println("var msg = document.getElementById(\"msg\");");

out.println("msg.style.display = \"none\";");

out.println("if (name.value == \"\" || tel.value == \"\") {");

out.println("msg.style.display = \"inline\";");

out.println("return;");

out.println("}");

out.println("obj.form.submit();");

out.println("}");

out.println("</script>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2> 데이터 전송 테스트2</h2>");

out.println("<form action=\"Receive02\" method=\"post\">");

out.println("이름 <input type=\"text\" id=\"name\" name=\"name\"><br>");

out.println("전화 <input type=\"text\" id=\"tel\" name=\"tel\"><br>");

out.println("<input type=\"button\" value=\"전송\" onclick=\"myFunc(this)\">");

out.println("<span id=\"msg\" style=\"color:red; display:none\">데이터 모두 입력해라~</span>");

out.println("</form>");

out.println("</div>");

out.println("</body>");

out.println("</html>");

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


}

}




//Receive02.java

package com.test;


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;


public class Receive02 extends HttpServlet {


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


//송수신 데이터에 한글이 포함된 경우이므로 아래의 명령 추가

req.setCharacterEncoding("euc-kr");

//데이터 수신

String name = req.getParameter("name");

String tel = req.getParameter("tel");

String str = String.format("이름:%s 전화번호:%s", name, tel);

//결과출력

//한글 출력용 인코딩 처리 

resp.setContentType("text/html; charset=EUC-KR");

//HTML 도큐먼트 동적 생성 코드 작성.

PrintWriter out = resp.getWriter();

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2> 데이터 전송 테스트2</h2>");

out.println("<h3>");

out.println(str);

out.println("</h3>");

out.println("</div>");

out.println("</body>");

out.println("</html>");

}

}




//web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>Servlet_20121203</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

 

<servlet>

<servlet-name>send02</servlet-name>

<servlet-class>com.test.Send02</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>send02</servlet-name>

<url-pattern>/Send02</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>receive02</servlet-name>

<servlet-class>com.test.Receive02</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>receive02</servlet-name>

<url-pattern>/Receive02</url-pattern>

</servlet-mapping>


</web-app>



//요청주소

http://localhost:8090/Servlet_20121203/Send02


------------------------------------------------------------------------------------------

문제) 거스름돈을 환폐단위로 구분해서 출력. 서블릿 이용.

실행 예)


금액(10~1000) [990  ]  [결과]


총액 : 990원

오백원 1개, 백원 4개, 오십원 1개, 십원 4개


//Send03.java


//Receive03.java


//web.xml



---------------------------------------

데이터 송수신 테스트3 (라디오 객체)


//Send04.java


//Receive04.java


//web.xml



---------------------------------------

데이터 송수신 테스트4 (체크박스 객체)



//Send05.java

package com.test;


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;


public class Send05 extends HttpServlet {


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGetPost(req, resp);

}

protected void doGetPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

resp.setContentType("text/html; charset=EUC-KR");

PrintWriter out = resp.getWriter();

out.println("");

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("<script type=\"text/javascript\">");

out.println("function myFunc(obj) {");

out.println("var checkboxes = document.getElementsByName(\"icecream\");");

out.println("var msg = document.getElementById(\"msg\");");

out.println("msg.style.display = \"none\";");

out.println("var check = false;");

out.println("for (var a=0; a<checkboxes.length; a++) {");

out.println("if (checkboxes[a].checked) {");

out.println("check = true;");

out.println("}");

out.println("}");

out.println("if (check) {");

out.println("obj.form.submit();");

out.println("} else {");

out.println("msg.style.display = \"inline\";");

out.println("}");

out.println("}");

out.println("</script>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2>데이터 송수신 테스트4</h2>");

out.println("<form action=\"Receive05\" method=\"post\">");

out.println("- 종류 선택 -<br><br>");

out.println("<input type=\"checkbox\" name=\"icecream\" value=\"1\"> 고스트월드");     

out.println("<input type=\"checkbox\" name=\"icecream\" value=\"2\"> 엄마는 외계인"); 

out.println("<input type=\"checkbox\" name=\"icecream\" value=\"3\"> 바나나몬스터<br>");

out.println("<input type=\"checkbox\" name=\"icecream\" value=\"4\"> 초코라떼크런치 ");

out.println("<input type=\"checkbox\" name=\"icecream\" value=\"5\"> 뉴욕치즈케익 ");

out.println("<input type=\"checkbox\" name=\"icecream\" value=\"6\"> 슈팅스타<br>");

out.println("<input type=\"button\" value=\"확인\"");

out.println("onclick=\"myFunc(this)\"><br>");

out.println("<span id=\"msg\" style=\"color:red; display:none;\">종류를 선택해야 합니다.</span>");

out.println("</form>");

out.println("</div>");

out.println("</body>");

out.println("</html>");

}


}




//Receive05.java

package com.test;


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;


public class Receive05 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGetPost(req, resp);

}

protected void doGetPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

resp.setContentType("text/html; charset=EUC-KR");

PrintWriter out = resp.getWriter();

String[] array = req.getParameterValues("icecream");

StringBuilder str = new StringBuilder();

String[] icecreamName = {"고스트월드", "엄마는 외계인", "바나나몬스터", "초코라떼크런치", "뉴욕치즈케익", "슈팅스타"};

for (String icecream : array) {

str.append(String.format("<li>%s</li>",icecreamName[Integer.parseInt(icecream)-1]));

}

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2>데이터 송수신 테스트3</h2>");

out.println("<h3>출력 ------------</h3>");

out.println("<div>선택한 종류는<ol>");

out.println(str);

out.println("</ol>입니다.</div>");

out.println("</div>");

out.println("</body>");

out.println("</html>");


}

}




//web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>Servlet_20121203</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  

  <!-- 서블릿 요청 주소 -->

<servlet>

<!-- 서블릿 매핑용 이름 -->

<servlet-name>servlet01</servlet-name>

<!-- 서블릿 이름 -->

<servlet-class>com.test.Servlet01</servlet-class>

</servlet>

<!-- 클라이언트 요청 주소 -->

<servlet-mapping>

<!-- 서블릿 매핑용 이름 -->

<servlet-name>servlet01</servlet-name>

<!-- 클라이언트 요청 주소 이름 -->

<url-pattern>/Servlet01</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>servlet03</servlet-name>

<servlet-class>com.test.Servlet03</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>servlet03</servlet-name>

<url-pattern>/Servlet03</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>servlet04</servlet-name>

<servlet-class>com.test.Servlet04</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>servlet04</servlet-name>

<url-pattern>/Servlet04</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>receive01</servlet-name>

<servlet-class>com.test.Receive01</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>receive01</servlet-name>

<url-pattern>/Receive01</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>send02</servlet-name>

<servlet-class>com.test.Send02</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>send02</servlet-name>

<url-pattern>/Send02</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>receive02</servlet-name>

<servlet-class>com.test.Receive02</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>receive02</servlet-name>

<url-pattern>/Receive02</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>send03</servlet-name>

<servlet-class>com.test.Send03</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>send03</servlet-name>

<url-pattern>/Send03</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>receive03</servlet-name>

<servlet-class>com.test.Receive03</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>receive03</servlet-name>

<url-pattern>/Receive03</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>send04</servlet-name>

<servlet-class>com.test.Send04</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>send04</servlet-name>

<url-pattern>/Send04</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>receive04</servlet-name>

<servlet-class>com.test.Receive04</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>receive04</servlet-name>

<url-pattern>/Receive04</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>send05</servlet-name>

<servlet-class>com.test.Send05</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>send05</servlet-name>

<url-pattern>/Send05</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>receive05</servlet-name>

<servlet-class>com.test.Receive05</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>receive05</servlet-name>

<url-pattern>/Receive05</url-pattern>

</servlet-mapping>


</web-app>


----------------------------------------------------------------------------------------------

문제) 임의의 수를 입력 받아서 3의 배수, 4의 배수로 구분해서 출력.


실행 예)

임의의 정수(3 또는 4의 배수) [3  ] [결과]


입력받은 숫자 : 3

구분 : 3의 배수



//Send_Receive06.java

package com.test;


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;


public class Send_Receive06 extends HttpServlet {


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


resp.setContentType("text/html; charset=EUC-KR");

PrintWriter out = resp.getWriter();

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("<script type=\"text/javascript\">");

out.println("function myFunc(obj) {");

out.println("var num = document.getElementById(\"num\");");

out.println("var msg = document.getElementById(\"msg\");");

out.println("msg.style.display = \"none\";");

out.println("if (num.value == \"\") {");

out.println("msg.style.display = \"inline\";");

out.println("return;");

out.println("}");

out.println("if (num.value.match(/[^0-9]/)) {");

out.println("msg.style.display = \"inline\";");

out.println("return;");

out.println("}");

out.println("obj.form.submit();");

out.println("}");

out.println("</script>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2>데이터 송수신 테스트5</h2>");

out.println("<form method=\"post\">");

out.println("임의의 정수(3 또는 4의 배수)");

out.println("<input type=\"text\" name=\"num\" id=\"num\"");

out.println("style=\"width:80px;\">");

out.println("<input type=\"button\" value=\"결과\"");

out.println("onclick=\"myFunc(this)\"><br>");

out.println("<span id=\"msg\" style=\"color:red; display:none;\">숫자를 입력해야 합니다.</span>");

out.println("</form>");

out.println("<h3>출력------------</h3>");

out.println("<div>");

out.println("</div>");

out.println("</div>");

out.println("</body>");

out.println("</html>");

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


resp.setContentType("text/html; charset=EUC-KR");

PrintWriter out = resp.getWriter();

String num = req.getParameter("num");

StringBuilder str = new StringBuilder();

int data = Integer.parseInt(num);

        String s = "3 또는 4의 배수가 아닙니다.";

if ((data % 3) == 0) {

            s = "3의 배수";

        }

if ((data % 4) == 0) {

          s = "4의 배수";

      }

      if ((data % 12) == 0) {

          s = "3 또는 4의 배수";

      }

     

        str.append(String.format("입력 받은 숫자 : %s<br>", num));

       str.append(String.format("구분 : %s<br>", s));        

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("<script type=\"text/javascript\">");

out.println("function myFunc(obj) {");

out.println("var num = document.getElementById(\"num\");");

out.println("var msg = document.getElementById(\"msg\");");

out.println("msg.style.display = \"none\";");

out.println("if (num.value == \"\") {");

out.println("msg.style.display = \"inline\";");

out.println("return;");

out.println("}");

out.println("if (num.value.match(/[^0-9]/)) {");

out.println("msg.style.display = \"inline\";");

out.println("return;");

out.println("}");

out.println("obj.form.submit();");

out.println("}");

out.println("</script>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2>데이터 송수신 테스트5</h2>");

out.println("<form method=\"post\">");

out.println("임의의 정수(3 또는 4의 배수)");

out.println("<input type=\"text\" name=\"num\" id=\"num\"");

out.println("style=\"width:80px;\">");

out.println("<input type=\"button\" value=\"결과\"");

out.println("onclick=\"myFunc(this)\"><br>");

out.println("<span id=\"msg\" style=\"color:red; display:none;\">숫자를 입력해야 합니다.</span>");

out.println("</form>");

out.println("<h3>출력------------</h3>");

out.println("<div>");

out.println(str);

out.println("</div>");

out.println("</div>");

out.println("</body>");

out.println("</html>");

}

}



//web.xml


----------------------------------------------------------------------------------------------------

문제) 임의의 수를 입력 받아서 3의 배수, 4의 배수로 구분해서 출력.


실행 예)

임의의 정수(3 또는 4의 배수) [3  ] [결과]


입력받은 숫자 : 3

구분 : 3의 배수



//Send_Receive06.java

package com.test;


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;


public class Send_Receive07 extends HttpServlet {


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGetPost(req, resp);

}


protected void doGetPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

resp.setContentType("text/html; charset=EUC-KR");

PrintWriter out = resp.getWriter();

String num = req.getParameter("num");

StringBuilder str = new StringBuilder();

if (num == null) {

str.append("");

} else {

int data = Integer.parseInt(num);

        String s = "3 또는 4의 배수가 아닙니다.";

if ((data % 3) == 0) {

            s = "3의 배수";

      }

if ((data % 4) == 0) {

        s = "4의 배수";

      }

      if ((data % 12) == 0) {

          s = "3 또는 4의 배수";

    }

    

        str.append(String.format("입력 받은 숫자 : %s<br>", num));

       str.append(String.format("구분 : %s<br>", s));

}

out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

out.println("<html>");

out.println("<head>");

out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-KR\">");

out.println("<title>Insert title here</title>");

out.println("<script type=\"text/javascript\">");

out.println("function myFunc(obj) {");

out.println("var num = document.getElementById(\"num\");");

out.println("var msg = document.getElementById(\"msg\");");

out.println("msg.style.display = \"none\";");

out.println("if (num.value == \"\") {");

out.println("msg.style.display = \"inline\";");

out.println("return;");

out.println("}");

out.println("if (num.value.match(/[^0-9]/)) {");

out.println("msg.style.display = \"inline\";");

out.println("return;");

out.println("}");

out.println("obj.form.submit();");

out.println("}");

out.println("</script>");

out.println("</head>");

out.println("<body>");

out.println("<div>");

out.println("<h2>데이터 송수신 테스트5</h2>");

out.println("<form method=\"post\">");

out.println("임의의 정수(3 또는 4의 배수)");

out.println("<input type=\"text\" name=\"num\" id=\"num\"");

out.println("style=\"width:80px;\">");

out.println("<input type=\"button\" value=\"결과\"");

out.println("onclick=\"myFunc(this)\"><br>");

out.println("<span id=\"msg\" style=\"color:red; display:none;\">숫자를 입력해야 합니다.</span>");

out.println("</form>");

out.println("<h3>출력------------</h3>");

out.println("<div>");

out.println("</div>");

out.println(str);

out.println("</div>");

out.println("</body>");

out.println("</html>");

}

}



//web.xml


---------------------------------------------------------------------------------------

문제) 세 개의 숫자를 전달 받아서 그 중에서  가장 큰 숫자, 가장 작은 숫자 구하기. 서블릿 이용.


실행 예)

숫자1 [OO  ]   숫자2 [XX  ]   숫자3 [YY  ]   [결과]


입력 받은 숫자 : OO, XX, YY

가장 큰 숫자 :  OO

가장 작은 숫자 :  YY


//Send_Receive08.java



//web.xml


WRITTEN BY
빨강꼬마

,