.
.
.
.
.
.
오늘부터 본격적으로 개발 구현을 시작했다.
멘붕의 연속 .........!
유후
.
.
.
.
spring project를 만들고 차근차근 하기위한 순서!!
1.spring한글 처리 인코딩
1)경로 [src/webapp/web.xml]
web.xml안에 맨 아래 </web-app>위에 아래에 있는 filter소스를 넣어준다.
<!-- 한글처리 -->
<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>
2)페이지 한글처리
경로 [scr/webapp/WEB-INF/home.jsp]
home.jsp 에 상단에 아래에 있는 한줄을 넣어준다.
<%@ page language="java" contentType="text/html; charset=utf-8"%>
2.pom.xml에 마이바티스와 연동을 위해 넣어준다.
[lib]
spring-jdbc.jar
mybatis-spring.jar
mybatis.jar
ojdbc6.jar(webapps->lib->ojdbc6.jar)
경로[target/pom.xml] test 아래에 넣어줌
<!-- 스프링 마이바티스 연동하기 위한 라이브러리 추가 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
-------------------------------------------------------------한글 인코딩이 잘 되는 지 확인 후, 디비 설정을 해준다. 예민해서 에러 발생 함
3.ojdbc
경로[src/main/webapp/lib/ojdbc6.jar]
다른 곳에 있는 lib폴더를 복사해서 이곳에 붙여넣어주기
4.servlet-context.xml에 sql소스 설정해주기
경로[src/webapp/spring/appServlet/servlet-context.xml]
</beans>위에 넣어준다.
<!-- 데이터 소스 설정 -->
<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<beans:property name="username" value="hr" />
<beans:property name="password" value="hr" />
</beans:bean>
<!-- SqlSessionFactory 설정 -->
<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource"></beans:property>
<beans:property name="mapperLocations" value="classpath:com/nz/spring18/mapper/mapper.xml"></beans:property>
</beans:bean>
<!-- SqlSession 설정 -->
<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>
------------->>>>> mapper package 이름 맞나 확인해라!!!!!
5.패키지 구성 하기
com.nz.spring20.IndexController.java
com.nz.spring20.controller.BoardController.java
com.nz.spring20.dao.BoardDAO.java
com.nz.spring20.dto.BoardDTO.java
com.nz.spring20.mapper.xml
com.nz.spring20.service.BoardService.java
6.com.nz.spring20.mapper.xml에 xml File에 만들어준다.
mapper.xml에 들어갈 파일은 MyBATIS 홈페이지에서 가져온다.
------------------------------------------------------------1.controller,2.dao,..page 연동 다 해주고 mapper 설정해 준다.
-----------------------------------------------------------DB연결 없이 controller에 page 만 다 나올수 있도록 연동해준다.
6.mapper.xml에 들어갈 파일은 MyBATIS 홈페이지에서 가져온다.
1)
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nz.spring18.dao.AIBoardDAO">
</mapper>
-><mapper namespace="com.kornu.jin.dao.BoardDAO"> 이것은 DAO에 맞게 이름을 변경해준다.
2)쿼리문 작성
<!-- 게시물 전체 가져오기 -->
<select id="listDAO" resultType="com.nz.spring18.dto.AIBoard">
SELECT * FROM AIBOARD ORDER BY SEQ DESC
</select>
<!-- 게시물 작성하기 -->
<insert id="writeDAO">
insert into aiboard values(aiboard_seq.nextval,#{param1},#{param2},#{param3},0)
</insert>
<!-- 게시물 삭제하기 -->
<delete id="deleteDAO">
delete from aiboard where seq=#{param1}
</delete>
<!-- 게시물 한건보기 -->
<select id="getAIBoard" resultType="com.nz.spring18.dto.AIBoard">
select * from aiboard where seq=#{param1}
</select>
</mapper>
------------------------------------------------------------------------------------------
view /read (write,list)
.
.
.
.
.
cmd 에 sqlplus해주고!!!!
.
.
.
.
.
.
.
.
CREATE TABLE BOARD_NOTICE
(
BOARD_NOTICE_TITLE VARCHAR2(100) NULL ,
BOARD_NOTICE_DATE DATE NULL ,
BOARD_NOTICE_CONTENT VARCHAR2(3000) NULL ,
MANAGER_ID VARCHAR2(20) NOT NULL ,
BOARD_NOTICE_NO NUMBER(10) NOT NULL
);
CREATE UNIQUE INDEX XPK게시판_공지 ON BOARD_NOTICE
(BOARD_NOTICE_NO ASC);
ALTER TABLE BOARD_NOTICE
ADD CONSTRAINT XPK게시판_공지 PRIMARY KEY (BOARD_NOTICE_NO);
CREATE TABLE BOARD_QNA
(
BOARD_QNA_TITLE VARCHAR2(100) NULL ,
BOARD_QNA_CONTENT VARCHAR2(3000) NULL ,
BOARD_QNA_FILE_URL VARCHAR2(200) NULL ,
MEMBER_ID VARCHAR2(20) NOT NULL ,
BOARD_QNA_NO NUMBER(10) NOT NULL ,
BOARD_QNA_TYPE VARCHAR2(20) NULL ,
MEMBER_PHONE_NO VARCHAR2(200) NULL ,
MEMBER_EMAIL VARCHAR2(50) NULL
);
CREATE UNIQUE INDEX XPK게시판_1대1_문의사항 ON BOARD_QNA
(BOARD_QNA_NO ASC);
ALTER TABLE BOARD_QNA
ADD CONSTRAINT XPK게시판_1대1_문의사항 PRIMARY KEY (BOARD_QNA_NO);
CREATE TABLE BOARD_REVIEW
(
BOARD_REVIEW_TITLE VARCHAR2(100) NULL ,
BOARD_REVIEW_DATE DATE NULL ,
BOARD_REVIEW_CONTENT VARCHAR2(3000) NULL ,
BOARD_REVIEW_NO NUMBER(10) NOT NULL ,
MEMBER_ID VARCHAR2(20) NOT NULL ,
BOARD_REVIEW_HEIGHT NUMBER(3) NULL ,
BOARD_REVIEW_WEIGHT NUMBER(3) NULL ,
BOARD_REVIEW_SIZE VARCHAR2(20) NULL ,
BOARD_REVIEW_SEL_OPTION VARCHAR2(20) NULL ,
BOARD_REVIEW_PHOTO_URL VARCHAR2(100) NULL
);
CREATE UNIQUE INDEX XPK게시판_상품평 ON BOARD_REVIEW
(BOARD_REVIEW_NO ASC);
ALTER TABLE BOARD_REVIEW
ADD CONSTRAINT XPK게시판_상품평 PRIMARY KEY (BOARD_REVIEW_NO);
CREATE TABLE CART
(
PRODUCT_NO NUMBER(10) NOT NULL ,
PRODUCT_NAME VARCHAR2(100) NULL ,
PRODUCT_PRICE NUMBER(10) NULL ,
PRODUCT_QUANTITY NUMBER(10) NULL ,
PRODUCT_TOTAL_PRICE NUMBER(10) NULL ,
MEMBER_ID VARCHAR2(20) NOT NULL
);
CREATE UNIQUE INDEX XPK장바구니 ON CART
(PRODUCT_NO ASC,MEMBER_ID ASC);
ALTER TABLE CART
ADD CONSTRAINT XPK장바구니 PRIMARY KEY (PRODUCT_NO,MEMBER_ID);
CREATE TABLE CATEGORI
(
CATEGORI_CODE VARCHAR2(30) NOT NULL ,
CATEGORI_NAME VARCHAR2(50) NULL
);
CREATE UNIQUE INDEX XPK카테고리 ON CATEGORI
(CATEGORI_CODE ASC);
ALTER TABLE CATEGORI
ADD CONSTRAINT XPK카테고리 PRIMARY KEY (CATEGORI_CODE);
CREATE TABLE MANAGER
(
MANAGER_ID VARCHAR2(20) NOT NULL ,
MANAGER_AUTHOR VARCHAR2(10) NULL ,
MANAGER_NAME VARCHAR2(50) NULL ,
MANAGER_PASSWD VARCHAR2(30) NULL ,
BOARD_QNA_NO NUMBER(10) NOT NULL
);
CREATE UNIQUE INDEX XPK관리자 ON MANAGER
(MANAGER_ID ASC);
ALTER TABLE MANAGER
ADD CONSTRAINT XPK관리자 PRIMARY KEY (MANAGER_ID);
CREATE TABLE MEMBER
(
MEMBER_EMAILID VARCHAR2(50) PRIMARY key,
MEMBER_BIRTHDAY VARCHAR2(13) NULL ,
MEMBER_NAME VARCHAR2(50) NULL ,
MEMBER_ADDR VARCHAR2(200) NULL ,
MEMBER_PASSWD VARCHAR2(30) NULL ,
MEMBER_PHONE_NO VARCHAR2(15) NULL ,
MEMBER_AGREE_YN CHAR(2) NULL
);
commit;
CREATE UNIQUE INDEX XPK회원 ON MEMBER
(MEMBER_ID ASC);
ALTER TABLE MEMBER
ADD CONSTRAINT XPK회원 PRIMARY KEY (MEMBER_ID);
CREATE TABLE ORDERS
(
ORDERS_TOTAL_PRICE NUMBER(10) NULL ,
ORDERS_DELIVERY_NAME VARCHAR2(50) NULL ,
ORDERS_DELIVERY_ADDR VARCHAR2(200) NULL ,
ORDERS_DELIVERY_PHONE_NO VARCHAR2(11) NULL ,
ORDERS_NAME VARCHAR2(50) NULL ,
ORDERS_PHONE_NO VARCHAR2(11) NULL ,
ORDERS_EMAIL VARCHAR2(50) NULL ,
ORDERS_DATE DATE NULL ,
MEMBER_ID VARCHAR2(20) NOT NULL ,
ORDERS_NO VARCHAR2(20) NOT NULL ,
ORDERS_ADDR VARCHAR2(200) NULL ,
ORDERS_DELIVERY_MESSAGE VARCHAR2(100) NULL
);
CREATE UNIQUE INDEX XPK주문 ON ORDERS
(ORDERS_NO ASC);
ALTER TABLE ORDERS
ADD CONSTRAINT XPK주문 PRIMARY KEY (ORDERS_NO);
CREATE TABLE PAYMENT
(
PAYMENT_STATUS VARCHAR2(20) NULL ,
MANAGER_ID VARCHAR2(50) NULL ,
DEPOSITOR VARCHAR2(30) NULL ,
ORDERS_NO VARCHAR2(20) NOT NULL ,
PAYMENT_NO NUMBER(20) NOT NULL
);
CREATE UNIQUE INDEX XPK결재 ON PAYMENT
(PAYMENT_NO ASC);
ALTER TABLE PAYMENT
ADD CONSTRAINT XPK결재 PRIMARY KEY (PAYMENT_NO);
CREATE TABLE PRODUCT
(
PRODUCT_NAME VARCHAR2(100) NULL ,
PRODUCT_PRICE NUMBER(10) NULL ,
PRODUCT_REGI_DATE DATE NULL ,
PRODUCT_PHOTO_URL VARCHAR2(100) NULL ,
PRODUCT_DESCRIPTION VARCHAR2(500) NULL ,
PRODUCT_QUANTITY NUMBER(10) NULL ,
PRODUCT_COLOR VARCHAR2(20) NULL ,
MANAGER_ID VARCHAR2(20) NOT NULL ,
CATEGORI_CODE VARCHAR2(30) NOT NULL ,
PRODUCT_SIZE VARCHAR2(10) NULL ,
PRODUCT_NO VARCHAR2(20) NOT NULL ,
ORDERS_NO VARCHAR2(20) NOT NULL
);
CREATE UNIQUE INDEX XPK상품 ON PRODUCT
(PRODUCT_NO ASC);
ALTER TABLE PRODUCT
ADD CONSTRAINT XPK상품 PRIMARY KEY (PRODUCT_NO);
ALTER TABLE BOARD_NOTICE
ADD (CONSTRAINT R_12 FOREIGN KEY (MANAGER_ID) REFERENCES MANAGER(MANAGER_ID));
ALTER TABLE BOARD_QNA
ADD (CONSTRAINT R_13 FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER(MEMBER_ID));
ALTER TABLE BOARD_REVIEW
ADD (CONSTRAINT R_18 FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER(MEMBER_ID));
ALTER TABLE MANAGER
ADD (CONSTRAINT R_14 FOREIGN KEY (BOARD_QNA_NO) REFERENCES BOARD_QNA(BOARD_QNA_NO));
ALTER TABLE ORDERS
ADD (CONSTRAINT R_16 FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER(MEMBER_ID));
ALTER TABLE ORDERS
ADD (CONSTRAINT R_17 FOREIGN KEY (MEMBER_ID) REFERENCES CART(MEMBER_ID));
ALTER TABLE PAYMENT
ADD (CONSTRAINT R_8 FOREIGN KEY (MANAGER_ID) REFERENCES MANAGER(MANAGER_ID) ON DELETE SET NULL);
ALTER TABLE PAYMENT
ADD (CONSTRAINT R_22 FOREIGN KEY (ORDERS_NO) REFERENCES ORDERS(ORDERS_NO));
ALTER TABLE PRODUCT
ADD (CONSTRAINT R_9 FOREIGN KEY (MANAGER_ID) REFERENCES MANAGER(MANAGER_ID));
ALTER TABLE PRODUCT
ADD (CONSTRAINT R_21 FOREIGN KEY (CATEGORI_CODE) REFERENCES CATEGORI(CATEGORI_CODE));
ALTER TABLE PRODUCT
ADD (CONSTRAINT R_23 FOREIGN KEY (ORDERS_NO) REFERENCES ORDERS(ORDERS_NO));
commit;
select * from tab;
desc member;
drop table board_notice cascade constraints;
drop table board_qna cascade constraints;
drop table board_review cascade constraints;
drop table cart cascade constraints;
drop table categori cascade constraints;
drop table manager cascade constraints;
drop table member cascade constraints;
drop table orders cascade constraints;
drop table payment cascade constraints;
drop table product cascade constraints;
commit;
sql developer에 쿼리문 작성하기 !!
쌤이 많이 도와주심 감사합니당!!!
.
.
.
.
오늘 계획한 기능 구현하기 모두 완료 ~!
.
.
[패키지 명 ]
com.lucyjin.shop
com.lucyjin.shop.controller
com.lucyjin.shop.dao
com.lucyjin.shop.dto
com.lucyjin.shop.mapper
con.lucyjin.shop.service
[jsp 화면 ]
member [폴더]
member/register
member/modify
member/remove
member/myInfo
member/login
[mapper.xml] 명칭
member.xml
*******************************************membercontroller**************************************************
package com.lucyjin.shop.controller;
import java.lang.reflect.Method;
import javax.servlet.http.HttpServletRequest;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
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.lucyjin.shop.dao.MemberDAO;
import com.lucyjin.shop.dto.MemberDTO;
@Controller
public class MemberController {
//sql 랩핑
@Autowired
private SqlSessionTemplate sqlSession;
// 회원가입 page
@RequestMapping(value="/member/registerForm",method=RequestMethod.GET)
public String registerForm() {
return "member/registerForm";
}
//회원 가입 처리
@RequestMapping(value="/member/register",method=RequestMethod.POST)
public String register(HttpServletRequest request, Model model) {
String emailId= request.getParameter("emailId");
String birthdate = request.getParameter("birthdate");
String name = request.getParameter("name");
String addr= request.getParameter("addr");
String passwd= request.getParameter("passwd");
String phone_no=request.getParameter("phone_no");
String agree_yn= request.getParameter("agree_yn");
MemberDAO dao =sqlSession.getMapper(MemberDAO.class);
dao.registerDAO(emailId, birthdate, name, addr, passwd, phone_no, agree_yn);
return"member/login";
}
//myinfo 한건 읽기 페이지
@RequestMapping(value="/member/myInfo",method=RequestMethod.GET)
public String myInfo(HttpServletRequest request,Model model) {
String emailId=request.getParameter("emailId");
MemberDAO dao = sqlSession.getMapper(MemberDAO.class);
model.addAttribute("myInfo2",dao.getMember(emailId));
return"member/myInfo";
}
// 회원수정하기 페이지 이동
@RequestMapping(value="/member/modifyForm",method=RequestMethod.POST)
public String modifyForm(HttpServletRequest request,Model model) {
String emailId= request.getParameter("emailId");
String birthdate = request.getParameter("birthdate");
String name = request.getParameter("name");
String addr= request.getParameter("addr");
String passwd= request.getParameter("passwd");
String phone_no=request.getParameter("phone_no");
String agree_yn= request.getParameter("agree_yn");
MemberDTO member = new MemberDTO();
member.setEmailId(emailId);
member.setBirthdate(birthdate);
member.setName(name);
member.setAddr(addr);
member.setPasswd(passwd);
member.setPhone_no(phone_no);
member.setAgree_yn(agree_yn);
model.addAttribute("modify",member);
return "member/modifyForm";
}
//회원수정 처리하는 메소드
@RequestMapping(value="/member/modify",method=RequestMethod.POST)
public String modify(HttpServletRequest request,Model model) {
String emailId= request.getParameter("emailId");
String birthdate = request.getParameter("birthdate");
String name = request.getParameter("name");
String addr= request.getParameter("addr");
String passwd= request.getParameter("passwd");
String phone_no=request.getParameter("phone_no");
String agree_yn= request.getParameter("agree_yn");
MemberDAO dao = sqlSession.getMapper(MemberDAO.class);
dao.updateMember(emailId, birthdate, name, addr, passwd, phone_no);
return "member/home";
}
//회원 탈퇴 하는 메소드
@RequestMapping(value="/member/remove",method=RequestMethod.GET)
public String removeMember(HttpServletRequest request,Model model) {
String emailId=request.getParameter("emailId");
MemberDAO dao = sqlSession.getMapper(MemberDAO.class);
dao.removeMember(emailId);
return "member/home";
}
*******************************member.xml(mapper)**********************************************
<?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.lucyjin.shop.dao.MemberDAO">
<!-- 회원 작성하기 -->
<insert id="registerDAO" parameterType="com.lucyjin.shop.dto.MemberDTO" >
insert into member values(#{emailId},#{birthdate},#{name},#{addr},#{passwd},#{phone_no},#{agree_yn})
</insert>
<!-- 한건읽기 -->
<select id="getMember" resultType="com.lucyjin.shop.dto.MemberDTO">
select member_emailId as emailId,
member_birthday as birthdate,
member_name as name,
member_addr as addr,
member_passwd as passwd,
member_phone_no as phone_no,
member_agree_yn as agree_yn
from member where member_emailId=#{param1}
</select>
<!-- 수정하기 -->
<update id="updateMember" parameterType="com.lucyjin.shop.dto.MemberDTO">
update member set
member_birthday=#{birthdate},
member_name=#{name},
member_addr=#{addr},
member_passwd=#{passwd},
member_phone_no=#{phone_no}
where member_emailId=#{emailId}
</update>
<delete id="removeMember" parameterType="String">
delete from member where member_emailId=#{emailId}
</delete>
</mapper>
**************************memberDAO******************************************
package com.lucyjin.shop.dao;
import org.apache.ibatis.annotations.Param;
import com.lucyjin.shop.dto.MemberDTO;
public interface MemberDAO {
public void registerDAO(@Param("emailId") String emailId,
@Param("birthdate") String birthdate,
@Param("name") String name,
@Param("addr") String addr,
@Param("passwd") String passwd,
@Param("phone_no") String phone_no,
@Param("agree_yn")String agree_yn );
public MemberDTO getMember(String emailId);
public void updateMember(
@Param("emailId") String emailId,
@Param("birthdate") String birthdate,
@Param("name") String name,
@Param("addr") String addr,
@Param("passwd") String passwd,
@Param("phone_no") String phone_no);
public void removeMember(
@Param("emailId") String emailId
);
}
다가가기 힘든 요석들 ㅎㅎㅎㅎ아껴줘야지 이곳에 ...
.
.
데이터 하나가 들어가 이렇게 힘든것이였는가 ........
회원가입으로 insert update remove getMember 를 연결시키는데 하루가 지나갔다.
후
.
.
데이터 한건 넣기 성공하면 경사나는 일ㅎㅎㅎㅎㅎ
.
.
.
.
wow!!!!
.
.
.
.
.
.
.
.
앞으로 남은 35개의 기능들 ㅎㅎㅎ+ a ........?아직 설정하지못한 중복페이지들까지
나의 팀원 강사님 힘내세요 ㅎㅎ
.
.
.
.
오늘의 project 끝 !
'코딩이 쉬워진다! > 01-1. java_project' 카테고리의 다른 글
project04일차 (0) | 2018.01.29 |
---|---|
project 3일차 (1) | 2018.01.26 |
project 2일차 (2) | 2018.01.25 |
project 1일차 (1) | 2018.01.24 |