이전까지 프로젝트 진행함.
--------------------------------------------------------------------------------
프로젝트 생성 후 환경설정 시작
- 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
'Java > JSP & Servlet' 카테고리의 다른 글
[20121205] 16일차 (JSP / Servlet / JDBC 연동) (0) | 2012.12.05 |
---|---|
[20121204] 15일차 (Servlet JDBC 연동) (0) | 2012.12.04 |
[20121122] 8일차 (직원관리 최종버젼) (0) | 2012.12.04 |
[20121121] 7일차 (직원관리) (0) | 2012.12.04 |
[20121120] 6일차 (직원관리) (0) | 2012.12.04 |
WRITTEN BY