티스토리 뷰
#게시판 전체 구조
다 똑같은데 Service가 추가가 된다. Service가 추가되면 web이 아니라, service에 transaction이 걸린다.
Web은 하나의 서비스만 호출한다. Web이 하던 로직을 일부 service로 넘긴다. 세션이 필요하다면 web에서 service로 세션을 넘겨준다. 컨트롤러가 하는 일은 서비스만 호출해주면 되는 것이다.
서비스는 여러개의 biz를 호출한다.
#Toad에서 계정 만들기
1. System으로 접속한다.
2. Create User
SPRING으로 만든다.
3. Roles와 System Privileges를 HR에서 copy해온다.
4. 테이블 만들기
#Tip. 4000글자 넘을 때는 어떻게 하나요??
Data Type을 CLOB으로 설정하면 제한없이 쓸 수 있다.
5. 시퀀스 만들기
ARTICLE_ID_SEQ를 만든다.
#게시판 만들기 위한 기반 만들기
1. 프로젝트 생성
2. Pom.xml에 기존에 만들어두었던 pom.xml 복사 붙여넣기한다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringSimpleBoard</groupId> <artifactId>SpringSimpleBoard</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>oracle</id> <name>ORACLE OJDBC Repository</name> <url>http://maven.jahia.org/maven2</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.5.RELEASE</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.4.Final</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.1.0.7.0</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> </dependencies> </project> | cs |
3. Logback.xml, mybatis.xml, Spring 폴더와 view 폴더 복사
이렇게 만들어준다.
4. articleDAO.xml을 복사해와서 이렇게 바꿔준다.
5. customExceptionHandler 복사해준다.
6. Mybatis.xml 수정
7. sampleMapper.xml 수정
그리고 서버를 실행해보면, 에러없이 동작한다. 기반 작업은 모두 끝났다.
#게시판 만들기
1. Jsp 만들기
먼저 글쓰기 페이지를 만들어보고자 한다. 위와 같은 구조로 jsp내용을 채워본다.
(코드에 action 안에 c:url 로 적은 것은 다시 /board/doWriteAction 형태로 바꿔야한다.!!)
뭔가를 안적었을 때 적어라 라고 할 수 있는게 필요하다. 아래를 추가해준다.
이전같으면, servlet을 두개 만들어서 처리해야하지만 지금은 controller하나만 있으면 된다.
2. Controller 생성
총 5개의 패키지가 필요하다. Biz, dao, service, vo, web 을 만들어준다.
Web 밑에 ArticleController.java 를 만들어준다.
페이지를 보여주는 용도와, 그렇지 않은 용도를 이름(메소드명)으로써 구분한다.
페이지를 보여준다 : view~
3. applicationContext.xml 에 컨트롤러 등록
그리고 실행을 한번 해보자.
http://localhost:8080/board/write 로 접속을 하면,
이렇게 화면이 잘 실행된다.
이제 doWriteAction 페이지를 만들어주어야한다.
그런데, 이제 서비스가 그 내용들을 처리할 것이다.
이제부터는 만들게 점점점점 많아지게 된다!!
4. 먼저, vo를 만들어보자.
자바에서 복잡한 로직을 쓸 필요 없이, @NotEmpty를 쓰면 자동으로 널 체크를 할 수 있다.
5. 그리고 이제 ArticleController.java에 doWriteAction을 써준다.
@Valid를 써주어야 @NotEmpty를 체크할 수 있고, 항상 Valid와 Errors는 같이 적어준다.
6. 서비스를 만들어 로직 처리해주기
인터페이스 만들어주기
- 원래 컨트롤러가 하던 일을 서비스가 해줄 거니까, Controller가 가지고 있는 파라메터를 그대로 넣어주어야한다. 내용은 다음과 같다.
2) ArticleServiceImpl 만들어주기
이렇게 기본 형식을 일단 만들어준다. 그리고 에러가 있을 때 write 페이지를 보여주고,
사용자가 적은 내용들을 담아 다시 페이지로 보내준다.
그리고 잘 적었다면, list로 리다이렉트한다.
7. ArticleController.java 를 추가해주고 수정한다.
8. articleService는 url에 영향받지 않으므로, articleContext.xml를 생성하여 bean을 추가해준다.
9. applicationContext.xml에 아래 내용을 추가해준다.
그리고 실행을 해본다. http://localhost:8080/board/write 로 접속한다.
내용만 적고 글쓰기 버튼을 눌러보면 아래처럼 error메시지가 두개가 다 뜬다.
제목만 적고 글쓰기 버튼을 눌러본다.
그리고 모두 다 충실히 적고 글쓰기를 눌러본다. 그러면 url이 http://localhost:8080/board/list 로 넘어가는 것을 확인할 수 있을 것이다.
Write.jsp에서 에러를 만났을 때 내가 적었던 것들이 안보여진다. 이를 해결하기 위해서는,
이렇게 만들어준다. 그러면 다시 실행하면 이제는 데이터가 남아있다.
'프레임워크 > Spring' 카테고리의 다른 글
Web Socket으로 캐치마인드 만들기 (0) | 2016.04.27 |
---|---|
Web Socket (0) | 2016.04.27 |
Dynamic Query (0) | 2016.04.20 |
MyBatis 전체 요약, CRUD(insert, select) (0) | 2016.04.20 |
Transaction, AOP, MyBatis 설정 (1) | 2016.04.19 |
- Total
- Today
- Yesterday
- 뉴스피드 가져오기
- 메뉴바에 버튼 생성하기
- 제이쿼리
- 클래스
- jQuery
- activity
- Linear Layout
- 게시판 만들기
- mybatis
- 예외처리
- 뒤로가기 버튼
- 포스팅하기
- query
- aop
- ERD
- mongo db
- sql
- er다이어그램
- Relative Layout
- 쿼리
- intent
- 배열
- MVC
- Erwin
- 자바프로그래밍
- 메소드
- JSP
- spring
- facebook 연동
- 글쓰기 버튼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |