doDelete 완성
@Override
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doDelete() 호출됨");
addCount();
request.setCharacterEncoding("utf-8"); // 한글처리
String userName = request.getParameter("userName");
userDao.delete(userName);
UserResult userResult = new UserResult();
userResult.setSuccess(true);
String strJson = gson.toJson(userResult);
sendResponse(strJson, response);
}
REST API 서버에서 작동하는 SQL메소드
public int registerUSer(User user) { // 결과가 성공이면 1, 실패면 0이하 (에러나면 - 출력) RETURN
String INSERT_USER_SQL = "INSERT INTO users(firstName, lastName, userName, password) "
+ "VALUES (?, ?, ?, ?)";
int result = 0;
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = JDBCUtils.getConnection();
pstmt = conn.prepareStatement(INSERT_USER_SQL);
pstmt.setString(1, user.getFirstName());
pstmt.setString(2, user.getLastName());
pstmt.setString(3, user.getUserName());
pstmt.setString(4, user.getPassword()); // pstmt 완성
// 결과 실행의 갯수를 result에 저장 = 1 실패면 0
result = pstmt.executeUpdate(); // pstmt 실행, 결과가 없는 Update, Delete, Drop, Insert 등은 executeUpdate() 사용
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(conn, pstmt);
}
return result;
}
public User getUserByUserName(String userName) {
User user = null;
String sql = "SELECT * FROM users WHERE userName = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setFirstName(rs.getString("firstName"));
user.setLastName(rs.getString("lastName"));
user.setUserName(rs.getString("userName"));
user.setPassword(rs.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(conn, pstmt, rs);
}
return user;
}
public List<User> getAllUsers() {
List<User> userList = new ArrayList<User>();
String sql = "SELECT * FROM users ORDER BY userName ASC";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
User user = new User();
user.setFirstName(rs.getString("firstName"));
user.setLastName(rs.getString("lastName"));
user.setUserName(rs.getString("userName"));
user.setPassword(rs.getString("password"));
userList.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(conn, pstmt);
}
return userList;
} // getAllUsers
public void update(User user) {
String sql = "";
sql += " UPDATE users ";
sql += " SET firstName = ?, lastName = ? ";
sql += " WHERE userName = ? ";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getFirstName());
pstmt.setString(2, user.getLastName());
pstmt.setString(3, user.getUserName());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(conn, pstmt);
}
}
public void delete(String userName) {
String sql = "DELETE FROM users WHERE userName = ?";
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = JDBCUtils.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(conn, pstmt);
}
} // delete
-- REST API 서버 만들기 --
https://mvnrepository.com/ 에서 원하는 라이브러리 검색 후 maven탭에서 복사
기존에 만든 Bean파일들을 프로젝트에 가져옴
public class EX1 {
public static void main(String[] args) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:8090/")
.addConverterFactory(GsonConverterFactory.create())
.build();
UserService userService = retrofit.create(UserService.class);
// 네트워크로 요청할 정보객체
Call<UserOneResult> call = userService.getUser("one", "hong");
call.enqueue(new Callback<UserOneResult>() {
// 익명메소드
// 네트워크 요청을 보냄, 서버로부터 응답이 오면 Callback객체의 onResponse 또는 onFailure가 호출됨
public void onResponse(Call<UserOneResult> call, Response<UserOneResult> response) {
// isSuccessful 메소드로 200번대 정상 응답이 아닌 경우 (응답코드가 300, 400, 500번대 인 경우)
if (response.isSuccessful() == false) {
System.out.println("onResponse 에러");
return;
}
// isSuccessful 메소드로 200번대 정상 응답이 아닌 경우
System.out.println("onResponse 성공");
UserOneResult userOneResult = response.body();
System.out.println("응답결과 :" + userOneResult.toString());
}
public void onFailure(Call<UserOneResult> call, Throwable throwable) {
System.out.println("onFailure 에러 : " + throwable.getMessage());
}
});
}// main
// Retrofit 객체의 create 메소드에 의해 자동으로 구현 객체를 만들 수 있음
// 구현된 서비스 객체의 용도는 GET, POST, PUT, DELETE 요청을 담당하는 메소드를 가짐
public interface UserService {
@GET("todo/api/user/") // 필수 Parameter가 있다면 같이 넣어줘야함
Call<UserOneResult> getUser(
// 동적으로 변경해야하는 Parameter는 @Query 어노테이션을 이용해서 메소드를 호출 할 때 마다 값을 넘겨받는다
@Query("category") String category,
@Query("userName") String userName // @Query->변수명
);
// (@Query("category") = String category) = (category = 값) parameter 받을 떄 주소에 넣는 것 처럼
// @GET("TODO/api/user/")
// Call<UserOneResult> getUser(@QueryMap Map<String, String> options);
@GET("todo/api/user/")
Call<UserListResult> getUsers(@Query("category") String category);
@POST("todo/api/user/")
Call<UserResult> createUser(@Body User user); // @Body->문자열을 json타입으로 변환시켜서 전송
@PUT("todo/api/user/")
Call<UserResult> updateUser(@Body User user);
@DELETE("todo/api/user/")
Call<UserResult> deleteUser(@Query("userName") String userName);
}