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>
댓글
댓글 쓰기