본문 바로가기

개인공부

안드로이드 : 회원 관리 프로젝트(로그인 및 메인 화면)

반응형
package org.techtown.management;

import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

public class LoginRequest extends StringRequest {

    final static private  String URL = "http://pssin1.cafe24.com/Login.php";
    private Map<String, String> parameters;

    public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){
        super(Method.POST, URL, listener, null);
        parameters = new HashMap<>();
        parameters.put("userID",userID);
        parameters.put("userPassword", userPassword);
    }
    @Override
    public Map<String, String > getParams(){
        return parameters;
    }

}

 

java 메인문에 클래스를 추가해줍니다 LoginRequest로 설정해줍니다

(RegisterRequest)랑 비슷하므로 복사해서 수정하시면 됩니다.

 

  final static private  String URL = "http://pssin1.cafe24.com/Login.php";

php서버를 입력해줍니다 이때 DB에는 login을 처리하는 SQL이 작성되어있습니다.

 

 private Map<String, String> parameters;

String 두개로 구현된 parameters를 만들어서 DB에서 값을 받아옵니다.

    public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){
        super(Method.POST, URL, listener, null);
        parameters = new HashMap<>();
        parameters.put("userID",userID);
        parameters.put("userPassword", userPassword);
    }

 

LoginRequest는 로그인 요청이들어오면 userID와 userPssword를 받아

POST방식으로 전송합니다. 이때 parameters에 HashMap을 넣어서

put함수를 통해 "userID" <-DB테이블에있는 변수를 불러와 userID에 넣습니다.

 

    public Map<String, String > getParams(){
        return parameters;
    }

php에 작성되어있는 success나 그외를 반환합니다.

package org.techtown.management;

import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;

import org.json.JSONObject;

import java.security.spec.ECField;

public class LoginActivity extends AppCompatActivity {

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

        final TextView idText = (TextView) findViewById(R.id.idText);
        final TextView passwordText = (TextView) findViewById(R.id.passwordText);

        final Button loginButton = (Button) findViewById(R.id.loginButton);
        final TextView registerButton = (TextView) findViewById(R.id.registerButton);

        //버튼을 눌럿을때 이벤트 처리
        registerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //레지스트 인텐트로 넘어갈수록 해준다
                Intent registerIntent = new Intent(LoginActivity.this,RegisterActivity.class);
                LoginActivity.this.startActivity(registerIntent);
            }
        });

        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view){
                final String userID = idText.getText().toString();
                final String userPassword = passwordText.getText().toString();

                Response.Listener<String> responseListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try
                        {
                            JSONObject jsonResponse = new JSONObject(response);
                            boolean success =jsonResponse.getBoolean("success");
                            if(success){
                                String userID = jsonResponse.getString("userID");
                                String userPassword = jsonResponse.getString("userPassword");
                                Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                                intent.putExtra("userID",userID);
                                intent.putExtra("userPassword",userPassword);
                                LoginActivity.this.startActivity(intent);
                            }
                            else{
                                AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
                                builder.setMessage("로그인에 실패하였습니다.")
                                        .setNegativeButton("다시 시도",null)
                                        .create()
                                        .show();
                            }
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }
                    }
                };

                LoginRequest loginRequest = new LoginRequest(userID,userPassword,responseListener);
                RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
                queue.add(loginRequest);

            }
        });
    }
}

Login Activity 소스

 Response.Listener<String> responseListener = new Response.Listener<String>() {

Response.Listener 내부클래스로 인터넷으로 접속한뒤 response를 저장할수있게해준다.

 JSONObject jsonResponse = new JSONObject(response);
boolean success =jsonResponse.getBoolean("success");

 

JSNObject 를 이용해서 response를 저장할수 있겠금합니다.

php파일에서 success를 이용했는데 그값이 참이라면 true값을 반환합니다.

 

if(success){
                                String userID = jsonResponse.getString("userID");
                                String userPassword = jsonResponse.getString("userPassword");
                                Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                                intent.putExtra("userID",userID);
                                intent.putExtra("userPassword",userPassword);
                                LoginActivity.this.startActivity(intent);
                            }

로그인 성공시

               else{
                                AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
                                builder.setMessage("로그인에 실패하였습니다.")
                                        .setNegativeButton("다시 시도",null)
                                        .create()
                                        .show();
                            }

로그인 실패시

LoginRequest loginRequest = new LoginRequest(userID,userPassword,responseListener);
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);

 

값들을 매개변수로 넘겨주고

RequestQueue를 이용해서 인터넷으로 접속해서 rsponse를보내고 request를 받아온다.

 

package org.techtown.management;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

        TextView idText = (TextView) findViewById(R.id.idText);
        TextView passwordText = (TextView) findViewById(R.id.passwordText);
        TextView welcomeMessage = (TextView) findViewById(R.id.welcomeMessage);

        Intent intent = getIntent();
        String userID = intent.getStringExtra("userID");
        String userPassword = intent.getStringExtra("userPassword");
        String message = "환영합니다, " + userID + "님!";

        idText.setText(userID);
        passwordText.setText(userPassword);
        welcomeMessage.setText(message);
    }
}

main_Activity소스

반응형