반응형

to do list

 

1. 임시로 테이블 집어 넣기

2. jsp 화면 만들기

3. controller 만들기

4. 매퍼에 쿼리 추가하기

5. dao 만들기

 

1. 임시로 테이블 집어 넣기

 

2. 출력 page를 생성하겠습니다.

WEB-INF > views 에 board라는 폴더를 하나 생성하고 거기에 list.jsp를 생성합니다.

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시물 목록</title>
</head>
<body>

<table>
	<thead>
		<tr>
			<th>번호</th>
			<th>제목</th>
			<th>작성일</th>
			<th>작성자</th>
			<th>조회수</th>
		</tr>
	</thead>
		
	<tbody>
		<c:forEach items="${list}" var="list">
			<tr>
				<td>${list.bno}</td>
				<td>${list.title}</td>
				<td>${list.regDate}</td>
				<td>${list.writer}</td>
				<td>${list.viewCnt}</td>
			</tr>
		</c:forEach>
		
	</tbody>
</table>
</body>
</html>

3. 컨트롤러를 만들어 주겠습니다.

package com.board.controller;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.board.domain.BoardVO;
import com.board.service.BoardService;

@Controller
@RequestMapping("/board/*")
public class BoardController {

	@Inject
	BoardService service;
	
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public void getList(Model model) throws Exception {
	
		List<BoardVO> list = null;
		list = service.list();
		
		model.addAttribute("list", list);
	}

}

4. BoardDAO 인터페이스와 BoardDAOImpl 클래스를 만들어 주겠습니다.

package com.board.dao;

import java.util.List;

import com.board.domain.BoardVO;

public interface BoardDAO {
	
		public List<BoardVO> list() throws Exception;
}
package com.board.dao;

import java.util.List;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.board.domain.BoardVO;

// DAO에 특화된 어노테이션. @Component 어노테이션을 써도 상관 없지만, DAO 클래스들에 @Repository 어노테이션을 사용함으로써
// @Component 어노테이션이 가진 특성과 함께, DAO의 메소드에서 발생할 수 있는 unchecked exception들을 스프링의 DataAccessException으로
// 처리할 수 있는 장점 또한 갖는다.
@Repository
public class BoardDAOImpl implements BoardDAO {
	
//	name으로 DI를 가능케 한다. 자바에서 지원하는 어노테이션이며 프레임워크에 종속적이지 않아 상사용해도 좋다.
//	타입으로 연결한다.
	@Inject
	private SqlSession sql;
	
	private static String namespace = "com.board.mappers.board";
	
	@Override
	public List<BoardVO> list() throws Exception {
		// TODO Auto-generated method stub
		return sql.selectList(namespace + ".list");
	}

}

5. BoardService 인터페이스와 BoardServiceImpl 클래스를 만들어 주겠습니다.

package com.board.service;

import java.util.List;

import com.board.domain.BoardVO;

public interface BoardService {

	public List<BoardVO> list() throws Exception;
}
package com.board.service;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.board.dao.BoardDAO;
import com.board.domain.BoardVO;

@Service
public class BoardServiceImpl implements BoardService {
	
	@Inject
	private BoardDAO dao;
	
	@Override
	public List<BoardVO> list() throws Exception {
		// TODO Auto-generated method stub
		return dao.list();
	}

}

 

6. roote-context.xml에 base-package를 설정하겠습니다. 설정하지 않으면 못찾아요.

<?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:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
		<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
			<property name="driverClassName" value="org.mariadb.jdbc.Driver" />
			<property name="url" value="jdbc:mariadb://127.0.0.1:3310/board" />
			<property name="username" value="soulwine" />
			<property name="password" value="1111" />
		</bean>
		
		<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
			<property name="dataSource" ref="dataSource" />
			<property name="configLocation" value="classpath:/mybatis-config.xml" />
			<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml" />
		</bean>
		
		<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
 		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
		</bean>
		
		<context:component-scan base-package="com.board.domain" />
		<context:component-scan base-package="com.board.dao" />
		<context:component-scan base-package="com.board.service" />
</beans>
반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

to do list

1. VO 만들기

2. pom.xml에 스프링과 마리아 DB(MySql)의 연동할 수 있도록 추가해주기

3. root-context.xml에 bean 추가하기

4. 마이바티스 설정해주기

 

 

1. VO 만들기.

  우선 src/main/java에 com.board.domain이라는 패키지를 만들어 주고 그 안에 BoardVO 클래스를 만들어 주겠습니다.

  각각의 변수를 만들어주고 getter과 setter을 만들어 줍니다.

 

package com.board.domain;

import java.util.Date;

public class BoardVO {
	
	private int bno;
	private String title;
	private String content;
	private String writer;
	private Date regDate;
	private int viewCnt;
	
	public int getBno() {
		return bno;
	}
	public void setBno(int bno) {
		this.bno = bno;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public Date getRegDate() {
		return regDate;
	}
	public void setRegDate(Date regDate) {
		this.regDate = regDate;
	}
	public int getViewCnt() {
		return viewCnt;
	}
	public void setViewCnt(int viewCnt) {
		this.viewCnt = viewCnt;
	}
	
	
}

 

2. pom.xml에 spring과 DB가 연동될 수 있도록 maven 추가하기

여기 추가해준 maven은 스프링과 마리아 DB의 연동을 할 수 있게 해줍니다.

		<!-- maria DB -->       
		<dependency>
			<groupId>org.mariadb.jdbc</groupId>
			<artifactId>mariadb-java-client</artifactId>
			<version>2.3.0</version>
		</dependency>
		
		<!-- org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.1</version>
		</dependency>
		
		<!-- mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.0</version>
		</dependency>
		
		<!-- spring-jdbc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		

 

3. root-context.xml로 이동해서 오른쪽에 Namespace탭을 클릭 후 context와 jdbc, mybatis-spring을 체크해줍니다.

클릭해 준 후 Source로 이동하여 bean들을 추가해 줍니다.

<?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:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
		<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
			<property name="driverClassName" value="org.mariadb.jdbc.Driver" />
			<property name="url" value="jdbc:mariadb://127.0.0.1:3310" />
			<property name="username" value="soulwine" />
			<property name="password" value="1111" />
		</bean>
		
		<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
			<property name="dataSource" ref="dataSource" />
			<property name="configLocation" value="classpath:/mybatis-config.xml" />
			<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml" />
		</bean>
		
		<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
 		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
		</bean>
</beans>

 후에 src/main/resources에서 new - other - xml을 검색하여 mybatis-config.xml을 만들어 줍니다.

입력해 줍니다.

 

이제는 매퍼(mapper)을 만들어 주겠습니다.

src/main/resource에서 마우스 우클릭 new - Folder를 만들어 주겠습니다.

folder를 만들어주고 그 안에 new- other 을 하여 xml파일을 선택하고 boardMapper.xml파일을 만들어 주겠습니다.

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.board.mappers.board">

</mapper>

이때, 네임스페이스는 각각의 매퍼를 구분하는 고유명이 됩니다.

 

이제 실행해 보세요.

root-context.xml에 등록한 빈(bean)에 맞는 마이바티스 설정 파일과 매퍼 폴더가 없는 경우, 즉 mybatis-config.xml과 mappers 폴더가 없는 경우 에러가 발생하며 프로젝트가 실행되지 않습니다.

 

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

to do list

1. 마리아db 설치할때 같이 설치된 Heidi를 실행한 후 루트 계정으로 접속을 합니다.

2. 새로운 계정과 데이터 베이스를 생성하고 부여합니다.

 

 

1. 루트 계정 접속 후 새로운 계정 만들기

계정을 생성하고 DB를 생성하고 soulwine이라는 계정에 board DB에 권한을 주었습니다.

commit 을 하고 DB가 만들어 졌는지 확인해 보겠습니다.

 

이제 계정을 만들어 주었으니 Heidi에 가서 파일 -> 세션 관리자로 들어가 봅니다.

아래에 신규를 클릭하고 아이디와 비밀번호를 적고 저장을 누릅니다.

그리고 세션 이름은 게시판을 만들거기 때문에 board로 수정해 주었습니다. 열기를 눌러주세요.

현재 만든 계정에서 DB를 사용하기 위해선 use 라는 명령어를 사용하며 use board;를 하여 board라는 데이터베이스를 사용하도록 하겠습니다.

이제 게시판을 위한 테이블을 생성해 보겠습니다.

 

위의 컬럼명은 아래와 같습니다.

 

bno : 게시물의 고유번호
title : 글의 제목
content : 게시물 내용
writer : 작성자
regDate : 작성일
viewCnt: 조회수

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

이클립스를 실행 하시고 new - project 를 하셔서 spring을 검색하셔서 Spring Legacy Project로 만듭니다.

Next를 하고 저는 프로젝트의 이름은 basicBoard로 하고 템플릿은 Spring MVC Project를 하였습니다.

Next

패키지 명은 com.board.controller로 하였습니다.

그 후에 finish를 해줍니다.

 

상단 메뉴에서 Window에 preferences를 클릭하고

general목록에서 workspace를 확인해 줍니다.

이후에는

상단의 Project에서 properties에서 

Text file encoding을 확인해 줍니다.

이제 project facets 로 들어가서 JAVA의 버전을 1.8로 바꿔주고 APPLY를 하겠습니다.

아래와 같이 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>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

이제 아래의 views에 home.jsp 에 페이지 인코딩을 해주겠습니다.

현재 페이지의 인코딩을 UTF-8로 변경하는 코드입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

이제 pom.xml을 열고 pom.xml에서 Java의 버전이 1.6이고 프레임 워크의 버전이 3.1.1. 로 되어 있습니다.

Java의 버전을 1.8로 바꾸고 Spring Framework의 버전을 4.3.8 버전으로 변경 하겠습니다.

그 후에 프로젝트를 실행해 보면 

아래와 같은 화면이 나타나게 됩니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,