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

안드로이드에서 버튼 눌러서 디비 데이터 업데이트 질문 입니다!!

0 추천
public class MainActivity extends AppCompatActivity {

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

        Button connBtn = (Button) findViewById(R.id.button01);
        connBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ConnectTask connector = new ConnectTask();
                connector.execute();
            }
        });
    }

    class ConnectTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... voids) {
            try {
                String strUrl = "http://192.168.0.54:8888/android/guest/like_up.jsp";
                URL url = new URL(strUrl);  // URL화 한다.
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.disconnect();

            } catch (MalformedURLException exception) {
                exception.printStackTrace();
            } catch (IOException io) {
                io.printStackTrace();
            }
            return null;
        }
    }
}

액티비티 소스입니다!! 버튼을 눌러서 테스크 실행한뒤 테스크에서 웹서버로 접속 하게 만들었습니다!!

<?xml version="1.0" encoding="UTF-8"?>

<%@ page contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="sample_dbConn.jsp" %>
<%@ page import="java.sql.PreparedStatement"%>

 <%
    request.setCharacterEncoding("euc-kr");
    //String id = request.getParameter("id");
    sql = "update like_table set like_flag1 = 1 where id = 'taek'";

    //rs = stmt.executeQuery(sql);
    stmt = con.createStatement();
    stmt.executeUpdate(sql);

    stmt.close();
    con.close();
 %>

이건 like_up.jsp 소스 인데요!! 크롬으로 url처서 들어갔을때 데이터가 업데이트 되는건 확인했는데요. 

안드로이드에서 접속해서 할려니깐 아무런 변화가 없습니다 ㅜㅜ 뭐가 문제일까요??

익명사용자 님이 2016년 9월 29일 질문

1개의 답변

0 추천
안드로이에서 서버로 전송하는 데이터가 안보이는데요. 그냥 connect 하셨다 바로 disconnect하고 계시는데요. 데이터를 서버로 전송하셔야 서버가 받아서 처리하겠죠.
spark (227,910 포인트) 님이 2016년 9월 30일 답변
그럼 disconnect지우고 포스트로 테이블명이나 컬럼명 보낸다음에 jsp 파일에서 받아서 sql 실행하게 하면 되는건가요??
어떻게 서버와 클라이언트가 통신하는 것과 어떤 프로토콜, 포맷으로 데이터를 주고 받을 지를 먼저 정리하세요. 그게 먼저 정확하게 정의가 되어 있어야 합니다.

String id = request.getParameter("id");

위의 코드만 놓고 보면 서버에서는 지금 id라는 키를 가진 데이터가 올거라고 가정하고 있습니다. 서버에서 request에서 id를 축출하려면 id를 모바일에서 전송하셔야 겠죠.
서버 작업도 같이 병행되는 것 같은데, 기본적인 http통신과 rest api에 대해서 공부를 하시는게 좋은 것 같습니다. 요즘은 JSP를 가지고 api를 구축하는 경우는 없을 거라고 생각했는데, 그렇게 하고 계시네요. JSP는 api를 서비스 해주는 목적이 아니라 Java Server Page로 웹페이지 기술 중의 하나입니다. 보안과 유지보수를 위해서는 이 부분도 고려를 하셔야 할 듯.
저도 웹페이지로 쓸려고 jsp를 선택한거구요. 아직 공부 중이라 테스트해볼겸 간단하게 만든 소스 입니다!! 개념이 부족했던거 같네요ㅜㅜ 답변 감사합니다
엔터프라이즈 급의 애플리케이션이 아니라면 JSP를 선택하시는 것보다는 JavaScript-NodeJS+Express나  Python-Django 같은 가벼운 프레임웤이 생산성도 JEE보다 월등하게 높고 세팅이나 릴리즈도 확실이 쉽기 때문에 Enterprise Java를 하실 것이 아니면 이쪽을 추천해드립니다.
...