# Test004.java
- 자바의 기본 클래스를 Servlet으로 구성하는 방법 ① → GenericServlet 상속받는 클래스로 설계
/*==================
Test004.java
- Servlet 실습
==================*/
// 현재... 자바의 기본 클래스 Test004
// 이를... Servlet 으로 구성하는 방법
// GenericServlet 을 상속받는 클래스로 설계 → Servlet
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
//import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
//public class Test004 implements Servlet
//public abstract class Test004 extends GenericServlet
public class Test004 extends GenericServlet
{
// 경고 없애기 위해 넣은 직렬화 코드,,?
private static final long serialVersionUID = 1L;
// GenericServlet 의 추상메소드 재정의~!!!
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
{
// 요청에 대한 응답 방법
response.setContentType("text/html; charset=UTF-8");
try
{
// 출력 스트림 구성
PrintWriter out = response.getWriter();
out.print("<html>");
out.print("<head>");
out.print("<title>");
out.print("Test004.java");
out.print("</title>");
out.print("</head>");
out.print("<body>");
out.print("<div>");
out.print("<h1>");
out.print("서블릿 관련 실습");
out.print("</h1>");
out.print("<hr>");
out.print("</div>");
out.print("<div>");
out.print("<h2>");
out.print("GenericServlet 클래스를 이용한 서블릿 테스트");
out.print("</h2>");
out.print("</div>");
out.print("</body>");
out.print("</html>");
} catch (Exception e)
{
System.out.println(e.toString());
}
}
}
#Test005.java
- 자바의 기본 클래스를 Servlet으로 구성하는 방법 ② → HttpServlet 상속받는 클래스로 설계
/*====================
Test005.java
- Servlet 관련 실습
======================*/
// 현재... 자바의 기본 클래스 Test005
// 이를... Servlet 으로 구성하는 방법
// HttpServlet 을 상속받는 클래스로 설계 → Servlet
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 Test005 extends HttpServlet // 추상클래스이지만 내부적으로 추상메소드를 가지고 있지 않음 (Test004에서는 에러 떴는데 여기서는 경고인 이유)
{
private static final long serialVersionUID = 1L;
// 사용자의 http 프로토콜 요청이 GET 방식일 경우(method="get") 호출되는 메소드
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request, response);
}
// 사용자의 http 프로토콜 요청이 POST 방식일 경우(method="post") 호출되는 메소드
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request, response);
}
// 사용자 정의 메소드
protected void doGetPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// GET 방식이든 POST 방식이든
// 어떤 방식의 요청에도 모두 처리할 수 있는 사용자 정의 메소드
// (개발자가 어떤 방식으로 요청했는지 매번 확인하면서 코드를 작성할 수 없으니)
// request → 요청 객체
String id = request.getParameter("userId"); // requset 객체로부터 userId 값을 꺼내서 쓸거야! (Parameter로 저장되어 있음)
String pwd = request.getParameter("userPwd");
response.setContentType("text/html; charset=UTF-8");
String str = "아이디 : " + id + ", 패스워드 : " + pwd;
// 응답을 출력 스트림으로 구성하기 위한 준비
PrintWriter out = response.getWriter();
// 출력 스트림을 활용해서 페이지 랜더링
out.print("<!DOCTYPE html>");
out.print("<html>");
out.print("<head>");
out.print("<meta charset='UTF-8'>");
out.print("<title>Test005.java</title>");
out.print("</head>");
out.print("<body>");
out.print("");
out.print("<div>");
out.print(" <h1>서블릿 관련 실습</h1>");
out.print(" <hr>");
out.print("</div>");
out.print("");
out.print("<div>");
out.print(" <h2>HttpServlet 클래스를 활용한 서블릿 테스트</h2>");
out.print(" ");
out.print(" <p>" + str + "</p>");
out.print("</div>");
out.print("");
out.print("</body>");
out.print("</html>");
}
}
# jsptest005.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsptest005.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
<div>
<h1>JSP 관찰하기</h1>
<hr>
</div>
<div>
<h2>HttpServlet 관련 실습</h2>
<!-- ※ 입력 컨트롤을 활용하여 서버로 데이터를 전송하기 위해서는 form 필요 -->
<!-- ※ form 태그의 action 속성은
데이터 전송 및 페이지 요청을 해야하는
대상 페이지를 등록하는 기능을 수행한다.
(생략 시 데이터 전송 및 페이지 요청을 하게 되는 대상은 자기 자신) -->
<!-- ※ form 태그의 method 속성은 데이터 전송 및 페이지 요청에 대한 방식
(생략 시 데이터 전송 및 페이지 요청을 하게 되는 방식은 get) -->
<form action="/WebApp04/login" method="get">
<table>
<tr>
<th>아이디</th>
<td>
<!-- ※ name 속성 check~!!! --> <!-- 스크립트 제어를 할 경우에는 id 속성으로 제어하는데 서버로 접근할 경우에는 name 속성으로 제어 -->
<input type="text" name="userId" size="10" maxlength="10" class="txt">
</td>
</tr>
<tr>
<th>패스워드</th>
<td>
<!-- ※ name 속성 check~!!! -->
<input type="password" name="userPwd" size="10" class="txt">
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<!-- ※ submit 액션 → form 데이터 전송 및 페이지 요청 -->
<input type="submit" value="로그인" class="btn control"
style="width: 48%;">
<input type="reset" value="다시 입력" class="btn control"
style="width: 48%">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
↓ 아이디 창에 superman / 패스워드 창에 1234입력 ↓