Spring 1 v Spring MVC Project Spring Board
Spring 게시판
1. 프로젝트 설정 v Spring MVC Project를 생성(Spring. Board) v pom. xml 파일의 properties 태그에서 Java Version 을 1. 8로 Spring 버 전을 5. 0. 7로 변경 <properties> <java-version>1. 8</java-version> <org. springframework-version>5. 0. 7. RELEASE</org. springframeworkversion> <org. aspectj-version>1. 6. 10</org. aspectj-version> <org. slf 4 j-version>1. 6. 6</org. slf 4 j-version> </properties>
1. 프로젝트 설정 v pom. xml 파일의 dependencies 태그 안에서 junit(4. 12) 과 servlet 버전 (3. 1. 0)을 변경 <dependency> <group. Id>javax. servlet</group. Id> <artifact. Id>javax. servlet-api</artifact. Id> <version>3. 1. 0</version> </dependency> <!-- Test --> <dependency> <group. Id>junit</group. Id> <artifact. Id>junit</artifact. Id> <version>4. 12</version> <scope>test</scope> </dependency>
1. 프로젝트 설정 v pom. xml 파일의 build 태그 안에서 java source 와 target을 1. 8로 변경 <plugin> <group. Id>org. apache. maven. plugins</group. Id> <artifact. Id>maven-compiler-plugin</artifact. Id> <version>2. 5. 1</version> <configuration> <source>1. 8</source> <target>1. 8</target> <compiler. Argument>-Xlint: all</compiler. Argument> <show. Warnings>true</show. Warnings> <show. Deprecation>true</show. Deprecation> </configuration> </plugin>
2. 파라미터 인코딩 설정 v web. xml 파일에 파라미터 인코딩 설정을 위한 필터 등록 <filter> </filter> <filter-name>encoding</filter-name> <filter-class> org. springframework. web. filter. Character. Encoding. Filter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3. bootstrap 사용 설정
3. bootstrap 사용 설정 v WEB-INF 디렉토리의 views 디렉토리에 include 디렉토리를 생성 v include 디렉토리에 jsp 파일들의 상단에 동일한 메뉴를 출력하기 위한 파일을 생성 – header. jsp <%@ page language="java" content. Type="text/html; charset=UTF-8" page. Encoding="UTF-8"%> <%@ taglib prefix="c" uri="http: //java. sun. com/jsp/jstl/core"%> <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>Spring MVC Board</title> <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'> <link href="/resources/bootstrap/css/bootstrap. min. css" rel="stylesheet" type="text/css" /> <!--[if lt IE 9]> <script src="https: //oss. maxcdn. com/html 5 shiv/3. 7. 2/html 5 shiv. min. js"></script> <script src="https: //oss. maxcdn. comrespond/1. 4. 2 respond. min. js"></script> <![endif]--> </head>
3. bootstrap 사용 설정 <script src="/resources/jquery. min. js"></script> <body class="skin-blue sidebar-mini"> <div class="wrapper"> <header class="main-header"> <div class="page-header"> <h 1>Spring MVC 게시판</h 1> </div> </header> </div> <aside class="main-sidebar"> <section class="sidebar"> <ul class="nav nav-tabs"> <li role="presentation" class="active"><a href="#">메인</a></li> <li role="presentation"><a href="#">목록보기 </a></li> <li role="presentation"><a href="#">게시물 쓰기 </a></li> <li role="presentation"><a href="#">회원가입 </a></li> </ul> </section> </aside> <div>
3. bootstrap 사용 설정 v include 디렉토리에 jsp 파일들의 하단에 동일한 메뉴를 출력하기 위한 파일을 생성 – footer. jsp <%@ page language="java" content. Type="text/html; charset=UTF-8" page. Encoding="UTF-8"%> <footer class="main-footer"> <div class="pull-right hidden-xs"> <b>Version</b> 1. 0 </div> <strong>Copyright © 2019 <a href="/">Spring MVC Board</a>. </strong> All rights reserved. </footer> <script src="/resources/bootstrap/js/bootstrap. min. js" type="text/javascript"></script> </body> </html>
3. bootstrap 사용 설정 v home. jsp 파일을 수정 <%@ page language="java" content. Type="text/html; charset=UTF-8" page. Encoding="UTF-8"%> <%@include file="include/header. jsp"%> <section class="content"> <div class="box-header with-border"> <a href="#"><h 3 class="box-title">회원가입 </h 3></a> </div> </section> <%@include file="include/footer. jsp"%>
4. 데이터베이스 연결 설정 v pom. xml에 Oracle, spring-jdbc, mybatis-spring, spring-test 의존성 추가 오라클 사용을 위해 dependencies 태그 위에 추가 : 별도의 다운로드 위치를 설정 <repositories> <repository> <id>codelds</id> <url>https: //code. lds. org/nexus/content/groups/mainrepo</url> </repository> </repositories>
4. 데이터베이스 연결 설정 dependencies 태그 안에 추가 <!-- 오라클 사용을 위한 라이브러리 --> <dependency> <group. Id>com. oracle</group. Id> <artifact. Id>ojdbc 6</artifact. Id> <version>11. 2. 0. 3</version> </dependency> <!-- 스프링에서 데이터베이스 사용을 위한 라이브러리 --> <dependency> <group. Id>org. springframework</group. Id> <artifact. Id>spring-jdbc</artifact. Id> <version>${org. springframework-version}</version> </dependency>
4. 데이터베이스 연결 설정 <dependency> <group. Id>org. springframework</group. Id> <artifact. Id>spring-test</artifact. Id> <version>${org. springframework-version}</version> </dependency> <group. Id>org. bgee. log 4 jdbc-log 4 j 2</group. Id> <artifact. Id>log 4 jdbc-log 4 j 2 -jdbc 4</artifact. Id> <version>1. 16</version> </dependency>
4. 데이터베이스 연결 설정 v src/main/resources 디렉토리에 log 4 jdbc. log 4 j 2. properties 파일을 생 성하고 작성 log 4 jdbc. spylogdelegator. name=net. sf. log 4 jdbc. log. slf 4 j. Spy. Log. Delegator
4. 데이터베이스 연결 설정 v root-context. xml 파일에 Data. Source를 등록 <!-- 데이터베이스 접속을 위한 정보 설정 --> <bean class="org. springframework. jdbc. datasource. Driver. Manager. Data. Source" id="data. Source"> <property name="driver. Class. Name" value="net. sf. log 4 jdbc. sql. jdbcapi. Driver. Spy" /> <property value="jdbc: log 4 jdbc: oracle: thin: @localhost: 1521: xe" name="url" /> <property value="system" name="username" /> <property value="wnddkd" name="password" /> </bean>
4. 데이터베이스 연결 설정 v src/main/test 디렉토리에 테스트 클래스를 만들고 테스트 package gmail. ggangpae 1. springboard; import java. sql. Connection; import javax. inject. Inject; import javax. sql. Data. Source; import org. junit. Test; org. junit. runner. Run. With; org. springframework. test. context. Configuration; org. springframework. test. context. junit 4. Spring. JUnit 4 Class. Runner;
4. 데이터베이스 연결 설정 @Run. With(Spring. JUnit 4 Class. Runner. class) @Context. Configuration(locations = {"file: src/main/webapp/WEB-INF/spring/rootcontext. xml"}) public class Board. Test { @Inject private Data. Source ds; @Test public void test. Conection()throws Exception{ Connection con = null; try { con = ds. get. Connection(); System. out. println(con); } } } catch (Exception e) { e. print. Stack. Trace(); } finally { if (con != null) { con. close(); } }
5. 예외처리 v 기본 패키지 아래에 util 패키지를 생성하고 Common. Exception. Advice 클래스를 추가하고 작성 - Controller에서 발생하는 예외 처리 import org. springframework. web. bind. annotation. Controller. Advice; import org. springframework. web. bind. annotation. Exception. Handler; import org. springframework. web. servlet. Model. And. View; @Controller. Advice("com. pk. springboard") public class Common. Exception. Advice { @Exception. Handler(Exception. class) private Model. And. View error. Model. And. View(Exception ex) { Model. And. View model. And. View = new Model. And. View(); model. And. View. set. View. Name("/error"); model. And. View. add. Object("exception", ex); } } return model. And. View;
5. 예외처리 v views 디렉토리에 error 디렉토리를 만들고 error. jsp 파일을 생성하고 작성 <%@ page language="java" content. Type="text/html; charset=UTF-8" page. Encoding="UTF-8"%> <%@ taglib prefix="c" uri="http: //java. sun. com/jsp/jstl/core" %> <!-- 이 페이지가 에러가 발생했을 때 출력되는 페이지라는 설정 --> <%@ page is. Error. Page="true" %> <!DOCTYPE html PUBLIC "-//W 3 C//DTD HTML 4. 01 Transitional//EN" "http: //www. w 3. org/TR/html 4/loose. dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- IE는 에러 내용이 512바이트가 안되면 자체 페이지를 출력하므로 강제로 512바이트 이상을 만들기 위한 코드 --> <meta name="dummy 1" content="에러페이지" /> <meta name="dummy 2" content="에러페이지" /> <meta name="dummy 3" content="에러페이지" /> <meta name="dummy 4" content="에러페이지" /> <meta name="dummy 5" content="에러페이지" /> <meta name="dummy 6" content="에러페이지" /> <meta name="dummy 7" content="에러페이지" /> <meta name="dummy 8" content="에러페이지" /> <meta name="dummy 9" content="에러페이지" />
5. 예외처리 <meta name="dummy 10" content="에러페이지" /> <meta name="dummy 11" content="에러페이지" /> <meta name="dummy 12" content="에러페이지" /> <meta name="dummy 13" content="에러페이지" /> <meta name="dummy 14" content="에러페이지" /> <meta name="dummy 15" content="에러페이지" /> <meta name="dummy 16" content="에러페이지" /> <title>예외발생</title> </head> <body> <%@ include file=". . /include/header. jsp"%> <h 4>${exception. get. Message()}</h 4> <ul> <c: for. Each var="stack" items="${exception. get. Stack. Trace() }"> <li>${stack. to. String()}</li> </c: for. Each> </ul> <%@ include file=". . /include/footer. jsp"%> </body> </html>
5. 예외처리 v servlet-context. xml 파일에 코드 추가 <default-servlet-handler/>
5. 예외처리 v web. xml 파일에 404 에러 코드가 발생했을 때 처리하는 설정을 추가 <error-page> <error-code>404</error-code> <location>/WEB-INF/views/error/404 code. jsp</location> </error-page>
5. 예외처리 v views 디렉토리에 error 디렉토리에 404 code. jsp 파일을 생성하고 작성 <%@ page language="java" content. Type="text/html; charset=UTF-8" page. Encoding="UTF-8"%> <%@ taglib prefix="c" uri="http: //java. sun. com/jsp/jstl/core" %> <!-- 이 페이지가 에러가 발생했을 때 출력되는 페이지라는 설정 --> <%@ page is. Error. Page="true" %> <!DOCTYPE html PUBLIC "-//W 3 C//DTD HTML 4. 01 Transitional//EN" "http: //www. w 3. org/TR/html 4/loose. dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- IE는 에러 내용이 512바이트가 안되면 자체 페이지를 출력하므로 강제로 512바이트 이상을 만들기 위한 코드 --> <meta name="dummy 1" content="에러페이지" /> <meta name="dummy 2" content="에러페이지" /> <meta name="dummy 3" content="에러페이지" /> <meta name="dummy 4" content="에러페이지" /> <meta name="dummy 5" content="에러페이지" /> <meta name="dummy 6" content="에러페이지" /> <meta name="dummy 7" content="에러페이지" />
5. 예외처리 <meta name="dummy 8" content="에러페이지" /> <meta name="dummy 9" content="에러페이지" /> <meta name="dummy 10" content="에러페이지" /> <meta name="dummy 11" content="에러페이지" /> <meta name="dummy 12" content="에러페이지" /> <meta name="dummy 13" content="에러페이지" /> <meta name="dummy 14" content="에러페이지" /> <meta name="dummy 15" content="에러페이지" /> <meta name="dummy 16" content="에러페이지" /> <title>예외발생</title> </head> <body> <%@ include file=". . /include/header. jsp"%> <h 4>URL이 잘못되었습니다. <br/> 빠른 시간에 복구하겠습니다. </h 4> <%@ include file=". . /include/footer. jsp"%> </body> </html>
- Slides: 29