본문 바로가기
자바웹프로그래밍/전자정부프레임워크

전자정부프레임워크를 이용 쇼핑몰 만들기 #2

by 디찌s 2020. 4. 25.
728x90
반응형

 

*도움이 되셨다면 광고 한번 클릭 부탁드립니다! 제게 큰 힘이됩니다!

 

 

1.mybatis - mapper설정

src/main/resources/egovframework/mapper 폴더안에 pet이라는 폴더를 생성하자

 

이 폴더안에 우리는 pet 쇼핑몰을 만들면서 필요한 sql.xml 파일들을 넣을것이다.

 

 

 

 

그리고 난후

 

 

 

 sql을 관리할것이므로 정부프레임워크에서 이미 설정해놓은 context-mapper.xml을

 

열어 우리만에 sql을 관리하기위해 따로 설정해보자

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
	
    <!-- 실행환경에서 빈이름 참조(EgovAbstractDAO) -->
	<bean id="egov.lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />

	<!-- Mybatis setup for Mybatis Database Layer -->
	<bean id="egov.sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">		
		<property name="dataSource" ref="egov.dataSource"/>
		<property name="configLocation" value="classpath:/egovframework/mapper/config/mapper-config.xml" />
		
		<property name="mapperLocations">
			<list>
				<value>classpath:/egovframework/mapper/com/**/*_${Globals.DbType}.xml</value>
			</list>
		</property>
	</bean>

	<!-- Mybatis Session Template -->
	<bean id="egov.sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="egov.sqlSession"/>
	</bean>
	
</beans>

 

위내용은 아래와같이 수정해주자

	<list>
	<value>classpath:/egovframework/mapper/com/**/*_${Globals.DbType}.xml</value>
	<value>classpath:/egovframework/mapper/pet/**/*_${Globals.DbType}.xml</value>
	</list>

 

 

해석해보자면 저경로 안에 있는 *_mysql.xml 을 모두 스캔하라는 의미이다. 그후

 

아까 만든 pet 폴더안에 bbs폴더를 만든후 

 

PetArticle_SQL_mysql.xml 을 만들자 여기서 namespace는 service단에서 접근하는 클래스? 쯤으로 알고있으면된다.

 

나중에 기회가 되면 자세히 설명하겠다. 

 

 

 

<?xml version="1.0" encoding="UTF-8">


<!DOCYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"


<mapper namespace="ArticleDAO">

</mapper>

 

 

 

 

 

 

 

 

 

 

2.Login sercurity

globals.properties 에 auth  방식을 security로 변경  

# 운영서버 타입(WINDOWS, UNIX)
Globals.OsType = WINDOWS

# DB서버 타입(mysql, oracle, altibase, tibero, cubrid, maria, postgres) - datasource 및 sqlMap 파일 지정에 사용됨
Globals.DbType = mysql

# 권한 인증방식(dummy, session, security) - 사용자의 로그인시 인증 방식을 결정함
# dummy : 더미 방식으로 사용자 권한을 인증함
# session : 세션 방식으로 사용자 권한을 인증함
# security : spring security 방식으로 사용자 권한을 인증함
Globals.Auth = security 
     (adsbygoogle = window.adsbygoogle || []).push({});
# MainPage Setting

globals.properties을 설정하고 나면 로그인창이 나온다

 

아이디는 USER 비밀번호는 영어로 공통12 를 치고

 

접속해본다

 

이제는 왼쪽 파란 공간을 지우고 링크를 달것이다 일단

CRTL+SHIFT+R 을 눌룬뒤 EgovUnitLeft.jsp 을 찾는다.

 

안에있는 소스 <c:foreach>문을 삭제하자 <c:foreach>문은 jstl 문법으로 리스트를 받고 하나씩 돌려주는 태그이다.

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>eGovFrame 공통 컴포넌트</title>
<link href="<c:url value='/css/egovframework/com/cmm/main.css' />" rel="stylesheet" type="text/css">
<style type="text/css">
link { color: #666666; text-decoration: none; }
link:hover { color: #000000; text-decoration: none; }
</style>
</head>
<body>
<div id="lnb">

<ul class="lnb_title">
	<a href="/pet/bbs/Articlelist.do" target="_content">자유게시판</a>
</ul>

</body>
</html>

위와같이 EgovUnitLeft.jsp를 수정해준다 target="_content"을 하는것을 잊지말자

 

 

 

EgovUnitMain.jsp

<frameset frameborder="0" framespacing="0" rows="75, *, 45">
	<frame name="_top" src="${pageContext.request.contextPath}/EgovTop.do" scrolling="no" title="헤더">
		<frameset frameborder="0" framespacing="0" cols="20%, 80%">
			<frame name="_left" src="${pageContext.request.contextPath}/EgovLeft.do" scrolling="yes" title="메뉴페이지">
			<frame name="_content" src="${pageContext.request.contextPath}/EgovContent.do" title="메인페이지">
		</frameset>
	<frame name="_bottom" src="${pageContext.request.contextPath}/EgovBottom.do" scrolling="no" title="푸터">
</frameset>

 

EgovUnitMain.jsp 을 보면 frame들이 나오고 frame태그중에 name이 _content 맵핑 되어있는곳에

 

우리는 게시판 목록을 보여주기위해 EgoviUnitLeft a태그에 target을 추가한것이다.

 

 

이제는 컨트롤러를 설정하고 Artilcelist.jsp를 사용자에게 보여줄것이다.

 


 

 

 

 

 

 

 

 

 

 

3.Controller 생성

 

 

위 그림과 같이   src/main/java/pet 폴더에 아래 그림과 같이 폴더경로를 만들어주고,

web폴더에 아래와 같이 Controller를 작성하자

 

ArticleController.java

package pet.com.bbs.web;

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

@Controller
@SuppressWarnings({ "rawtypes", "unchecked", "static-access" })
public class ArticleController {
	
	
	@RequestMapping("/pet/bbs/Articlelist.do")
	public String Articlelist(ModelMap model) throws Exception{
		System.out.println("--------ssssssss--------------");
		System.out.println("----------------------");
		
		
		return "pet/bbs/Articlelist";
	}
}

 

controller bean 등록

 

 

WEB-INF/config/egovframework/springmvc/egov-com-servlet

 

egov-com-servlet.xml을 열자 그후 아래와같이 추가해준다

 

...

	<context:component-scan base-package="egovframework">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
	</context:component-scan>
	
	<context:component-scan base-package="pet">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
	</context:component-scan>
	
	
...

 

 

위와같이 context:component-scan을 복붙하여 base-package="pet" 처럼 설정을 해준다 

 

base-package="pet"에 의미는 위에 그림처럼 java 하위폴더인 pet폴더에 하위 내용들에 대해서 @controller 맵핑에 대한 모든 스캔을 진행한다는뜻이다.

 

이렇게 함으로써 스프링은 pet을 스캔하여 컨트롤을 인식할수 있게 만들어준다. 

 

component-scan에대해 잘모른다면 아래의 링크를 참고하자

 

 

hipdizzy.tistory.com/57

 

context:include-filter && context:exclude-filter&&context:componet-scan이란?

Context:componet-scan - componet scan을 지원하는 태그이다. - Bean이 될 수 있는 모든 Component들을 자동으로 찾아 Bean 컨테이너에 등록한다. - 단, 의존성 관계 등록은 따로 하지않는다. - 특정 패키지 안의..

hipdizzy.tistory.com

 

 

 

 

 

 

webapp/WEB-INF/jsp 경로에 아래와같이 폴더경로 및 Articlelist.jsp를 작성하자

 

Articlelist.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h5>나는 리스트다 ㄱㄱㄱㄱㄱㄱㄱㄱ</h5>
</body>
</html>

이제 서버를 실행시키고 아래와 같이 자유게시판을 클릭하였을때 리스트가 잘 나오는지 확인하자

 

 

 

 

 

여기까지 기본셋팅이 끝나고 앞으로는 게시판을 만들기 위한

컨트롤러,서비스,vo,dao,mybatis등을 속성으로 한번 알아보자


*다음글 예고~

VO란?

-       데이터 그 자체로 의미 있는 것을 담고 있는 객체이다.

-       DTO와 동일한 개념이나 차이점은 Read–Only 속성 객체이다.

-       간단한 독립체( Entity ) 의미하는 작은 객체를 의미한다

-       관계데이터베이스의 레코드에 대응되는 자바클래스이다.

 

 

라고 적혀있는데 그냥 쉽게 생각하자면 

 

데이터 상자라고 생각하면된다. 필요할때마다 상자안에 변수이름과 데이터를 매핑해서

 

들고다니면서 필요한 데이터만 사용? 하도록 하는 객체라고 생각한다.

 

 

 

 

 

 

 

728x90
반응형

댓글