![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/b8LfpO/btq6Z7d9Grs/ciC7ngpX0znnmbw8jUuuik/img.png)
스프링의 기본적인 실행 구조를 간단한 게시판 서비스를 구성하며 순차적으로 알아보자. 1. 우선 프로젝트를 만들고 나서 요청에 따른 controller를 자동 호출하기 위한 DispatcherServlet을 web.xml 문서에 추가해줘야 한다. ◎WEB-INF.web.xml spring_simple_board board org.springframework.web.servlet.DispatcherServlet board *.do index.jsp 이때, servlet의 이름은 dispatcher가 자동으로 찾기 때문에 위와 같이 이름을 작성했다면, servlet.xml은 반드시 board-servlet.xml 과 같이 생성해야 한다. 2. board-servlet.xml 파일을 생성하고, 해당 문서가 Ha..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/KUe6H/btq6Sxk3Z17/7xMyxCInJ7nrrfG4PrcE7K/img.png)
JNDI(Java Naming Directory Interface)로 DB 연결의 정보를 Context.xml에 저장하여 이름으로 DB를 검색하여 사용할 수 있는 기법이다. 이 방법을 사용하기 위해서는 우선 MATA-INF 내부에 Context.xml을 새로 생성해야한다. 이후 생성한 xml문서를 다음과 같이 작성한다. 각 속성의 역할은 다음과 같다. 이후 DAO쪽에서 Context.xml을 사용할 수 있도록 작성해야한다. Context.xml을 이용한 Connection은 다음과 같이 구성할 수 있다. package com.choonham.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSe..
요청 사항에 대한 Controller를 반환하기 위한 HandlerMapping을 수행하기 위해서는 해당 역할을 수행하는 xml문서를 따로 작성해야 한다. 그 방법은 다음과 같다. 우선 간단한 게시판 예제를 따라 진행할 것이기 때문에, board-servlet.xml 으로 xml 문서를 새로 생성한다. HandlerMapping은 Beans로 정보를 전달하면서 실행되기 때문에 반드시 전체 내용은 beans 태그로 묶어야 한다. 이후 beans 내부에 spring 을 사용하기 위한 패키지 주소를 작성해준다. 또한 작업에 필요한 객체 생성 및 클래스 등록도 마찬가지로 beans를 사용하여 작성한다. 클래스 등록 방법은 다음과 같다. 1. 해당 xml문서에서 사용할 클래스(dao) 등록 ============..
요청을 처리할 DispatcherServlet을 사용하기 위해서는 우선적으로 web.xml 문서에 Servlet 파일들을 등록해야 한다. 방법은 다음과 같다. spring_simple_board 서블릿 이름 등록할 서블릿 클래스의 전체 경로 및 클래스명 서블릿 이름 웹 주소줄을 통한 요청 index.html web.xml 문서를 건들기 때문에, 위 문서 수정에 조금이라도 오류가 있다면, 무조건 404 에러가 나오니 많은 주의가 필요하다. 또한 동일한 Servlet-name이 맵핑되거나 등록될 경우 에러가 난다. 스프링이 제공해주는 DispatcherServlet을 사용하려면, Servlet Class부분을 다음과 같이 수정해야 한다. org.springframework.web.servlet.Dispatc..
프로젝트를 톰캣 서버를 사용하여 run할 때, 기본 경로는 web.xml내에 welcome file로 지정되어 있는 파일이다. 지금까지는 그냥 index.jsp나 index.html 을 생성해서 default 값을 사용했다. 하지만, mvc model2 패턴을 사용하여 프로젝트를 구성한다면 index.jsp 또한 ActionFactory를 사용하여 마찬가지로 index.html에서 Controller에게 요청하여 index.jsp 로 이동하게끔 구성하는 방법도 있다. 이 방법을 사용하면, 물론 설계 초반에 좀 더 손이 가겠지만, index.jsp 파일을 url 직접적으로 노출시키지 않고 또한 header나 footer를 고정시킨 상태에서 그 내부 컨텐츠를 좀 더 쉽게 변경할 수 있다는 장점이 있다. 방법..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/0tuu2/btq6NvfbIKw/SmQakLcRwJtqYZpCk732g1/img.png)
Final Project 를 함께 제작할 팀을 구성했기 때문에, 함께 협업을 시작하기 전에 GitHub의 사용법을 정리할 필요가 있을 거 같다. 기초적인 회원 가입이나 설치는 따로 설명이 필요한 부분이 아닐 거 같아서 생략하도록 하겠다. 참고로 설치는 https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%84%A4%EC%B9%98 Git - Git 설치 이 책은 Git 2.0.0 버전을 기준으로 썼다. 대부분의 명령어는 그 이전 버전에서도 잘 동작하지만, 몇 가지 기능은 아예 없거나 미묘하게 다를 수 있다. Git의 하위 호환성은 정말 훌륭하기 때문에 2.0 git-scm.com 에서 진행할 수 있다. 바로 기초적인 개념 ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/cELsWF/btq6KQLB8rT/xSB9z9TuIVkwyvGE76VGb0/img.png)
문제: #search 버튼 클릭시 ajaxCallTest4.jsp url로 ajax를 호출하여연관검색단어를 조회하여 #str에 출력. 단, ajax에 배열 형태를 넘겨야 하기 때문에 {'키[]' : 배열객체} 형식으로 데이터를 전달해야한다. ◎ 04_ajaxTest4.html 연관검색단어를 조회 취미 축구 수영 게임 연관단어검색 ▶ 연관단어 ◎ search_words.js /** * search_words.js */ $(document).ready(function() { $('#search').click(function() { var input = $('#types').val(); var request = $.ajax({ url: "ajaxCallTest4.jsp", method: "POST", data..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/cMRR6S/btq6HRYpOJs/kGD0iMjPeBAhK0jO5rwbkK/img.png)
ajax 이해를 위한 3번째 예제이다. 버튼 클릭시, 선택창에서 선택된 숫자만큼의 크기를 갖는 배열(List)을 반환하여 #myName에 출력하는 기본적인 문제이다. (JS 폴더 내에 jQuery 코드를 따로 작성하여 html 에서 로드하는 방식으로 풀이하였다.) ◎ 03_ajaxTest3.html 1 2 3 4 5 배열크기 전송 ◎ ajax_array_size.js /** * ajax_array_size.js */ $(document).ready(function() { $('#call').click(function() { var input = $('#num').val(); console.log(input); var request = $.ajax({ url: "ajaxCallTest3.jsp", meth..
jQuery를 활용한 비동기 통신은 기본적으로 다음의 구조로 이뤄진다. 1. jQuery 내부에서 요청할 데이터를 생성하고 전송 //특정 이벤트, 트리거의 내부에 request 객체 선언 var request = $.ajax({ url: "전송할 주소", // 호출(요청) 대상 method: "POST", // 전송 방식 data: { // jsp가 읽어낼 파라미터명: 전송값 //데이터 맵핑 }, dataType: "json" // 응답받을 타입 }); // 응답에 성공했을 경우 request.done(function(data) { console.log(data); alert(data.result); }); // 응답에 실패했을 경우 request.fail(function(jqXHR, textStatus..
- react
- 맛집
- redux
- 이탈리안 레스토랑
- Promise
- 인천 구월동 맛집
- await
- 파니노구스토
- Async
- redux-thunk
- AsyncStorage
- javascript
- react-native
- 인천 구월동 이탈리안 맛집
- 정보보안기사 #실기 #정리
- Total
- Today
- Yesterday