Log.v("resultValue",response);
로그캣에서 응답받은 JSON 데이터 확인하고Log.v("resultValue", response.length()+"");
응답글자 수 보여짐-> 글자수가 0일때 응답객체의 글자수가 없어서 로인실패라는 것을 알 수 있다.json 받아와 변수에 담아주고 MemberVO타입으로 담아줌
startActivity(intent);
package com.example.ex220516;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
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 com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
public class Login extends AppCompatActivity {
private Button btn_login;
private EditText edt_login_id,edt_login_pw;
private RequestQueue requestQueue;
private StringRequest stringRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
btn_login = findViewById(R.id.btn_login);
edt_login_id = findViewById(R.id.edt_login_id);
edt_login_pw = findViewById(R.id.edt_login_pw);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sendRequest();
}
});
}
public void sendRequest() {
//RequestQueue 객체 생성
requestQueue = Volley.newRequestQueue(this); // this==getApplicationContext();
// 서버에 요청할 주소
String url = "http://172.30.1.24:8082/web/andLogin.do";
// 1.객체만들고 요청 주소만듦
// 요청시 필요한 문자열 객체 생성 매개변수 4개(통신방식(get,post),요청url주소, new 리스너(익명클래스)-응답시필요한부분 작성함)
stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>(){
// 응답데이터를 받아오는 곳
// 응답시 데이터 받아오는 곳 - 통신이 잘됐다면 로그캣에서 확인하게출력함
@Override
public void onResponse(String response) {
Log.v("resultValue",response);
Log.v("resultValue", response.length()+""); //응답글자 수 보여짐,
if(response.length() > 0) {
//로그인 성공 0은 로그인실패
try {
JSONObject jsonObject = new JSONObject(response); //response가 JSON타입이 아닐 수 있어서 예외처리 해주기
String id = jsonObject.getString("id");
String pw = jsonObject.getString("pw");
String nick = jsonObject.getString("nick");
String phone = jsonObject.getString("phone");
Log.v("resultValue",id+"/"+pw+"/"+nick+"/"+phone);
//로그인 성공시 LoginSuccess 로 이동,
// MemberVO 만들어서 넘기기
MemberVO vo = new MemberVO(id,pw,nick,phone);
Intent intent = new Intent(getApplicationContext(),LoginSuccess.class);
intent.putExtra("vo",vo);
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
}
}else {
//로그인실패
Toast.makeText(Login.this, "로그인실패", Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
// 서버와의 연동 에러시 출력
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}){
@Override //response를 UTF8로 변경해주는 소스코드
protected Response<String> parseNetworkResponse(NetworkResponse response) {
try {
String utf8String = new String(response.data, "UTF-8");
return Response.success(utf8String, HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
// log error
return Response.error(new ParseError(e));
} catch (Exception e) {
// log error
return Response.error(new ParseError(e));
}
}
// 보낼 데이터를 저장하는 곳 해쉬맵에 저장해서 보냄 - key,value
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
String id = edt_login_id.getText().toString();
String pw = edt_login_pw.getText().toString();
params.put("id", id);
params.put("pw",pw);
// key값은 서버에서 지정한 name과 동일하게
return params;
}
};
stringRequest.setTag("main"); //구분자 어떤클라이언트에서 요청했는지 나타냄 (중요하지않음)
requestQueue.add(stringRequest); //실행 요청 add에 담으면 자동요청
}
}
package com.example.ex220516;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import org.w3c.dom.Text;
public class LoginSuccess extends AppCompatActivity {
private TextView tv_login_id,tv_login_pw,tv_login_nick,tv_login_phone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_success);
tv_login_id = findViewById(R.id.tv_login_id);
tv_login_pw = findViewById(R.id.tv_login_pw);
tv_login_nick = findViewById(R.id.tv_login_nick);
tv_login_phone = findViewById(R.id.tv_login_phone);
Intent intent = getIntent();
MemberVO vo = (MemberVO) intent.getSerializableExtra("vo");
tv_login_id.setText(vo.getId());
tv_login_pw.setText(vo.getPw());
tv_login_nick.setText(vo.getNick());
tv_login_phone.setText(vo.getPhone());
}
}
package com.example.ex220516;
public class LoginCheck {
//로그인 정보를 계속 저장할 변수
public static MemberVO info; //공유해서 씀
}
LoginCheck.info.getId()
LoginCheck.info = null;
package com.example.ex220516;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import org.w3c.dom.Text;
public class LoginSuccess extends AppCompatActivity {
private TextView tv_login_id,tv_login_pw,tv_login_nick,tv_login_phone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_success);
tv_login_id = findViewById(R.id.tv_login_id);
tv_login_pw = findViewById(R.id.tv_login_pw);
tv_login_nick = findViewById(R.id.tv_login_nick);
tv_login_phone = findViewById(R.id.tv_login_phone);
//Intent intent = getIntent();
// MemberVO vo = (MemberVO) intent.getSerializableExtra("vo");
tv_login_id.setText(LoginCheck.info.getId());
tv_login_pw.setText(LoginCheck.info.getPw());
tv_login_nick.setText(LoginCheck.info.getNick());
tv_login_phone.setText(LoginCheck.info.getPhone());
MemberVO info = LoginCheck.info; //로그인정보를 담아 세션처럼 사용할 수있음
// 로그아웃 시
// LoginCheck.info = null;
}
}