일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바
- nodejs
- Java
- 배열
- Mac
- 이클립스
- spring
- Android
- 컬렉션프레임워크
- crud
- Homebrew
- 생활코딩
- Error
- 반복문
- API
- 객체지향
- JDBC
- pyqt
- ddit
- 맥
- Oracle
- jsp
- servlet
- html
- FastAPI
- 대덕인재개발원
- python
- 자바문제
- ibatis
- 단축키
Archives
- Today
- Total
romworld
Spring 22 - 트랜잭션, 예외처리 본문
트랜잭션이란?
*하나의 일처리를 하는 논리적 단위)
데이터베이스를 변경하기 위해 수행되어야할 논리적 단위. 여러개의 sql로 구성됨
원자성, 일관성, 고립성, 지속성
스프링에서 트랜잭션 관리는 ServiceImpl
<root-context.xml>
- xmlns : ns는 namespace의 약자임
- xmlns:tx="http://www.springframework.org/schema/tx"
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
상단에 복붙
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
- beans 태그 안에 코드 작성
- class 에 추가 org.springframework.jdbc.datasource.DataSourceTransactionManager
<!--
트랜잭션 : 데이터베이스를 변경하기 위해 수행되어야할 논리적 단위. 여러개의 sql로 구성됨
원자성, 일관성, 고립성(격리성),지속성(영속성)
-->
<!-- 트랜잭션 관리자의 자바빈 객체를 정의함 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 에너테이션 기반의 트랜잭션 제어를 활성화함 -->
<tx:annotation-driven/>
(전에 만들었던
<CUsServiceImpl.java> 다중 insert 했던 매서드에서)
- @TranSactional 처리를 꼭 해줘야한다.
====> 다중 insert를 할 경우에 꼭 @TranSaction 애너테이션을 사용한다.
예외처리
<web.xml>
web-app 태그 안에 작성
<!-- 예외 처리 : 프로그램이 처리되는 동안 특정한 문제가 일어났을 때 프로세스를 중단하고
예외를 처리하는 것을 말함
톰켓은 기본적으로 기본 오류 페이지를 표시해주는데 페이지에 서버의 내부 정보가
일반인들에게 노출되어 보안 취약점을 노린 공격을 받을 수 있음.
따라서 최대한 정의된 오류 페이지를 표시하여 취약점을 최소화하도록 해야 함
-->
<!-- 상태 코드를 사용한 이동 대상 페이지 설정
400 : 클라이언트의 요청이 잘못된 구문으로 구성됨
404 : 페이지가 없음
500 : JSP에서 예외가 발생함
-->
<error-page>
<error-code>400</error-code>
<location>/error/error400</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/error404</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/error500</location>
</error-page>
error 폴더에 jsp 파일을 만들자
<400.jsp>
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="text-center">
<div class="error mx-auto" data-text="400">400</div>
<p class="lead text-gray-800 mb-5">Bad Request</p>
<p class="text-gray-500 mb-0">요청이 잘못되었습니다.</p>
<a href="/lprod/list">← 처음으로</a>
</div>
<404.jsp>
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="text-center">
<div class="error mx-auto" data-text="404">404</div>
<p class="lead text-gray-800 mb-5">Page Not Found</p>
<p class="text-gray-500 mb-0">페이지가 없습니다</p>
<a href="/lprod/list">← 처음으로</a>
</div>
<500.jsp>
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="text-center">
<div class="error mx-auto" data-text="500">500</div>
<p class="lead text-gray-800 mb-5">Server Error</p>
<p class="text-gray-500 mb-0">서버 내부 오류가 발생했습니다.</p>
<a href="/lprod/list">← 처음으로</a>
</div>
controller - ErrorController
<ErrorController.java>
package kr.or.ddit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/error")
@Controller
public class ErrorController {
//error/error400
@GetMapping("/error400")
public String error400() {
//forwarding
return "error/400";
}
//error/error404
@GetMapping("/error404")
public String error404() {
//forwarding
return "error/404";
}
//error/error500
@GetMapping("/error500")
public String error500() {
//forwarding
return "error/500";
}
}
잘못된 주소로 요청하면 에러페이지가 나온다.
'Spring' 카테고리의 다른 글
Spring 24 - security (테이블을 생성해 실습해보자 DB사용), LEFT OUTER JOIN, 구글 카멜변환, 로그인, 로그아웃 (0) | 2023.02.14 |
---|---|
Spring 23 - security (+ ajax에 csrf값 설정) (0) | 2023.02.13 |
Spring 21 - 구글차트 구현하기 (0) | 2023.02.10 |
Spring 20 - 웹소켓(WebSocket) - 실시간 채팅 (0) | 2023.02.09 |
Spring 19 - EMP 테이블 (직원) 등록, 상세보기 , 수정,삭제,목록, 검색Toast, Merge_Into (0) | 2023.02.07 |
Comments