마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 > jsp > 오라클 연동 질문드립니다.. 도와주세요

0 추천
1. 기능을 수행할 MainAcivity.java
 try {
                        String result;
                        String sign_ID = signID.getText().toString();
                        String sign_Name = signName.getText().toString();
                        String sign_gender = gender_result;
                        String sign_phonenb = phoneNb.getText().toString();
                        String sign_serviceId = serviceId_result;
                        String sign_address = signAddress.getText().toString();
                        String sign_PW = signPW.getText().toString();
                        String sign_mail = signmail.getText().toString();
                        String sign_Birth1 = signBirth.getText().toString();
                        String sign_Birth2 = signBirth2.getText().toString();
                        String sign_Birth3 = signBirth3.getText().toString();

                        joinTask task = new joinTask();
                        result = task.execute(sign_ID,sign_Name,sign_gender,sign_phonenb,sign_serviceId,sign_address,sign_PW,sign_mail,sign_Birth1,sign_Birth2,sign_Birth3).get();
                    } catch (Exception e) {
                        Log.v("DBtest","ERROR!!!!");
                    }
 
코딩뉴비 (310 포인트) 님이 2022년 10월 27일 질문
2.jsp로 보내는 코드가 담긴 joinTase.java
public class joinTask extends AsyncTask<String, Void, String> {

    String sendMsg, receiveMsg;

    @Override
    protected String doInBackground(String... strings) {
        try {
            String str;

            // 접속할 서버 주소
            URL url = new URL("http://IP주소:8089/ex/joinForm.jsp");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            Log.v("error","통신오류11");
            conn.setRequestMethod("POST");
            Log.v("error","통신오류12");
            OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(),"UTF-8");
            Log.v("error","통신오류13");
            // 전송할 데이터. GET 방식으로 작성
            Log.v("error","통신오류1");
            sendMsg = "sign_ID=" + strings[0] + "&sign_Name=" + strings[1] + "&sign_gender=" + strings[2]+ "&sign_phonenb=" + strings[3]+ "&sign_serviceId=" + strings[4]+ "&sign_address=" + strings[5]+ "&sign_PW=" + strings[6]+ "&sign_mail=" + strings[7]+ "&sign_Birth1=" + strings[8]+ "&sign_Birth2=" + strings[9]+ "&sign_Birth3=" + strings[10];
            Log.v("error","통신오류2");
            osw.write(sendMsg);
            osw.flush();

            //jsp와 통신 성공 시 수행
            if (conn.getResponseCode() == conn.HTTP_OK) {
                InputStreamReader tmp = new InputStreamReader(conn.getInputStream(), "UTF-8");
                BufferedReader reader = new BufferedReader(tmp);
                StringBuffer buffer = new StringBuffer();
                Log.v("error","통신오류3");
                // jsp에서 보낸 값을 받는 부분
                while ((str = reader.readLine()) != null) {
                    buffer.append(str);
                }
                receiveMsg = buffer.toString();
            } else {
                Log.v("error","통신오류3");
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //jsp로부터 받은 리턴 값
        return receiveMsg;
    }
가상머신 실행시 null 만 저장되길래 로그를 하나씩 다 찍어주니까 통신오류12번 까지 밖에 안찍힙니다.

jsp에서 데이터를 임의로 넣어주면 데이터베이스에 값이 들어값니다. 제 생각은 jsp로 못넘겨주는것 같습니다.. 또한 androidManifest.xml 에 <user-permission android:name="android.permission.INTERNET"/> 도 해줬습니다.

OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(),"UTF-8");
이 코드 부터 실행 안되는것 같은데 혹시 문법오류나 , 보이시는 문제점이 있을까요..?ㅠㅠ

 

1개의 답변

0 추천
JSP는 java server page로, Java를 이용하여 Web application을 만들기 위해 사용되어 왔습니다. 제가 이해하기로는 JSP는 페이지 기반이라 상태값이 없는 REST API를 만들기에는 최적은 아닌 것으로 보입니다. Spring이나 SpringBoot같이 REST API를 쉽게 만들 수 있는 보조툴이나 프레임웤을 찾아보시는 게 좋을 것  같습니다. 물론 JSP의 설정을 변경해서 가능하기는 하지만 어느 쪽이 적합한지 고민을 하시는게 좋을 듯 합니다.
spark (226,420 포인트) 님이 2022년 10월 27일 답변
...