관리 메뉴

nkdk의 세상

3번 서블릿으로 자료 주고 받기 본문

My Programing/JSP and Servlet

3번 서블릿으로 자료 주고 받기

nkdk 2008. 3. 9. 00:58
일단 한글이 되게 하기 위해서
server.xml 의 내용을 수정합니다.

<Connector URIEncoding="euc-kr" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443"/>

다음과 같이 URIEncoding 부분에 euc-kr 을 추가해 줍니다.

또한 web.xml 부분에서 자동적으로 추가 되기 때문에 실행하는 부분에 대해서는 걱정하지 않아도 되지만, 해당되는 이름을 줄이고 싶을 때에는

<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>nice.sert1</servlet-class>
</servlet>
<servlet>

이런 식의 변경이 필요합니다.

그럼 sert1 과 sert2에 대해서 올리겠습니다.

package nice;
import java.io.*;
import java.util.Calendar;

import javax.servlet.*;
import javax.servlet.http.*;

public class sert1 extends HttpServlet implements Servlet {
private sert2 sg;
public void init() throws ServletException{
// 초기화를 담당함 포함시킬경우 문제가 발생하기 때문이다.
sg = new sert2();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=euc-kr"); // 한글이 바이트 단위로 가기 때문에 묶어서 내보낸다.
PrintWriter out = response.getWriter(); // 출력
out.print("<html>");
out.println("<body><center>");
out.println("<h1>서블릿 시작</h1>");
int a= 10, b=20;
int sum = calc(a,b);
out.println("a="+ a + ", b=" +b);
out.println("<br>sum="+sum);
java.util.Calendar calendar= java.util.Calendar.getInstance(); // 클래스의 포함
out.println("<hr width=70%>날짜:"+calendar.get(java.util.Calendar.YEAR) +"년 ");
out.println((calendar.get(java.util.Calendar.MONTH)+1) + "월");
// sert2 sg = new sert2(); 이렇게 그냥 포함시키면 문제가 있다. 객체가 계속 생성되기 때문에
// 문제가 발생한다.
out.println("<br><h3>이름 : " + sg.getIrum());
int n = 0;
sg.disp(n, out);
// String str = "</h3></center>";
// str += "</body>";
// str += "</html>";
StringBuffer bf = new StringBuffer();
bf.append("</h3></center>");
bf.append("</body>");
bf.append("</html>");
// 문자열 더하기는 최대한 안 쓰도록 한다. 속도가 떨어진다.
out.println(bf.toString());
out.close();
// system.exit(0)를 하면 브라우저가 종료되 버린다. 그렇기 때문에 하면 안된다.
// 주의: 메소드 종료시에는 retrun 을 사용한다.

}

private int calc(int a,int b) {
return a+b;
}
}

//sert2 내용

package nice;
import java.io.*;

public class sert2 {
private String irum;
public sert2() {
irum = "홍길동";
}
public String getIrum() {
return irum;
}
public void disp(int n, PrintWriter out) {
try {
int su = 10 / n;
out.println("<p>연산 결과 : "+ su);
} catch (Exception e) {
out.println("<p>에러 : 0으로 나눌 수 없습니다.");
return;
}
out.println("<br>아싸 아싸!");

}
}

자 다음회에서는 lifecycle에 대해서 배우면서 자료를 주고 받도록
하겠습니다.