Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 과정평가형
- jsp
- controller
- Oracle
- JVM
- select
- javascript
- was
- 태그
- mybatis
- jQuery
- CSS
- TO_DATE
- 암호화
- input
- web.xml
- eGov
- 오류
- spring
- array
- 개념
- Java
- POI
- html
- json
- 함수
- eGovFramework
- Ajax
- sql
- 정의
Archives
- Today
- Total
web developer
[java] Form 전송 시 트랜잭션 예외 발생에 따른 PrintWriter를 통한 업데이트 실패 알림 및 페이지 이동 처리 본문
Language/Java
[java] Form 전송 시 트랜잭션 예외 발생에 따른 PrintWriter를 통한 업데이트 실패 알림 및 페이지 이동 처리
trueman 2024. 10. 29. 14:36728x90
728x90
javaScript
$("form[name=formData]").attr("method", "post");
$("form[name=formData]").submit();
serviceImpl.java
serviceImpl.java 에서 update가 실패한 경우 throw new IllegalArgumentException 시킨다.
// 데이터베이스 업데이트 메서드 (예시)
@Override
@Transactional(rollbackFor = Exception.class)
private int updateDatabase(DataType data) {
int flag = 0;
try {
...
if(list!=null && list.size()>0) {
for(int=0; i<list.size(); i++) {
data = list.get(i);
// 데이터베이스 업데이트 로직
int update_status = 0;
if(list_count != null) {
update_status = dao.update(data);
}
if(update_status == 0) {
throw new IllegalArgumentException("the update has failed as impl.java : " + data.getId());
}
}
}
...
flag = 1;
}catch() {
...
}
// 업데이트 성공 시 1 반환, 실패 시 0 반환
return flag;
}
Impl 에서 updateDatabase 메서드가 update가 실패한 경우 controller의 catch 블록으로 들어가게 된다.
Controller.java
@Controller
public class MyController {
@PostMapping("/update")
public void updateData(
@ModelAttribute DataType data,
DataVO dataVO,
HttpServletResponse response
) {
PrintWriter writer = null;
try {
// wrtier
response.setCharacterEncoding("EUC-KR");
writer = response.getWriter();
int updateResult = updateDatabase(data); // 데이터베이스 업데이트 시도
String result = (updateResult > 0) ? "Y" : "N"; // 업데이트 성공 여부에 따라 결과 설정
if(result.equals("Y")) {
writer.println("<script>alert('the update has succeed'); window.location='/menu/data/val.do?id="+dataVO.getId()+"'<script>");
}
// 잘못된 데이터 예외 발생 시
} catch (IllegalArgumentException e) {
writer.println("<script>alert('the update has failed'); window.location='/menu/data/val.do?id="+dataVO.getId()+"'<script>");
// 기타 예외 발생 시
} catch (Exception e) {
writer.println("<script>alert('the update has failed'); window.location='/menu/data/val.do?id="+dataVO.getId()+"'<script>");
} finally {
if(writer != null) {
writer.flush();
writer.close();
}
}
}
HTML 폼에서 전송된 데이터를 @ModelAttribute를 통해 컨트롤러 메서드의 매개변수로 받아올 수 있습니다.
이 경우 폼에서 전송되는 데이터는 자동으로 DataType 객체로 매핑됩니다.
- @ModelAttribute는 HTML 폼에서 전송된 데이터를 객체에 매핑해줍니다.
- @RequestBody는 JSON 데이터를 처리할 때 사용하고, 폼 데이터를 받는 경우에는 사용할 수 없습니다.
728x90
728x90
'Language > Java' 카테고리의 다른 글
[java] 로그인 시 HttpSession에 저장한 사용자 정보, JSP EL로 어디서나 접근하기 (0) | 2024.11.22 |
---|---|
[java] AJAX 통신에서 Impl의 트랜잭션 예외 발생 시 예외 처리와 롤백 처리 (2) | 2024.09.24 |
[java] try-catch를 이용한 직접 예외 처리와 @ControllerAdvice를 통한 공통 예외 처리 (1) | 2024.09.19 |
[java] 세션(Session)이란? (0) | 2024.09.11 |
[java] JSON 데이터 파싱 (1) | 2024.09.10 |