일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- swift
- Cocoa touch Framework
- 안드로이드
- 회원가입
- GetX
- 로그인
- Android
- 상태관리
- dart
- 1과목
- 변수
- Kotlin
- StatefulWidget
- non-nullable
- Provider
- go_router
- 안드로이드 스튜디오
- firebase
- 이메일
- flutter
- UserAccountsDrawerHeader
- 함수
- IOS
- firebase_auth
- BottomNavigationBar
- auth
- java
- Null Safety
- 정보처리기사
- setState
- Today
- Total
앱 개발 공부방
안드로이드 스튜디오-로그인 회원가입2 본문
저번 글에서 DB나 PHP구문에 대해서 했다면 이번에는 안드로이드 스튜디오로 연결해서 구현하겠습니다
처음으로 인터넷을 사용하기 위해 아래 글을 추가해줍니다
<uses-permission android:name="android.permission.INTERNET" />//인터넷 사용 허용
그다음 Gradle Scripts에 build.gradle(Module: app)에 Volley 라이브러리 사용을 위해 아래와 같이 추가해줍니다.
implementation 'com.android.volley:volley:1.1.1'//서버통신 관련 라이브러리
회원가입 화면을 보면 id중복체크가 있는데 중복체크를 위한 ValidateRequest 클래스를 만들어 줍니다.
ValidateRequest.java
package com.example.project5;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class ValidateRequest extends StringRequest {
//서버 url 설정(php파일 연동)
final static private String URL="http://cpcp1245.dothome.co.kr/UserValidate.php";
private Map<String,String> map;
public ValidateRequest(String userID, Response.Listener<String>listener){
super(Request.Method.POST,URL,listener,null);
map=new HashMap<>();
map.put("userID",userID);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
다음으로 RegisterRequest 클래스는 URL에 POST방식으로 파라미터들을 전송하는 역할을 수행합니다. 여기서는 회원가입정보를 PHP 서버에 보내서 데이터베이스에 저장시키게 합니다.
RegisterRequest.java
package com.example.project5;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class RegisterRequest extends StringRequest {
//서버 url 설정(php파일 연동)
final static private String URL="http://cpcp1245.dothome.co.kr/Register2.php";
private Map<String,String>map;
public RegisterRequest(String userID, String userPassword, String userName, int userAge,int userHak,String userMajor,Response.Listener<String>listener){
super(Method.POST,URL,listener,null);//위 url에 post방식으로 값을 전송
map=new HashMap<>();
map.put("userID",userID);
map.put("userPassword",userPassword);
map.put("userName",userName);
map.put("userAge",userAge+"");
map.put("userHak",userHak+"");
map.put("userMajor",userMajor);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
RegisterActivity는 버튼에 관한 객체를 생성한 뒤 리스너를 연결합니다. 또 volley라이브러리로 php서버와 통신하는 부분입니다.
RegisterActivity.java
package com.example.project5;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
public class RegisterActivity extends AppCompatActivity {
private EditText et_id, et_pass, et_name, et_age,et_hak,et_major,et_passck;
private Button btn_register,validateButton;
private AlertDialog dialog;
private boolean validate=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
//아이디 값 찾아주기
et_id=findViewById(R.id.et_id);
et_pass=findViewById(R.id.et_pass);
et_name=findViewById(R.id.et_name);
et_age=findViewById(R.id.et_age);
et_hak=findViewById(R.id.et_hak);
et_major=findViewById(R.id.et_maj);
et_passck=findViewById(R.id.et_passck);
validateButton=findViewById(R.id.validateButton);
validateButton.setOnClickListener(new View.OnClickListener() {//id중복체크
@Override
public void onClick(View view) {
String userID=et_id.getText().toString();
if(validate)
{
return;
}
if(userID.equals("")){
AlertDialog.Builder builder=new AlertDialog.Builder( RegisterActivity.this );
dialog=builder.setMessage("아이디는 빈 칸일 수 없습니다")
.setPositiveButton("확인",null)
.create();
dialog.show();
return;
}
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){
AlertDialog.Builder builder=new AlertDialog.Builder( RegisterActivity.this );
dialog=builder.setMessage("사용할 수 있는 아이디입니다.")
.setPositiveButton("확인",null)
.create();
dialog.show();
et_id.setEnabled(false);
validate=true;
validateButton.setText("확인");
}
else{
AlertDialog.Builder builder=new AlertDialog.Builder( RegisterActivity.this );
dialog=builder.setMessage("사용할 수 없는 아이디입니다.")
.setNegativeButton("확인",null)
.create();
dialog.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
ValidateRequest validateRequest=new ValidateRequest(userID,responseListener);
RequestQueue queue= Volley.newRequestQueue(RegisterActivity.this);
queue.add(validateRequest);
}
});
btn_register=findViewById(R.id.btn_register);
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//editText에 입력되어있는 값을 get(가져온다)해온다
String userID=et_id.getText().toString();
final String userPass=et_pass.getText().toString();
String userName=et_name.getText().toString();
int userAge=Integer.parseInt(et_age.getText().toString());
int userHak=Integer.parseInt(et_hak.getText().toString());
String userMajor=et_major.getText().toString();
final String PassCk=et_passck.getText().toString();
Response.Listener<String> responseListener=new Response.Listener<String>() {//volley
@Override
public void onResponse(String response) {
try {
JSONObject jasonObject=new JSONObject(response);//Register2 php에 response
boolean success=jasonObject.getBoolean("success");//Register2 php에 sucess
if(userPass.equals(PassCk)) {
if (success) {//회원등록 성공한 경우
Toast.makeText(getApplicationContext(), "회원 등록 성공", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
startActivity(intent);
}
}
else{//회원등록 실패한 경우
Toast.makeText(getApplicationContext(),"회원 등록 실패",Toast.LENGTH_SHORT).show();
return;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
//서버로 volley를 이용해서 요청을 함
RegisterRequest registerRequest=new RegisterRequest(userID,userPass, userName, userAge,userHak,userMajor,responseListener);
RequestQueue queue= Volley.newRequestQueue(RegisterActivity.this);
queue.add(registerRequest);
}
});
}
}
위의 방식과 같이 LoginRequest 클래스도 만들어 줍니다. 코드 구성은 거의 동일합니다.
LoginRequest.java
package com.example.project5;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class LoginRequest extends StringRequest {
//서버 url 설정(php파일 연동)
final static private String URL="http://cpcp1245.dothome.co.kr/Login2.php";
private Map<String,String>map;
public LoginRequest(String userID, String userPassword, Response.Listener<String>listener){
super(Method.POST,URL,listener,null);
map=new HashMap<>();
map.put("userID",userID);
map.put("userPassword",userPassword);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
LoginActivity.java
package com.example.project5;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
public class LoginActivity extends AppCompatActivity {
private EditText et_id, et_pass;
private Button btn_login,btn_register;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
et_id=findViewById(R.id.et_id);
et_pass=findViewById(R.id.et_pass);
btn_login=findViewById(R.id.btn_login);
btn_register=findViewById(R.id.btn_register);
btn_register.setOnClickListener(new View.OnClickListener() {//회원가입 버튼을 클릭시 수행
@Override
public void onClick(View v) {
Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);
startActivity(intent);
}
});
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String userID=et_id.getText().toString();
String userPass=et_pass.getText().toString();
Response.Listener<String> responseListener=new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jasonObject=new JSONObject(response);
boolean success=jasonObject.getBoolean("success");
if (success) {//회원등록 성공한 경우
String userID = jasonObject.getString("userID");
String userPass = jasonObject.getString("userPassword");
Toast.makeText(getApplicationContext(), "로그인 성공", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("log", "User");
intent.putExtra("userID", userID);
startActivity(intent);
}
else{//회원등록 실패한 경우
Toast.makeText(getApplicationContext(), "로그인 실패", Toast.LENGTH_SHORT).show();
return;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
LoginRequest loginRequest=new LoginRequest(userID,userPass,responseListener);
RequestQueue queue= Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);
}
});
}
}
로그인 액티비티에서 로그인 버튼을 누르면 main화면으로 넘어갑니다
main화면으로 어떠한 값을 넘길지는 자신이 선택하고 디자인하여 구성하면 되겠습니다.
'Android-java' 카테고리의 다른 글
안드로이드 스튜디오-카카오톡 로그인 구현하기(카카오 개발자에 앱 등록 및 설정) (0) | 2020.02.15 |
---|---|
안드로이드 스튜디오-SNS로그인 기능 구현시 필요한 해시 키 값 구하기 (1) | 2020.02.15 |
안드로이드 스튜디오-로그인 회원가입 만들기 (3) | 2020.02.13 |
안드로이드 스튜디오-List View (0) | 2020.02.07 |
안드로이드 스튜디오-Intent로 화면 이동 (0) | 2020.01.13 |