일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 큐
- ip란
- sql developer logon denied
- ClassNotFoundException
- spring mvc 기초
- Jpa기초
- SQLD교재추천
- 비전공개발자
- 파이썬
- 개발자면접질문
- java문법
- kh정보교육원 후기
- 예제
- 비전공 국비학원
- ORA-91917
- 국비학원 후기
- 그리디알고리즘
- 코딩테스트
- 국비학원 추천
- 최신java
- 국비학원
- it국비학원 후기
- 비전공 개발자
- 소수점출력
- oracle error
- 비전공개발자취업
- java17
- containsValue
- containsKey
- 스택
- Today
- Total
Developer J
Spring MVC 기초 실습 본문
1. project - Spring legacy Project 선택- Templates 선택하기 : Spring MVC Project 선택--next-패키지 설정
2. mavenrepository.com가서 ojdbc6 검색 두 번째 Maven 복사해서 pom.xml에 넣어준다.
mybatis 검색 맨위 mybatis 3.5.3 버전, mybatis spring 검색해서 2.0.3 버전, commons-dbcp 1.4,
spring-orm 검색해서 1.2.6버전 복사해서 붙여 넣는다(버전 위치에 내용을 ${org.springframework-version}로 수정
-해당 프로젝트 버전에 맞춰주겠다.) 이후 dependency에 오류가 뜬다면 groupid에 org.springframework로 변경하고, 다음으로 맨 윗부분으로 올라가서 아래와 같이 작성해주자.
(db.properties 처리하기 위해서는 Commons-dbcp 검색 후 1.4버전 Maven 복사,
SqlSessionFactory 처리하기 위해서는 mybatis 검색 후 2.0.3버전 Maven 복사)
<<properties 위에 추가해주자>>
<!-- repository -->
<repositories>
<repository>
<id>datanucleus</id>
<!--아래의 주소에서 ojdbc6 repository를 받아주겠다 -->
<url>http://www.datanucleus.org/downloads/maven2</url>
</repository>
</repositories>
3. src->main->webapp->WEB-INF->spring에 위치한 root-context.xm을
src->main->webapp->WEB-INF->spring->appServlet안으로 옮겨준다.
그 후, applicationContext라고 이름을 변경한다.
그에 맞게 web.xml의 <context-param>에서 <param-value>의 경로도 변경해 준다.
(/WEB-INF/spring/appServlet/applicationContext.xml)
4. web.xml에 servlet-mapping의 url-pattern을 *.do로 변경한다.
그 아래에 아래의 코드를 작성한다.
<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>
<!-- 모든 request에 대해 encoding해주겠다. -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5. Maven project update를 해준다.
6. spring폴더 아래 sqls폴더를 만들고 test.sql파일 만든다.
DROP SEQUENCE MYNOSEQ;
DROP TABLE MYBOARD;
CREATE SEQUENCE MYNOSEQ NOCACHE;
CREATE TABLE MYBOARD(
MYNO NUMBER PRIMARY KEY,
MYNAME VARCHAR2(1000) NOT NULL,
MYTITLE VARCHAR2(2000) NOT NULL,
MYCONTENT VARCHAR2(4000) NOT NULL,
MYDATE DATE NOT NULL
);
INSERT INTO MYBOARD VALUES(MYNOSEQ.NEXTVAL, '관리자','스프링 테스트','Spring MVC 흥미롭다',SYSDATE);
SELECT * FROM MYBOARD ORDER BY MYNO DESC;
7. com.mvc.upgrade.model.dto에 BoardDto를 만든다.
private int myno;
private String myname;
private String mytitle;
private String mycontent;
private Date mydate;
//5개를 필드에 선언해준다.
//그후, 기본생성자와 매개변수 생성자, getter와 setter를 만들어 준다.
8. com.mvc.upgrade.model.dao에 BoardDao를 Interface로 만든다.
public interface BoardDao {
String NAMESPACE = "myboard.";
public List<BoardDto> selectList();
public BoardDto selectOne(int myno);
public int insert(BoardDto dto);
public int update(BoardDto dto);
public int delete(int myno);
}
9. com.mvc.upgrade.model.dao에 BoardDaoImpl만든다.BoardDao를 implements 해준다. 그 후, overide
(sqlSessionTemplate의 빨간줄이 싫다면 15번~19번 설정을 먼저 진행)
@Repository
public class BoardDaoImpl implements BoardDao{
//mybatis사용할 것이다. 그러기 위해서 아래 것을 작성
@Autowired
private SqlSessionTemplate sqlSession;
@Override
public List<BoardDto> selectList() {
List<BoardDto> list = new ArrayList<BoardDto>();
try {
list = sqlSession.selectList(NAMESPACE+"selectList");
} catch (Exception e) {
System.out.println("[error] : select list");
e.printStackTrace();
}
return list;
}
// 이하 생략
}
10. com.mvc.upgrade.model.biz에 interface로 BoardBiz 생성
public interface BoardBiz {
public List<BoardDto> selectList();
public BoardDto selectOne(int myno);
public int insert(BoardDto dto);
public int update(BoardDto dto);
public int delete(int myno);
}
11. com.mvc.upgrade.model.biz에 BoardBizImpl 생성
@Service
public class BoardBizImpl implements BoardBiz{
//BoardDao 타입의 dao있으면 주입!!
@Autowired
private BoardDao dao;
@Override
public List<BoardDto> selectList() {
return dao.selectList();
}
//이하 생략
}
12. HomeController.java
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Autowired
private BoardBiz biz;
//수정 부분
@RequestMapping(value = "/home.do", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
//추가부분
@RequestMapping("/list.do")
public String list(Model model) {
logger.info("SELECT LIST");
model.addAttribute("list",biz.selectList());
//mvclist.jsp로 보내겠다.
return "mvclist";
}
}
13. webapp 아래에 index.html 만들기
14. views 아래에 mvclist.jsp만들기
15. src->main->resource아래에 mybatis 폴더 생성 후 board-mapper.xml, db.properties 생성
https://mybatis.org/mybatis-3/ko/getting-started.html
16. 이곳에서 빨간 네모 부분을 복사해서 board-mapper.xml에 붙여준다.
<?xml version="1.0" encoding="UTF-8"?>
<!--MyBatis site 복사부분 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--MyBatis site 복사부분 끝-->
<mapper namespace="myboard">
<resultMap type="boardDto" id="boardMap">
<!--MYNO를 myno에 넣어준다 -->
<result property="myno" column="MYNO"/>
<result property="myname" column="MYNAME"/>
<result property="mytitle" column="MYTITLE"/>
<result property="mycontent" column="MYCONTENT"/>
<result property="mydate" column="MYDATE"/>
</resultMap>
<!-- sql 결과를 boardMap에 담아주겠다. -->
<select id="selectList" resultMap="boardMap">
SELECT MYNO, MYNAME, MYTITLE, MYCONTENT, MYDATE
FROM MYBOARD
ORDER BY MYNO DESC
</select>
</mapper>
17. sqls폴더 아래 config.xml 만들어 줍니다.
그 후,의 빨간 네모 부분을 복사해서 붙여 넣기 해 줍니다.
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.mvc.upgrade.model.dto.BoardDto" alias="boardDto"/>
</typeAliases>
<!--resource: src/main/resources와 연결되어 있다. -->
<mappers>
<mapper resource="/mybatis/board-mapper.xml"/>
</mappers>
</configuration>
18. db.properties에 내용 작성
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
username=자신의아이디
password=자신의비빌번호
18. servlet-context.xml 작성
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<!-- 이 부분을 통해서 view의 주소를 간략하게 작성할 수 있게 된다. -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.mvc.upgrade" />
<!-- 기존에 작성되어 있는 부분이 대부분이기 때문에 필요한 부분만 수정해 준다. -->
19. applicationContext.xml 작성
<!-- db.properties db관련 내용을 처리해 줄 것이다. -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- 앞에 주소가 더 있지만, 일일이 적지 않고 classpath로 미리 작성되어져 있다. -->
<value>classpath:mybatis/db.properties</value>
</list>
</property>
</bean>
<!-- dataSorce // db.properties에 적어준 data를 처리해 준다.-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean>
<!-- mybatis -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="WEB-INF/spring/sqls/config.xml"></property>
</bean>
<!-- mybatis-template //BoardDaoImpl의 selectList에 언급했던 부분과 관련된 부분이다 -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSession"></constructor-arg>
</bean>
20.index.html에서 실행을 해보자.
'개발자 되기 part1 > Spring' 카테고리의 다른 글
Spring mvc 들어가기 전 기초 실습(일일이 세팅) (0) | 2020.05.28 |
---|---|
Spring Annotation의 종류와 역할 (0) | 2020.05.26 |
Spring framework 시작- 설치 (0) | 2020.05.25 |