Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


Servlet과 Applet간의 HTTP 통신
 
Servlet과 Applet간의 HTTP 통신을 이용하여 Database 내용을 Applet에 Display하는 방법 ( 2003/04/02 ) 817
Written by ienvyou - 최지웅
4 of 4
 

 

MyServlet.java

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{


doGet(req,res);


}
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{

res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
String command = req.getParameter("name");

if (command == null) {
System.out.println("commnad");
//out.println("Server에 접속 되셨습니다.");
} else{
ObjectOutputStream oout=new ObjectOutputStream(out);
Object o[]=null;
try{
o=result(out,command);
}catch(Exception ee){System.out.println("DB Error");}
oout.writeObject(o);
}


}


public Object[] result(OutputStream out,String command) throws Exception {


String constr = "jdbc:oracle:thin:@localhost:1521:ORCL";
conn = DriverManager.getConnection(constr, "java","java");
stmt = conn.createStatement();
Vector v=new Vector(1,1);
Object data[]=null;
if(command.equals("Users")){
rset=stmt.executeQuery("SELECT * FROM users");
while(rset.next()){
v.addElement(new UsersEntity(rset.getString(1),rset.getString(2),rset.getString(3)));
}
data=new UsersEntity[v.size()];
v.copyInto(data);

}else if(command.equals("Item")){
rset=stmt.executeQuery("SELECT * FROM item");
while(rset.next()){
v.addElement(new ItemEntity(rset.getString(1),rset.getDouble(2)));
}
data=new ItemEntity[v.size()];
v.copyInto(data);
}
return data;



}

Servlet에서는 Http Protocol을 통해 doGet 이나 doPost method가 호출 되어진다.

String command = req.getParameter("name");

Parameter로 Client로부터의 정보를 받아서

ObjectOutputStream oout=new ObjectOutputStream(out);

ObjectOutputStream을 만들고 결과값을 Client에게 전달하게 된다.

위의 예제에서는 ConnectionPooling이나 Singleton에대해서는 언급하지 않고 있다.

 

 

3. 실행

client side

MyApplet.class

ServletMessage.class

UsersEntity.class

ItemEntity.class

이 파일들을 하나의 jar 파일로 만들고

jar cvf myapplet.jar MyApplet.class ServletMessage.class UsersEntity.class ItemEntity.class

MyApplet.html

<HTML>
<head>
<title>Phone Applet World</title>
</head>

<body>
<applet archive=myapplet.jar code=MyApplet width=500 height=400>
</applet>
</body>
</HTML>

MyApplet.html 문서와 myapplet.jar 두가지 파일을 web server의 documentation dir에 놓는다.

server side

MyServlet.class

UsersEntity.class

ItemEntity.class

이세가지 파일을 servlet class가 존재하는 dir에 놓는다.

실행 화면

Users data display

Item data display

 

applet의 활용도가 커지면서 여러가지 제약 사항이 발생 된다.

이러한 상황을 Servlet을 이용하여 해결하는 방법에 대해 알아 보았다.

이러한 방법을 통하면 server족에서는 여러 port를 열어 놓을 필요도 없고 복잡한 middle ware application 개발도 줄어든다.

또한 JSP 나 Servlet의 UI에 대한 한계를 applet으로 해결 하므로서 보다 다이나믹한 web을 구축할수 있다.

 
1 2 3 4
References
 
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD