내용은 책내용 입니다. 아직 초보라..^.,^
아파치 톰캣을 연동하고
애플릿에서 서블릿접근하고 서블릿은 오라클에 접근해서 내용을 가져오는
프로그램인데요.. 405( Method Not Allowed) 메시지가 나옵니다..
현제는 톰캣에서만 테스트 중입니다.
아래
애플릿 실행후 select * from dept 을 넣고 클릭하면
java.io.IOException... 이 뜨고 값이 출력되지는 않습니다.
아무 문자나 넣고 클릭해도 마찬가지네요.컴파일 오류는 없고요..
서블릿은 단독 실행해서.. 오라클과 연동을 확인했습니다.
select * from dept로 확인했습니다.
------------------------
소스 올려드립니다.
------------------------
DbServlet.java
-------------
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
import java.io.*;public class DbServlet extends HttpServlet {
Connection dbCon;
Statement stmt;
String smesg;
public void init() throws ServletException{
try{
Class.forName(oracle.jdbc.driver.OracleDriver);
} catch(ClassNotFoundException e) {
System.out.println(nodata!);
e.printStackTrace();
}
String url=jdbc:oracle:thin:@127.0.0.1:1521:aii;
String id=scott;
String pass=tiger;try{
dbCon = DriverManager.getConnection(url,id,pass);
smesg=(databases connected succeed);//-----------
stmt = dbCon.createStatement();
}catch(SQLException e) {
smesg=(databases connected failure!);//-----------
e.printStackTrace();
}
}
//---------------------------- 윗부분은 오라클 접속..--------------------
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException {
ResultSet rs;res.setCharacterEncoding(KSC5601);
PrintWriter out = res.getWriter();
String qry = req.getParameter(qry);//out.println(smesg);// 이곳은 그냥 접속이 성공했는지 확해봄try{
stmt = dbCon.createStatement();
rs = stmt.executeQuery(qry);
while(rs.next()) {
out.println(rs.getString(1) + - + rs.getString(2));
out.println(rs.getString(3));
out.println();
}
}catch (Exception e) {
out.println(e.toString());
return;
}
out.println();
out.close();
}
public void destroy(){
try
{
dbCon.close();
}
catch (Exception e)
{
System.out.println(Error closing database(destory));
System.out.println(e.toString());
}
}
}
------------------------------------------------------------------------------
DbApplet.java
----------------
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class DbApplet extends Applet implements ActionListener {
TextField tfQuery;
TextArea taResults;
Button btnExecute;
Label lb;
public void init() {
Panel p1 = new Panel();
lb = new Label(Query String:);
tfQuery = new TextField(,50);
btnExecute = new Button(Execute Query);
taResults = new TextArea();
p1.setLayout(new FlowLayout(FlowLayout.LEFT));
p1.add(lb);
p1.add(tfQuery);
btnExecute.addActionListener(this);
p1.add(btnExecute);
add(Center,taResults);
add(Center,btnExecute);
add(Center,tfQuery);
}
public void executeQuery()
{
String qryString = tfQuery.getText();
try{
//---------------- 이 아래에서 문제가 발생하는거 같은데요 ---------------------URL url = new URL(http://localhost:8080/bit/servlet/DbServlet);
String qry = URLEncoder.encode(qry,euc-kr) + = + URLEncoder.encode(qryString,euc-kr);URLConnection uc = url.openConnection();uc.setDoOutput(true);
uc.setDoInput(true);
uc.setUseCaches(false);
uc.setRequestProperty(content-type,application/x-www-form-urlencoded );
DataOutputStream dos = new DataOutputStream(uc.getOutputStream());
dos.writeBytes(qry);
dos.flush();
dos.close();
InputStreamReader in = new InputStreamReader(uc.getInputStream());
int chr = in.read();
&nbs
while(chr != -1)
{
taResults.append(String.valueOf((char) chr));
chr = in.read();
in.close();
}
} catch(MalformedURLException e) {
taResults.setText(e.toString()); }
catch(IOException e) {
taResults.setText(e.toString());
}
}
public void actionPerformed(ActionEvent ae){
executeQuery();
}
}
------------------------------------------------
혼자해결해 보려고 며칠을 해봤는데.. 않되네요 .
댓글 0