2020.11.27 고급자바 수업노트 정리 ServletTest 6 ~

 ServletTest06 


package kr.or.ddit.basic;


import java.io.IOException;

import java.io.PrintWriter;


import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebInitParam;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



//애너테이션에 서블릿 초기화 설정하는 예제 

@WebServlet(urlPatterns = "/servletTest6.do" , 

            initPrams = { @WebnInitParam(name="email" , value="admin@gmail.com"), 

                               @WebInitParam(name="name" , value="성춘향") 

                                }

                 ) 



public class ServletTest06 extends HttpServlet {

    private static final long serialVersionUID = 1L; 



    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        respons.setCharacterEncoding("utf-8"); 

        response.setContentType("text/html; charset=utf=8"); 

        PrintWriter out = response.getWriter(); 


        ServletConfig config = getServletConfig(); 

        

        String email = getInitParameter("email");  

        String name = config.getInitParameter("name"); 

     


        out.println("<!DOCTYPE html>"); 

        out.println("<html>"); 

        out.println("<head><meta charset='utf-8'>");

out.println("<title>웹 서버의 정보 </title></head>");

out.println("<body>");

out.println("<h2>서블릿초기화파라미터(애너테이션)</h2>");

out.println("이메일 : " + email + "<br>");

out.println("이름 : " + name + "<br>");

          

    }

    

    protected void doPost(HttpServletRequest requst, HttpServletResponse response ) throws ServletExeption, IOExcption{ 

// TODO Auto-generated method stub

doGet(request, response);

    }


}

    

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

컨텍스트 초기화 파라미터 ==> 웹 어플리케이션 전체에 속하는 초기화 파라미터 

web.xml 파일의 <web-app> 엘리먼트 바로 아래의 자식 엘리먼트로 <context-param> 

이라는 이름으로 작성한다.

이 <context-param> 엘리먼트는 <param-name> 과 <param-value> 의 자식 엘리먼트가 있다. 

  <context-param>

    <param-name>myContext</param-name>

    <param-value>연습용 컨텍스트 파라미터 값</param-value>

  </context-param>

</web-app>


Sevlet 클래스에서는 getServletContext() 메서드를 이용해서 

ServletContext 객체를 구하고 이 객체의 getInitParameter() 메서드를 호출하여 사용한다. 




ServletTest07 


package kr.or.ddit.basic;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
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("/servletTest7")

public class servletTest07 extends HttpServlet {

    private static final long serialVersionUID = 1L; 

 


    protected void doGet(HttpServletRequest request , HttpServletResponse response) throws ServletException IOException {


        response.setCharacterEncoding("utf-8"); 

        response.setContentType("text/html charset=utf-8"); 

        PrintWriter out = response.getWriter(); 


        ServletContext context = getServletContext(); 

        String param = context.getInitParameter("myContext");


        out.println("<!DOCTYPE html>"); 

        out.println("<html>");

out.println("<head><meta charset='utf-8'>");
out.println("<title>초기화 파라미터 연습 </title></head>");
out.println("<body>");
out.println("<h2>Context 초기화 파라미터</h2>");
out.println("myContext : " + param + "<br>" ) ; 
        }



        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException , IOException{

            doGet(request, response);
        }
}

-----------------------------------------------------------------------------------------------------
ServletTest08

/*
이 서블릿의 매핑 URL 은 "/servletTest08.do" 로 하고
이 서블릿에 초기화 파라미터로 'start' 에는 1 , 'end' 에는 50을 설정한 후
이 초기화 파라미터값을 읽어와 start 값부터 en 값까지의 합계를 출력하는 서블릿을 작성하기
(설정은 web.xml ) 을 이용한다.

*/ 


   
package kr.or.ddit.basic;

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;


public class ServletTest08 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8"); 
PrintWriter out = response.getWriter(); 
int start = Integer.parseInt(getInitParameter("start")); 
int end = Integer.parseInt(getInitParameter("end")); 
int result = 0;
for (int i= start ; i <= end ; i++) {
result += i;
}
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head><meta charset='utf-8'>");
out.println("<title>계산 </title></head>");
out.println("<body>");
out.println("<h1> 계산 </h1>");
out.println("첫번째 값  :" + start + "<br>");
out.println("마지막값 : " + end + "<br>");
out.println("결과값은  " + start + "부터 " + end + "까지합 : " +  + result + "<br>");
out.println("</body>");
out.println("</html>"); 
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

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

homework ( 개인과제 ) 





package kr.or.ddit.basic;

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("/ServletTestHomework.do")
public class ServletTestHomework extends HttpServlet {
private static final long serialVersionUID = 1L;
   


//get 방식으로 받아왔음 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//나가서 출력할때도 utf=8 로 출력한다. 
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter(); 
//post 방식의 데이터 인코딩 설정 
//요청이 들어온것을 utf-8 형식으로 변경해서 
request.setCharacterEncoding("utf-8");
//요청할때 넘어옷 값 가져오기 
int first = Integer.parseInt(request.getParameter("first")); 
String operator = request.getParameter("operator"); 
int second = Integer.parseInt(request.getParameter("second")); 
double result = 0 ;  
boolean calcOk = true; //계산 성공 여부를 저장할 변수 ( false 면 계산 불능 상태 )  
if (operator.equals("+")) {
result = first + second; 
}
else if(operator.equals("-")) {
result = first - second; 
}else if (operator.equals("/")) {
 
if(second == 0 ) {
calcOk = false; 
}else {
result = (double)first / second; 
}
}else if (operator.equals("*")) {
result = first * second; 
}else if (operator.equals("%")) {
result = (double)first % second; 
}
out.println("<html>"); 
out.println("<head><meta charset='utf-8'><title>계산기연습</title></head>");
out.println("<body>"); 
out.print("첫번째 값 : " + first + "<br>" );
out.print("연산자 " + operator + "<br>");
out.println("두번째 값 : " + second + "<br>" );
out.println("<hr>"); 
out.println("<h1>" + first + operator + second + " = " ); 
if(calcOk == true) {
out.println(result + "<br>"); 
}else {
out.println("계산 불가능" + "<br>"); 
}
out.println(result +  "</h1>"); 
out.println("</body>"); 
out.println("</html>"); 
    //response.getWriter().append("Served at: ").append(request.getContextPath());
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

//////////////////////////////////////////////////////////////////////////////////////////////

jsp 파일 


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>계산기문제</h1>
<hr>
<form name="testForm" action="/servletTest/ServletTestHomework.do" method="get">
<input type="text" size="10" name ="first" >
<select name="operator">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
<option value="%">%</option>
</select>
<input type="text" size="10" name="second">
<input type="submit" value="계산" >
</form>






</body>
</html>


-----------------------------------------------------------------------------------------------------
RequestTest 

// HttpServletRequest 객체 관련 예제 (JSP 문서에서는 request 객체 ) 

package kr.or.ddit.reqres;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Map;

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("/requestTest.do")
public class RequestTest extends HttpServlet {
    private static final long serialVersionUID = 1L;


        protected void doGet ( HttpServletRequest, HttpServletResponse response) 
throws ServletException , IOEception {
            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html ; charset= utf-8");
    
            printWriter out = response.getWriter(); 


            //POST 방식의 데이터 인코딩 설정 

            request.setCharacterEncoding("utf-8"); 

            //요청할 떄 넘어온 값을 가져오기 
            // request.getParameter("파라미터명")
// ==> 해당 파라미터에 설정될 '값'을 가져온다. ( 가져온 값은 'String' 형 이다. )  

            String userName = request.getParameter("username"); 
            String job = request.getParameter("job"); 

            //request.getParameterValues("파라미터명") -> 여러개가 선택되서 올때  
            // 예를들어 <option value="" > 여기서  선택되서 올 때 여러개일 수 있다. 
            // 전달되는 '파라미터명' 이 여러개일 경우에 사용한다. 
            // 가져온값은 ' String[] 이다 (String 배열)     
            //FORM 에서 구성된 CHECKBOX 중 선택된 값들을 모두 읽어온다. 

            

            String[] hobbies = request.getParameterValues("hobby"); 
            

out.println("<html>"); 
out.println("<head><meta charset='utf-8'><title>Request 객체 연습 </title></head>"); 
out.println("<body>"); 
out.println("<h2>request 테스트 결과</h2>"); 
out.println("<table border='1'>"); 
out.println("<tr><td>이름</td>");
out.println("<td>" + userName + "</td></tr>" ); 
out.println("<tr><td>직업</td>");
out.println("<td>" + job + "</td></tr>"); 
out.println("<tr><td>취미</td>");
out.println("<td>"); 
//배열의 크기만큼 반복
for(int i = 0 ; i < hobbies.length; i++) {
out.println(hobbies[i] + "<br>" );
}
out.println("</td></tr>"); 
out.println("</table>"); 
out.println("<hr>"); 
out.println("<h2>request 객체의 메서드들 </h2>");
out.println("<table border='1'><tr><td> ");
out.println("1. 클라이언트의 IP 주소 : " + request.getRemoteAddr() + "<br>"); 
out.println("2. 요청 method : " + request.getMethod() + "<br>"); 
out.println("3. ContextPath : " + request.getContextPath() + "<br>"); 
out.println("4. 프로토콜 : " + request.getProtocol() + "<br>"); 
out.println("5. URL 정보 : " + request.getRequestURL() + "<br>"); 
out.println("5. URI 정보 : " + request.getRequestURI() + "<br>"); 
out.println("</td></tr></table>");
out.println("<hr>"); 
            



        //request.getParameterNames() ==> 전송된 모든 파라미터의 이름을 
// Enumeration<String> 객체에 담아서 반환한다. 

        out.println("<h2>request.getParameterNames() 메서드 처리 결과 </h2>"); 
out.println("<ul>");
Enumeration<String> params = request.getParameterNames(); 
while(params.hasMoreElements())  {
String name = params.nextElement();
out.println("<li>" + name + "</li>");
}
out.println("</ul>"); 
out.println("<hr>"); 
//request.getParameterMap() ==> 전송된 모든 파라미터를 Map 객체에 담아서 반환  
//위에서는 parameter 를 알았지만 parameter 명을 자동으로 생성했거나 할때 
        //모를수가 있다. 그럴때 파라미터명 가져옴. 
// 이 Map 객체의 key 값은 '파라미터명' 이며 자료형은 'String' 형이고, 
// value 값은 파라미터에 저장된 '값' 이며 자료형은 ' String[]' 형이다. 
out.println("<h2>request.getParameterMap() 메서드 처리 결과</h2>"); 
out.println("<table border='1'><tr><td>파라미터이름</td><td>파라미터value 값            </td></tr>");
Map<String, String[]> paramMap = request.getParameterMap(); 
for(String paramName : paramMap.keySet()) {
    out.println("<tr><td>" + paramName + "</td>"); //파라미터 name 출력
    out.println("<td>"); 
//파라미터 value 값 가져오기 
String[] paramValues = paramMap.get(paramName);
if(paramValues == null || paramValues.length == 0 ) {
continue; 
}else if (paramValues.length == 1 ) {
out.println(paramValues[0] + "<br>");
}else {
for(int i = 0 ; i < paramValues.length; i++) {
if(i>0) out.println(","); 
out.println(paramValues[i]);
}
        }
        out.println("</td><tr>"); 
        }
out.println("</table>");
out.println("</body></html>");
/* response.getWriter().append("Served at: ").append(request.getContextPath());*/
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //post 방식일때 여기로 제어가 온다. 그런데 지금 doGet 을 해서 위에 
        //doGet 에 코딩을 해도 됬어 ! 
doGet(request, response);  
}

}







/////////////////////////////////////////////////////////////////////////////////////////////////////////

jsp 부분

requestTest jsp 




<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<title>Request 연습 Form</title>
</head>
<body>

<h2>Request 연습 Form</h2>
<hr>
<form name="testForm" action="/servletTest/requestTest.do"
method="post">
<table border="1">
<tr>
<td>이름</td>
<td><input type="text" size="10" name="username"></td>
</tr>


<tr>
<td>직업</td>
<td><select name="job">
<option value="무직">무직</option>
<option value="회사원">회사원</option>
<option value="전문직">전문직</option>
<option value="공무원">공무원</option>
<option value="학생">학생</option>


</select>
<td>
</tr>

<tr>
<td>취미</td>
<td>
                                    <input type="checkbox" name="hobby" value="여행">여행                                         <input type="checkbox" name="hobby" value="게임">게임                                         <input type="checkbox" name="hobby" value="배드민턴">배드민턴 
                                    <input type="checkbox" name="hobby" value="테니스">테니스 
                                    <input type="checkbox" name="hobby" value="탁구">탁구                                    </td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="submit" value="확인">
<input type="reset" value="취소">
</td>
</tr>



</table>

</form>

</body>
</html>

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


web xml 


web-inf - lib랑같이 있음 
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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>servletTest</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>servletTest08</servlet-name>
    <servlet-class>kr.or.ddit.basic.ServletTest08</servlet-class>
    <init-param>
      <param-name>start</param-name>
      <param-value>1</param-value>
    </init-param>
    <init-param>
      <param-name>end</param-name>
      <param-value>50</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletTest08</servlet-name>
    <url-pattern>/servletTest08.do</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>servletTest01</servlet-name>
    <servlet-class>kr.or.ddit.basic.ServletTest01</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletTest01</servlet-name>
    <url-pattern>/servletTest01.do </url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>servletTest05</servlet-name>
    <servlet-class>kr.or.ddit.basic.ServletTest05</servlet-class>
    <init-param>
      <param-name>AdminEmail</param-name>
      <param-value>admin@naver.com</param-value>
    </init-param>
    <init-param>
      <param-name>userName</param-name>
      <param-value>홍길동</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletTest05</servlet-name>
    <url-pattern>/servletTest05.do</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>myContext</param-name>
    <param-value>연습용 컨텍스트 파라미터 값</param-value>
  </context-param>
  <servlet>
    <description></description>
    <display-name>ResponseTest01</display-name>
    <servlet-name>ResponseTest01</servlet-name>
    <servlet-class>kr.or.ddit.reqres.copy.RequestTest</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ResponseTest01</servlet-name>
    <url-pattern>/responseTest01.do</url-pattern>
  </servlet-mapping>
</web-app>















댓글