Web/Spring 28

2025 SW개발보안 경진대회 소개딩 후기

https://github.com/Binning03/DealChain GitHub - Binning03/DealChain: 2025 SW개발보안 경진대회 소개딩2025 SW개발보안 경진대회 소개딩. Contribute to Binning03/DealChain development by creating an account on GitHub.github.com1. 예선본선에 진출하지 못하면 개발에 참여할 기회조차 없었기에, 중간고사 기간임에도 불구하고 주 2~3회 회의를 진행하며 기획서 작성에 집중했다. 팀 구성 단계부터 백엔드 2명, 프론트엔드 1명, AI 1명으로 역할을 명확히 나누어 모집했기 때문에, 회의 역시 각자의 역할을 중심으로 비교적 순조롭게 진행될 수 있었다.최종적으로 AI 기반 안전 중고거래..

Web/Spring 2025.12.18

[스프링 DB 1편 - 데이터 접근 핵심 원리] 01. JDBC 이해

1. JDBC 이해클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음 과정을 통해서 데이터베이스를 사용한다. 문제는 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 그리고 결과를 응답 받는 방법이 모두 다르다는 점이다.JDBC는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 개발자는 이 표준 인터페이스만 사용해서 개발하면 된다. 그런데 인터페이스만 있다고해서 기능이 동작하지는 않는다. 이 JDBC 인터페이스를 각각의 DB에서 자신의 DB에 맞도록 구현해서 라이브러리로 제공하는데, 이것을 JDBC 드라이버라 한다. 예를 들어서 MySQL DB에 접근 ..

Web/Spring 2025.09.14

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 11. 파일 업로드

1. 서블릿과 파일 업로드멀티파트 형식은 전송 데이터를 하나하나 각각 부분(Part)으로 나누어 전송한다.서블릿이 제공하는 Part는 멀티파트 형식을 편리하게 읽을 수 있는 다양한 메서드를 제공한다.서블릿이 제공하는 Part는 편하기는 하지만, HttpServletRequest를 사용해야 하고, 추가로 파일 부분만 구분하려면 여러 코드를 넣어야 한다.// application.propertiesfile.dir=파일 업로드 경로 설정public class ServletUploadControllerV2 { @Value("${file.dir}") private String fileDir; @GetMapping("/upload") public String newFile() { ..

Web/Spring 2025.08.24

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 10. 스프링 타입 컨버터

1. Converter스프링 타입 변환 적용 예시- 스프링 MVC 요청 파라미터(@RequestParam, @ModelAttribute, @ModelAttribute)- @Value 등으로 YML 정보 읽기- XML에 넣은 스프링 빈 정보를 변환- 뷰를 렌더링 할 때public class IntegerToStringConverter implements Converter { @Override public String convert(Integer source) { log.info("convert source={}", source); return String.valueOf(source); }}public class StringToIntegerConverter imple..

Web/Spring 2025.08.24

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 09. API 예외 처리

1. API 예외 처리HTML 페이지의 경우 오류 페이지만 있으면 대부분의 문제를 해결할 수 있다.그런데 API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다.public class ErrorPageController { @RequestMapping("/error-page/500") public String errorPage500(HttpServletRequest request, HttpServletResponse response) { printErrorInfo(request); return "error-page/500"; } @RequestMapping(value = "/error-page/500", produces..

Web/Spring 2025.08.24

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 08. 예외 처리와 오류 페이지

1. 서블릿 예외 처리public class ServletExController { @GetMapping("/error-ex") public void errorEx() { throw new RuntimeException("예외 발생!"); } @GetMapping("/error-404") public void error404(HttpServletResponse response) throws IOException { response.sendError(404, "404 오류!"); } @GetMapping("/error-400") public void error400(HttpServletResponse response) throws IOEx..

Web/Spring 2025.08.20

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 07. 로그인 처리2 - 필터, 인터셉터

1. 서블릿 필터필터 흐름: HTTP 요청 > WAS > 필터 > 서블릿 > 컨트롤러비 로그인 사용자는 필터에서 적절하지 않은 요청이라 판단하고 서블릿을 호출하지 않는다.필터는 여러 개가 사용될 수 있다. (필터1 > 필터2 > 필터3)// LoginCheckFilterpublic class LoginCheckFilter implements Filter { private static final String[] whitelist = {"/", "/members/add", "/login", "/logout", "/css/*"}; @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain..

Web/Spring 2025.08.18

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 04. 검증1-Validation

1. 검증 직접 처리 @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 Map errors = new HashMap(); //검증 로직 if (!StringUtils.hasText(item.getItemName())) { errors.put("itemName", "상품 이름은 필수입니다."); } if (item.getPrice() == null || item.getPrice() 1000000) { ..

Web/Spring 2025.08.14