티스토리 뷰
1. 참고용 소스를 준비한다
2. 새 Spring MVC project 생성
Spring Legacy Project -> Spring MVC project
프로젝트를 생성했다면 Java Build Path를 꼭 확인해보자:
- Library: Tomcat 추가 + jre버전 변경/확인하기
다음과 같이 설정하면 된다 (나중에 heroku에 할 때 heroku 버전인 1.8로 맞춰주기 위해 나중에 설정을 바꿔야 될 수도 있다..)
여기까지 해보고 프로젝트 이름 우클릭 -> run as 기본 home.jsp 페이지가 잘 나오는지 확인한다
혹시 다음과 같은 에러 창이 나온다면
프로젝트 이름 우클릭 -> properties에 들어가서
Java Build Path와 Project Facets에서 JRE 버전이 일치하는 지 확인한다(나의 경우에는 버전이 일치하지 않아서 이런 에러가 떴던 것 같다)
버전이 동일해지도록 수정한 후 다시 run 해보면 정상적으로 나오는 것을 확인 할 수 있을 것이다.
너무 바로 실행하면 또 같은 에러가 뜰 수 있으니, 그래도 당황하지 말고 조금만 기다렸다가 다시 실행하도록 하자.
3. web.xml에 UTF-8 encoding filter 추가
한글 처리를 위한 설정을 추가한다.
web.xml 파일에 다음 코드를 추가하면 된다.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class> org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4. 라이브러리에 Dependency 추가
pom.xml 파일에 (1)Mysql-connector, (2)Spring-jdbc dependency 를 추가한다
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
***주의할 점: spring-jdbc는 우리가 사용하는 버전과 동일하도록 ${org.springframework-version} 이 부분으로 수정해준다.
라이브러리를 찾는 과정이 궁금하다면 게시물의 4단계 내용을 참고하자: carrot62.tistory.com/86
JSP CRUD 프로젝트 제작하기
CRUD 게시판을 제작하는 과정 다른 웹 페이지를 만들더라도 CRUD가 가장 기본이 되는 부분이기 때문에 CRUD 게시판을 만드는 절차에 따라 만들다 보면 웬만한 페이지는 다 구현할 수 있다. 그러니
carrot62.tistory.com
5. Bean 등록
root-context.xml 파일에 다음 부분을 추가한다
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://로컬호스트/DB이름?useSSL=false"/>
<property name="username" value="DB사용자ID"/>
<property name="password" value="DB비밀번호"/>
</bean>
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
추가하고 나서 혹시나 빨간 줄이 뜨면서,
"The fully qualified name of the bean's class, except if it serves only as a parent definition for
child bean definitions." 에러가 뜨면
오타없이 잘 입력했는지 확인하도록 한다. 마우스를 빨간색 선이 나타나는 곳에 갔다 놓고 우클릭 해서 Quickfix으로 수정하는 방법도 있다.
6. BoardVO class 생성
다음 변수들을 추가한 Getters and setters를 생성한다.
private int seq;
private String category;
private String title;
private String writer;
private String content;
private Date regdate;
private int cnt;
7. BoardDAO 생성
@Repository와 @Autowired annotation을 추가한다
8. BoardServiceInterface 생성
9. BoardServiceImpl class 생성
package com.sp.anot;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sp.anot.board.BoardVO;
import com.sp.anot.dao.BoardDao;
@Service
public class BoardServiceImpl implements BoardService{
@Autowired
BoardDao boardDAO;
@Override
public int insertBoard(BoardVO vo) {
return boardDAO.insertBoard(vo);
}
@Override
public int deleteBoard(int seq) {
return boardDAO.deleteBoard(seq);
}
@Override
public int updateBoard(BoardVO vo){
return boardDAO.updateBoard(vo);
}
@Override
public BoardVO getBoard(int seq){
return boardDAO.getBoard(seq);
}
@Override
public List<BoardVO> getBoardList(){
return boardDAO.getBoardList();
}
}
10. BoardController class 생성
package com.sp.anot;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.sp.anot.board.BoardVO;
@Controller
@RequestMapping(value="/board")
public class BoardController {
@Autowired
BoardService boardService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String boardlist(Model model) {
model.addAttribute("list", boardService.getBoardList());
return "list";
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String addPost() {
return "addpostform";
}
@RequestMapping(value="/addok", method=RequestMethod.POST)
public String addPostOk(BoardVO vo) {
if(boardService.insertBoard(vo) == 0)
System.out.println("데이터 추가 실패 ");
else
System.out.println("데이터 추가 성공!!!");
return "redirect:list";
}
@RequestMapping(value = "/editform/{id}", method = RequestMethod.GET)
public String editPost(@PathVariable("id") int id, Model model) {
BoardVO boardVO = boardService.getBoard(id);
model.addAttribute("u", boardVO);
return "editform";
}
@RequestMapping(value = "/editok", method = RequestMethod.POST)
public String editPostOk(BoardVO vo) {
if(boardService.updateBoard(vo) == 0)
System.out.println("데이터 수정 실패 ");
else
System.out.println("데이터 수정 성공!!!");
return "redirect:list";
}
@RequestMapping(value = "/deleteok/{id}", method = RequestMethod.GET)
public String deletePostOk(@PathVariable("id") int id) {
if(boardService.deleteBoard(id) == 0)
System.out.println("데이터 삭제 실패 ");
else
System.out.println("데이터 삭제 성공!!!");
return "redirect:../list";
}
}
11. JSP page 생성
다음 3가지 jsp 파일만 만들면 된다:
- listform.jsp
- addform.jsp
- editform.jsp
addform과 editform 파일의 경우 form:form 태그를 사용하기 때문에 spring mvc form tag 라이브러리를 꼭 추가해주도록 한다
12. Tomcat을 이용한 로컬 테스트
/board/list : 목록이 정상적으로 출력되는 것을 확인
/board/add : 추가 기능이 정상적으로 구동되는 것을 확인
/board/editform/{id} : 게시물 수정 기능이 정상적으로 구동되는 것을 확인
삭제 기능이 정상적으로 구동되는 것을 확인
[EXTRA TIP] 에러 처리 방법
[에러] Server Tomcat v9.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
runtime 시간 90초 정도로 늘려주면 된다.
[에러] HTTP 상태 404 - 찾을 수 없음
Boardcontroller에 @RequestMapping부분에 다음 부분을 추가하지 않아서 에러가 났었다.
맵핑 될 url의 모양을 다음처럼 목록으로 미리 정리해서 혹시 HTTP404 에러가 나면 이 부분을 검토하도록 하자.
'2020_실전프로젝트1' 카테고리의 다른 글
MyBatis CRUD 프로젝트 (1) | 2020.12.10 |
---|---|
MVC Annotations (1) | 2020.11.28 |
Spring MVC framework 개념 정리 (0) | 2020.11.22 |
JSP CRUD 프로젝트 제작하기 #3 (0) | 2020.11.01 |
lab8(2020/10/20) (0) | 2020.10.20 |
- Total
- Today
- Yesterday
- STS4
- DB4free
- HTML #id #iframe
- links lists tables display
- HTML #class
- UserBean
- HTML #Tables
- annotation
- jsp
- javascript #datatype
- fontstyle
- meta #link #script #base #HTML
- JSP_CRUD
- text_shadow
- HTML_Forms
- html
- HTML #CSS
- HTML_Formatting
- HTML #media #video #YouTube
- css
- Block_element #inline_element
- Mavenproject
- HTML #Headings #Paragraph #Styles
- 인용문 #주석
- HTML #Canvas #SVG
- DynamicWebProject
- JSP환경구축
- 2020Camp
- head #title #style
- box_model
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |