찬이욥
212
2022-05-14 15:26:03 작성 2022-05-14 15:26:23 수정됨
4
92

[안드로이드 스튜디오] Jsp로 OrcaleDB - tomcat server 연동 질문


jsp와 오라클을 이용한 어플 회원가입 및 로그인 화면 예제를 공부하던 중 질문이 생겨 질문글 남깁니다!


서버와 연결해서 앱의 입력값을 넣는 액티비티

- RegisterActivity.java


package com.example.loginexample;

import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class RegisterActivity extends AsyncTask<String, Void, String>
{
    String sendMsg, receiveMsg;
    @Override
    protected String doInBackground(String... strings)
    {
        try
        {
            String str;

            // 접속할 서버 주소(이클립스에서 android.jsp 실행시 웹프라우저 주소)
            URL url = new URL("http://아이피주소/Test/WebContent/Android/androidDB.jsp");
            /* http://ip주소:포트번호/이클립스프로젝트명/WebContent아래폴더/androidDB.jsp */

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestMethod("POST");
            OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(),"UTF-8");

            // 전송할 데이터.GET 방식으로 작성
            sendMsg="id="+strings[0]+"&pw="+strings[1];

            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();
                
                //jsp에서 보낸 값을 받는 부분
                while((str = reader.readLine()) != null)
                {
                    buffer.append(str);
                }
                receiveMsg = buffer.toString();
            }
            else
            {
                System.out.println("통신에 실패하였습니다.");
                //통신실패
            }
        }
        catch(MalformedURLException e) { e.printStackTrace(); }
        catch(IOException e) { e.printStackTrace(); }

        //jsp로 부터 받은 리턴값
        return receiveMsg;
    }
}


메인액티비티

- MainActivity.java


package com.example.loginexample;

import androidx.appcompat.app.AppCompatActivity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity
{

    Button registerBtn;
    EditText idet, pwet;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setTitle("ORACLE");

        registerBtn = (Button) findViewById(R.id.register_btn);
        idet = (EditText) findViewById(R.id.register_id);
        pwet = (EditText) findViewById(R.id.register_pw);

        registerBtn.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View view)
            {
                try
                {
                    Toast.makeText(MainActivity.this,"버튼눌림",Toast.LENGTH_SHORT).show();
                    String result;
                    String id = idet.getText().toString();
                    String pw = pwet.getText().toString();

                    RegisterActivity task = new RegisterActivity();
                    result = task.execute(id, pw).get();
                }
                catch (Exception e)
                {
                    Log.i("DBtest", ".....ERROR.....!");
                }
            }
        });

    }
}

이와 같이 수행을 하면 오류는 나지 않지만 안드로이드에서 제가 입력한 아이디와 비밀번호 값이 제가 생성한 db로 넘어가지 않는것 같습니다.

실행을 하면 레지스터 엑티비티 에서 통신에 실패했을시에 확인을 할수 있도록 제가 임의로 넣은

"통신에 실패하였습니다." 라는 문구가 뜹니다. 오류는 나지 않는데 왜 계속 연결이 안되는 걸까요??

메니페스트 xml 파일에 "<uses-permission android:name="android.permission.INTERNET"/>" 의 인터넷 접속 권한을 주는 문구까지 작성을 했는데 계속 되지 않습니다 ㅠㅠ


0
  • 답변 4

  • 대충벌레
    33
    2022-05-14 16:46:50

    뭐지? 내가쓴 블로그내용 같은데 ..?

  • 찬이욥
    212
    2022-05-14 17:29:01

    대충벌레 넵 맞습니다 ㅠㅠ 예제를 찾던 중에 대충벌레님이 작성하신 글이 있길래 한번 해보고 공부하려고 하는데 안되서 질문글 올립니다 ㅠㅠ

  • 대충벌레
    33
    2022-05-14 18:28:29
    톰캣 서버는 run 하신건가요?
  • 찬이욥
    212
    2022-05-15 10:35:45

    대충벌레 네 ㅠㅠ 톰캣 서버까지 실행 시기고 했는데도 안됩니다 ㅠㅠ

  • 로그인을 하시면 답변을 등록할 수 있습니다.