반응형
Stacktrace:]을(를) 발생시켰습니다.
com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '���ѹα� ǥ�ؽ�' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)
	at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:132)
	at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2120)
	at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2143)
	at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1310)
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:967)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
	at org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
	at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115)
	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665)
	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
	at org.apache.jsp.connection_jsp._jspService(connection_jsp.java:137)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

 

MySQL 5.1.23 이상의 버전을 사용하면 MySQL 타임존의 시곤표현 포맷이 달라져서 Connector에서 인식을 하지 못합니다.

해결법은 MySQL 버전을 5.1.23으로 낮추거나 URL주소에 serverTimezone을 추가해 주어야 합니다.

 

<!-- path는 우리 프로젝트의 이름 / docbase는 www를 넣어 줌으로써 WebContent라는걸 알림 -->
<Context path="/UserChat" docBase="www">
<Resource
	name="jdbc/UserChat"
	auth="Container"
	type="javax.sql.DataSource"
	driverClassName="com.mysql.jdbc.Driver"
	loginTimeout="10"
	validationQuery="SELECT 1 FROM DUAL"
	maxWait="5000"
	username="id"
	password="pasword"
	testOnBorrow="true"
	url="jdbc:mysql://localhost:3308/UserChat" />
<ResourceLink type="javax.sql.data.DataSource"
	name="jdbc/UserChat"
	global="jdbc/UserChat" />
</Context>
<!-- path는 우리 프로젝트의 이름 / docbase는 www를 넣어 줌으로써 WebContent라는걸 알림 -->
<Context path="/UserChat" docBase="www">
<Resource
	name="jdbc/UserChat"
	auth="Container"
	type="javax.sql.DataSource"
	driverClassName="com.mysql.jdbc.Driver"
	loginTimeout="10"
	validationQuery="SELECT 1 FROM DUAL"
	maxWait="5000"
	username="root"
	password="111111"
	testOnBorrow="true"
	url="jdbc:mysql://localhost:3308/UserChat?serverTimezone=UTC" />
<ResourceLink type="javax.sql.data.DataSource"
	name="jdbc/UserChat"
	global="jdbc/UserChat" />
</Context>

url="jdbc:mysql://localhost:3308/UserChat?serverTimezone=UTC" 이 부분을 수정해주니 잘 작동이 되었습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

MySql install 버전을 다운로드 하시고 설치 하시면

Command Line Client 를 실행해 줍니다.

패스워드는 초기에 지정해주셨던 ROOT 계정의 비밀번호를 입력해 주시면 됩니다.

 

이렇게 DB를 만들어 주셨으면 위에 만들었던 DATABASE에 접속할 수 있도록 하나의 자바 빈즈를 만들어 주도록 하겠습니다.

user package에 UserDTO 클래스를 만들어 줍니다.

package user;

public class UserDTO {
	String userID;
	String userPassword;
	String userName;
	int userAge;
	String userGender;
	String userEmail;
	String userProfile;
	public String getUserID() {
		return userID;
	}
	public void setUserID(String userID) {
		this.userID = userID;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public int getUserAge() {
		return userAge;
	}
	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}
	public String getUserGender() {
		return userGender;
	}
	public void setUserGender(String userGender) {
		this.userGender = userGender;
	}
	public String getUserEmail() {
		return userEmail;
	}
	public void setUserEmail(String userEmail) {
		this.userEmail = userEmail;
	}
	public String getUserProfile() {
		return userProfile;
	}
	public void setUserProfile(String userProfile) {
		this.userProfile = userProfile;
	}
	
	
	
	
}

 

이제 MySQL Database와 JSP를 연동하기 위해서는 jdbc가 필요합니다.

GOOGLE에서 검색해서 다운 받으셔도 되지만 편의상 파일로 올리겠습니다.

mysql-connector-java-8.0.20.zip
4.48MB

우리는 MySQL Connector java.jar파일만 필요하기에 압축을 푸시고 앞의 파일을 복사해서 Eclipse내에

WEB-INF\lib 폴더안에 복사 붙여 넣기 해줍니다.

넣어준 파일에 오른쪽 마우스 우클릭을 하여 build path - add를 클릭하여 줍니다.

 

  그리고 WebContent안에 META-INF라는 폴더가 있습니다. 거기 안쪽에 하나의 context파일을 만들어 주도록 하겠습니다.

xml파일을 만들어 주시고 이름은 context.xml 으로 만들겠습니다.

<Resource
name: DataSource에 대한 JNDI이름
auth : 인증 주체
type: 데이터베이스 종류별 DataSource
driverClassName : 연결할 데이터베이스 종류에 따른 드라이버 클래스 이름
factory : 연결할 데이터베이스 종류에 따른 ConnectionPool 생성 클래스 이름
maxActive : 동시에 최대로 데이터베이스 연결할 수 있는 Connection 수
maxIdle : 동시에 idle 상태로 대기할 수 있는 최대 수
maxWait : 새로운 연결이 생길 때까지 기다릴 수 있는 최대 시간
user : 데이터베이스 접속 ID
password : 데이터베이스 접속 비밀번호
type : 데이터베이스 종류별 DataSource
url : 접속할 데이터 베이스 주소와 포트 번호 및 SID />
<!-- path는 우리 프로젝트의 이름 / docbase는 www를 넣어 줌으로써 WebContent라는걸 알림 -->
<Context path="/UserChat" docBase="www">
<Resource
	name="jdbc/UserChat"
	auth="Container"
	type="javax.sql.DataSource"
	driverClassName="com.mysql.jdbc.Driver"
	loginTimeout="10"
	validationQuery="SELECT 1 FROM DUAL"
	maxWait="5000"
	username="root"
	password="111111"
	testOnBorrow="true"
	url="jdbc:mysql://localhost:3308/UserChat?serverTimezone=UTC" />
<ResourceLink type="javax.sql.data.DataSource"
	name="jdbc/UserChat"
	global="jdbc/UserChat" />
</Context>

저는 port 번호를 3308로 설정을 하여서 url에 3308로 하였지만 수정 안하신 분들은 3306일거에요!

이렇게 설정이 완료되면 성공적으로 커넥션 풀을 이용할 수 있습니다.

 

이제 커넥션 풀을 이용할 수 있는지 테스트를 한번 해보겠습니다.

WebContent에 테스트 할 connection.jsp 파일을 만들어 주겠습니다.

<!DOCTYPE html>
<html>
<head>
<%@ page import="java.sql.*, javax.sql.*, java.io.*,javax.naming.InitialContext, javax.naming.Context" %>
</head>
<body>
	<%
		InitialContext initCtx = new InitialContext();
		Context envContext = (Context)initCtx.lookup("java:/comp/env");
		DataSource ds = (DataSource) envContext.lookup("jdbc/UserChat");
		Connection conn = ds.getConnection();
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("SELECT VERSION();");
		while(rs.next()){
			out.println("MySQL Version : " + rs.getString("version()"));
		}
		rs.close();
		stmt.close();
		conn.close();
		initCtx.close();
	%>
</body>
</html>

실행을 하게 되면 

저의 MySQL 버전이 나옵니다. 연결이 잘 됬나 봅니다^^

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

1. bootstrap 3.7.7 을 사용하겠습니다.

https://getbootstrap.com/docs/3.3/getting-started/

 

Getting started · Bootstrap

Bootstrap is downloadable in two forms, within which you'll find the following directories and files, logically grouping common resources and providing both compiled and minified variations. jQuery required Please note that all JavaScript plugins require j

getbootstrap.com

 

 

2. dynamic web project를 만들어 주겠습니다.

WebContent아래에 다운받은 Bootstrap 3종을 넣어줍니다. 그리고 우리가 따로 꾸밀 custom.css 파일을 하나 만들어 줍니다.

  메인 페이지를 구성할 index.jsp도 만들어 주겠습니다.

 

3. index.jsp에 메인 화면의 header부분을 만들어 주겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="text/html; charset=utf-8">
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/custom.css">
<title>JSP Ajax fxProbest</title>
<script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.js"></script>
</head>
<body>
	
	<% //userID를 초기화 해주고 session에서 userID값을 가져옵니다. 만약에 null이 아니라면 userID에 가져온 userID값을 넣어줍니다.
		String userID = null;
	if(session.getAttribute("userID") != null){
		userID = (String) session.getAttribute("userID");
	}
	%>
	<!-- 부트스트랩을 이용하여 메뉴를 만들어 주도록 하겠씁니다. -->
	<nav class="navbar navbar-default">
		<div class="navbar-header">
			<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" 
			data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
			</button>
			<a class="navbar-brand" href="index.jsp">ProbestSoft members chat</a>
		</div>
		<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
			<ul class="nav navbar-nav">
				<li class="active"><a href="index.jsp">메인</a>
			</ul>
			<% // userID가 null 이면 로그인이 되지 않은 경우
				if(userID == null){
			%>
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown">
					<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="buton" aria-haspopup="true"
					aria-expand="false">접속하기<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li><a href="login.jsp">로그인</a>
						<li><a href="join.jsp">회원가입</a>
					</ul>
				</li>
			</ul>
			<%
				// userID가 null이 아닐 경우 로그인이 되었다는 것.
				} else {
			%>
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown">
					<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
					aria-expand="false">회원관리<span class="caret"></span></a>
				</li>
			</ul>
			<%
				}
			%>
			
		</div>
	</nav>
</body>
</html>

 

출처: 안경잡이 개발자 나 동 빈 

반응형
블로그 이미지

꽃꽂이하는개발자

,

서블릿 매핑

2020/JSP SERVLET 2020. 5. 17. 19:19
반응형

web.xml servlet 매핑 설정.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>pro5</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>aaa</servlet-name>
  	<servlet-class>sec01.ex01.FirstServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>bbb</servlet-name>
  	<servlet-class>sec01.ex01.SecondServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>aaa</servlet-name>
  	<url-pattern>/first</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>bbb</servlet-name>
  	<url-pattern>/second</url-pattern>
 </servlet-mapping>
 
</web-app>

 

 

 

FirstServlet 

package sec01.ex01;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet{
	@Override
	public void init() throws ServletException{
		System.out.println("init 메서드 호출");
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
		System.out.println("doGet메서드 호출");
	}
	
	@Override
	public void destroy() {
		System.out.println("destory 메서드 호출");
	}
	
}

SecondServlet

package sec01.ex01;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SecondServlet extends HttpServlet{
	@Override
	public void init() throws ServletException{
		System.out.println("Init 메서드 호출");
		}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse rep) throws ServletException, IOException{
		System.out.println("doGet 메서드 호출");
	}
	
	@Override
	public void destroy() {
		System.out.println("destory 메서드 호출");
	}
}

 

탐캣을 실행하시고 웹브라우저에 http://localhost:8080/pro5/first or second를 하시면 Init 이 한번 실행되고 doGet메소드는 주소를 한번 입력할때마다 계속 console에 log가 출력되게 됩니다.

반응형

'2020 > JSP SERVLET' 카테고리의 다른 글

게시판 글 삭제 기능 구현  (0) 2020.01.06
글 수정 기능 구현  (0) 2020.01.03
글 상세 구현  (0) 2020.01.03
게시판 글쓰기(파일첨부) 구현  (0) 2020.01.03
모델 2 답변형 게시판 구현(게시판 테이블 생성)  (0) 2020.01.02
블로그 이미지

꽃꽂이하는개발자

,
반응형

  이클립스는 통합 개발 환경 도구이므로 일일이 직접 만들 필요 없이 이클립스에서 설정만 해주면 됩니다. 그러면 이클립스에서 자동으로 톰캣에 프로젝트를 등록시켜줍니다. 지금부터 이클립스에서 톰캣과 어떻게 연동하는지 보겠습니다.

 

1. 이클립스 하단의 Servers 탭을 선택하고 마우스 오른쪽 버튼을 클릭한 후 New> Server를 선택.

2. 서버 설정창의 Apache 항목에서 Tomcat v9.0 Server을 선택한 후 Next 클릭

 

3. 톰캣 설치 디렉터리를 설정하기 위해 Browse... 를 클릭하여 톰캣 홈 디렉터리 경로를 선택한 후 폴더 선택을 클릭합니다.

4. 설정 경로를 한 번 더 확인하고 Finish를 클릭합니다. 이클립스 하단의 Server 탭을 보면 다음과 같이 표시됩니다.

 

5. 이클립스에서 톰캣 컨테이너를 추가하면 다음과 같이 프로젝트 탐색기에 Servers 항목이 추가되면서 톰캣과 관련된 xml 파일들이 나타납니다. 이클립스에서 톰캣 컨테이너를 설정할 때 톰캣 루트 디렉터리에 있던 여러 가지 xml 설정 파일들이 이클립스 Project Explorer 상단에 자동으로 복사된 것입니다.

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

변수명

작성규칙
첫 번째 글자는 문자 or '$' or '_'이어야 하고 숫자로 시작할 수 없다. price, $price, _companyName
영어의 대소문자 구별 firname / firstName
첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다 maxSpeed, firstName
문자 수(길이)의 제한은 없다  
자바 예약어는 사용할 수 없다  

- 이중에서 변수명으로 할 수 있는 것은?

1. 7eleven

2. $eleven

3. class

4. if

5. false

6. null

 

데이터 타입

1. primitive type

 값의 종류 기본 타입 메모리 크기 값의 범위        
정수 byte 1 byte -128~ 127        
char 2 byte 0 ~ 65,535 혹은
'\ u0000' ~ '\ uffff'
       
short 2 byte  -32,768 ~ 32,767        
int 4 byte -2,147,483,648 ~ 2,147,483,647        
long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807        
       
실수 float 4 byte          
double 8 byte          
논리 boolean 1 byte true, false         

2. Reference type (4 byte)

class type, interface type, array type, enum type

 

char c = '';  (x)  //에러

char c = ' '; (o)

String str = ""; (o)

byte 타입은 char타입으로 자동 변환 시킬 수 없다 ( o )  ex)강제 타입 변환은 가능

byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)   (0)

참조변수와 같은 byte를 가진 원시타입 변수는?

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

  운영체제는 자바 프로그램을 바로 실행 할 수 없습니다. 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문이죠.  이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하고, 이것이 바로 자바 가상 기계(JVM: Java Virtual Machine)입니다. JVM은 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 합니다. 영어권에서는 컴퓨터를 흔히 기계라고 부르기 때문에 '자바를 실행시키는 가상의 기계'라고 해서 'JVM'이라는 용어가 나오게 된 것입니다.

  운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에 운영체제별로 자바 프로그램을 별도로 개발하는 것보다는 운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것이다. 따라서 개발자는 운영체제와 상관없이 자바 프로그램을 개발할 수 있습니다.

  바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적입니다. 자바 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행해야 하므로 JVM은 운영체제에 맞게 설치되어야 합니다. JVM은 JDK또는 JRE를 설치하면 자동으로 설치되는데, JDK와 JRE가 운영체제별로 제공됩니다. 

  

 

출처:  이것이 자바다 中

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

Spring MVC Project를 만들어 주겠습니다.

제목은 ex02로 하고 패키지 세팅은 책과 같이 org.zerock.controller 로 하겠습니다.

 

1. pom.xml의 수정

스프링의 버전과 java버전을 수정해주었습니다. 

	<properties>
		<java-version>1.8</java-version>
		<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>

 

스프링에 관련해서 추가적인 라이브러리로는 spring-tx, spring-jdbc, spring-test가 필요합니다.

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>    
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

 

MyBatis를 이용할 것이므로 HikariCP, MyBatis, mybatis-spring, Log4jdbc 라이브러리들도 추가합니다.

		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
			<version>2.7.8</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>org.bgee.log4jdbc-log4j2</groupId>
			<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
			<version>1.16</version>
		</dependency>

 

테스트와 Lombok을 위해서 jUnit 버전을 변경하고, Lombok을 추가합니다. jUnit의 경우 4.7로 설정되어 있으므로 반드시 기존 설정을 변경해 주도록합니다.

<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency> 
		
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.0</version>
			<scope>provided</scope>
		</dependency>

 

servlet 3.1(혹은 3.0)을 제대로 사용하기 위해서는 pom.xml에 있던 서블릿 2.5버전이 아닌 3.0이상으로 수정합니다.

<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>

 

Servlet 3.1버전을 제대로 활용하고, JDK8의 기능을 활용하기 위해서 Maven 관련 Java 버전을 1.8로 수정합니다.

 	<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>

 

이제 만든 프로젝트를 선택하고 Maven > Update Project를 실행합니다.

 

마지막으로 Oracle JDBC Driver를 프로젝트의 Build Path에 추가하고, Deployment Assembly에도 추가합니다.

 

 

 

출처: 코드로 배우는 스프링 웹 프로젝트

반응형
블로그 이미지

꽃꽂이하는개발자

,