안녕하세요.^^
새로 공부하고 있는 사람입니다.
서버쪽을 해 본적이 없어서 혼자서 삽질하다 질문드립니다. ㅜㅜ
안드로이드 앱에서 volley를 이용해서 회원가입 데이터를 Map<String,String> 형식으로 담아서 서버(Servlet)로 보내는데 서버쪽 Servlet 파일에서 데이터를 어떻게 받아야 하나요?
request.getParameter("userID") 형식으로는 읽을 수가 없어서 헤메는 중입니다.
Servlet 쪽에서 데이터를 읽는 방법을 좀 가르쳐 주시면 정말 감사하겠습니다. ^^;;
[[ 서버 - JoinProc.java ]]
public class JoinProc extends HttpServlet {
.
.
.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//커넥션풀을 가져오기 위한 세팅
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/java");
conn = ds.getConnection();
System.out.println("커넥션 풀로부터 커넥션 객체를 획득.");
// 넘어온 데이터를 읽어서 변수에 담는다.
String userID = request.getParameter("userID");
String userPassword = request.getParameter("userPassword");
String userEmail = request.getParameter("userEmail");
/*
System.out.println("입력받은 ID : "+userID); <== 여기서 null 이 나옵니다. ㅠㅠ
request.getParameter 형식으로는 데이터를 읽을 수 없는거 같은데
넘어온 데이터들을 어떻게 읽어야 하는지요?
*/
String sql = "insert into user (userID,userPassword,userEmail) values (?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, userID);
ps.setString(2, userPassword);
ps.setString(3, userEmail);
int count = ps.executeUpdate();
ps.close();
//반납
conn.close();
System.out.println("커넥션 풀로부터 커넥션 객체를 반납.");
if(count > 0) {// 회원가입 성공
}
else {//로그인 실패
}
} catch (Exception e) {
System.out.println("커넥션 풀로부터 커넥션 객체 획득 오류 :"+ e);
e.printStackTrace();
}
}
}
[[클라이언트 ]]
RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
private String userId;
private String password;
private String userEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
final EditText idText = (EditText)findViewById(R.id.idText);
final EditText passwordText = (EditText) findViewById(R.id.passwordText);
final EditText emailText = (EditText) findViewById(R.id.emailText);
Button registerButton = (Button) findViewById(R.id.registerButton);
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userID = idText.getText().toString();
String userPassword = passwordText.getText().toString();
String userEmail = emailText.getText().toString();
Response.Listener<String> responseListner =
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jsonResponse = new JSONObject();
boolean success = jsonResponse.getBoolean("success");
if(success){
AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
dialog = builder.setMessage("회원 등록에 성공했습니다.")
.setPositiveButton("확인",null)
.create();
dialog.show();
finish();
}
else{
AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
dialog = builder.setMessage("회원등록에 실패했습니다.")
.setNegativeButton("확인",null)
.create();
dialog.show();
}
}
catch (Exception e){
e.printStackTrace();
}
}
};
RegisterRequest registerRequest = new RegisterRequest
(userID,userPassword,userEmail, responseListner);
RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
queue.add(registerRequest);
}
});
}
}
RegisterRequest .java
public class RegisterRequest extends StringRequest{
final static private String URL ="http://10.0.2.2:8080/PushMessagingServer/joinProc";
private Map<String, String> paramaters;
public RegisterRequest(String userID, String userPassword,String userEmail, Response.Listener<String> responseListener){
super(Method.POST, URL, responseListener, null );
paramaters = new HashMap<>();
paramaters.put("userID", userID);
paramaters.put("userPassword", userPassword);
paramaters.put("userEmail", userEmail);
}
public Map<String, String> getParamaters() {
return paramaters;
}
}