반응형

안녕들 하시죠!

이번 시간에도 '사내 DB테이블'을 이용한 문제풀이를 통해 ORACLE SQL 쿼리문을 복습해보겠습니다.

 

언어 및 툴

ORACLE DATABASE, SQLDEVELOPER

 

테이블 생성 참고

2019/09/28 - [Database] - ORACLE SQL 쿼리 복습을 위한 '사내 DB테이블' 세팅

 

쿼리 실행 순서

5 SELECT 
1 FROM 
2 WHERE
3 GROUP BY
4 HAVING
6 ORDER BY

 

문제

1. 사원수가 3명 이상인 부서명과 인원수를 출력하시오. ( group by, having )

having절 -- group by로 묶은 값들에 조건을 추가한다 (=where)

SELECT [그룹으로 묶은 컬럼명]
     , [집계할 컬럼명]
FROM [테이블명]
GROUP BY [그룹으로 묶을 컬럼명]
HAVING [그룹으로 묶은 값에 조건 추가]

count 함수 -- 테이블 전체 행 검색 ( count(*) )

                   특정 컬럼의 숫자 검색 ( count(컬럼명) )

1
2
3
4
5
select job
     , count(*)
from emp
group by job
having count(*>= 3;
cs

 

2. 직무 중 가장 적게 수입을 가지는 직무의 평균 월급을 출력하시오.
1
2
3
select min(AVG(sal)) 
from emp 
group by job;
cs

 

3. 사원번호, 사원이름, 부서이름, 부서번호를 출력하시오. ( Join )

Oracle 내부조인 -- 테이블간에 동일한 컬럼을 조인

1
2
3
4
5
6
7
select emp.ename
     , emp.empno
     , dept.dname
     , dept.deptno
from emp
   , dept
where emp.deptno = dept.deptno;
cs

Natural 조인 -- 테이블간에 동일한 모든 컬럼을 조인 

1
2
3
4
5
select ename
     , empno
     , dname
     , deptno
from emp natural join dept;
cs

Join On -- 조인의 세부조건을 지정할 수 있다.

1
2
3
4
5
6
select ename
     , empno
     , dname
     , dept.deptno
from emp join dept
on emp.deptno = dept.deptno;
cs

Join Using -- 컬럼을 선택해서 조인.

1
2
3
4
5
6
select ename
     , empno
     , dname
     , deptno
from emp join dept
using (deptno);
cs

 

 

 

4. 부서가 30이고, 급여가 1500이상인 사원의 이름, 급여, 부서명, 부서번호를 출력하시오. ( Join on )
1
2
3
4
5
6
7
8
select emp.ename
     , emp.sal
     , dept.dname
     , dept.deptno
from emp join dept
on emp.deptno = dept.deptno
where emp.deptno = 30
and sal >= 1500;
cs

 

5. 사원수가 5명이 넘는 부서의 부서명과 사원수를 출력하시오.

 

1
2
3
4
5
6
7
8
select dept.dname
     , count(*)
from emp
   , dept
where emp.deptno = dept.deptno
group by emp.deptno
       , dept.dname
having count(*>= 5;
cs

 

6. ADAMS 사원이 근무하는 부서이름과 지역이름을 출력하시오.
1
2
3
4
5
6
7
select dept.dname
     , dept.loc
     , emp.ename
from emp
   , dept
where emp.deptno = dept.deptno
and emp.ename = 'ADAMS';
cs

 

7. NEW YORK 이나 DALLAS 지역에 근무하는 사원들의 사원번호, 사원이름을 사원번호 순으로 검색하시오.
1
2
3
4
5
6
7
select e.empno
     , e.ename
from emp e
   , dept d
where e.deptno = d.deptno
and (d.loc = 'NEWYORK' or d.loc='DALLAS')
order by e.empno;
cs

오늘은 여기까지입니다 감사합니다.

반응형

안녕들 하시죠!

저번시간부터 개인 홈페이지 프로젝트에 기능들을 하나 하나 추가해보고 있습니다.

저번 게시물에 dao, vo, servlet, service, exception 패키지를 추가하고 가겠습니다.

다음 게시물부터는 기능을 하나씩만 추가할 생각이라 글이 좀 짧아질 것 같습니다.

 

사용언어와 문법

Oracle database, HTML5, Javascript, JSP/Servlet, JQuery, EL, JSTL 등

 

MVC 패턴

 

DupchkServlet(중복체크), JoinServlet, LoginServlet -> CustomerService -> CustomerDAO

 

SearchZipServlet(우편번호찾기) -> ZipService -> ZipDAO

 

뒷단 구성에 사용될 클래스들

 

DupchkServlet(중복체크), JoinServlet, LoginServlet -> CustomerService -> CustomerDAO

DupchkServlet

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
package Servlet;
 
import java.io.IOException;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import my.service.CustomerService;
 
 
@WebServlet("/dupchk")
public class DupchkServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private CustomerService service;
    
    public DupchkServlet() {
        service = new CustomerService();
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        
        // Service 단 연결
        CustomerService service = new CustomerService();
        String str;
        str = service.dupchk(id);
                        
        request.setAttribute("result", str);
        String path= "/result.jsp";
        RequestDispatcher rd = request.getRequestDispatcher(path);
        rd.forward(request, response);
        
    }
}
cs

JoinServlet

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
package Servlet;
 
import java.io.IOException;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import my.service.CustomerService;
import my.vo.Customer;
 
@WebServlet("/join")
public class JoinServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private CustomerService service;
    
    public JoinServlet() {
        super();
        service = new CustomerService();
    }
 
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        String pwd = request.getParameter("pwd");
        String name = request.getParameter("name");
        String buildingno = request.getParameter("buildingno");
        String addr = request.getParameter("zipcode"+ "/" + request.getParameter("addr1"+ "/" + request.getParameter("addr2");
        
        Customer c = new Customer();
        c.setId(id);
        c.setPwd(pwd);
        c.setName(name);
        c.setBuildingno(buildingno);
        c.setAddr(addr);
        
        String str = service.join(c);
        request.setAttribute("result",  str);
        
        String path = "/result.jsp";    
        RequestDispatcher rd = request.getRequestDispatcher(path);
        rd.forward(request, response);
        
    }
}
cs

LoginServlet

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
package Servlet;
 
import java.io.IOException;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
 
import my.service.CustomerService;
 
@WebServlet("/login"// servlet url,로그인 요청을 하게 되면 가장 먼저 LoginServlet을 호출하게 된다.
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private CustomerService service;
    
    public LoginServlet() { // 생성자에서 service객체 자동 생성
        service = new CustomerService();
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
 
        String path = "/result.jsp";
        
        String id = request.getParameter("id");
        String pwd = request.getParameter("pwd");
        
        HttpSession session = request.getSession();
        session.removeAttribute("loginInfo");
        
        String str = service.login(id, pwd);
        /*--로그인성공시 HttpSession객체의 속성으로 추가 --*/
        JSONParser parser = new JSONParser();
        try {
            Object obj = parser.parse(str);
            JSONObject jsonObj = (JSONObject)obj;
            if((Long)jsonObj.get("status"== 1) {//로그인 성공!
                session.setAttribute("loginInfo", id);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        request.setAttribute("result", str);
        RequestDispatcher rd = request.getRequestDispatcher(path);            
        rd.forward(request, response);        
    }
}
cs

CustomerService

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
package my.service;
 
import java.sql.SQLException;
 
import org.json.simple.JSONObject;
 
import my.dao.CustomerDAO;
import my.exception.NotFoundException;
import my.vo.Customer;
 
public class CustomerService {
    private CustomerDAO dao;
 
    public CustomerService() {
        dao = new CustomerDAO();
    }
    
    public String login(String id, String pwd) { 
        int status = -1;
        
        try {
            Customer c = dao.selectById(id);
            if (c.getPwd().equals(pwd) && c.getStatus() == 1) {
                status = 1;    
            } 
            else if(c.getStatus() == 0){
                status = -1;     
            }
                 
        } catch (SQLException | NotFoundException e) {
            e.printStackTrace();
        }
        
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("status", status);
        jsonObj.put("id", id);
        String str = jsonObj.toString();
        return str;
    }
 
    public String join(Customer c) {
        int status = -1;
        try {
            status = dao.joinMember(c);
        } catch (NotFoundException e) {
            e.printStackTrace();
            status = -1;
        }
        String str = "{\"status\":\"" + status + "\"}";
        return str;
    }
 
    public String dupchk(String id) {
        int status = 1;
        try {
            dao.selectById(id);
            status = -1;
        } catch (SQLException | NotFoundException e) {
            e.printStackTrace();
            status = 1;
        }
        
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("status", status);
 
        String str = jsonObj.toString();
        return str;
    }
}    
cs

CustomerDAO

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
package my.dao;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
 
import my.exception.NotFoundException;
import my.vo.Customer;
import my.dao.CustomerDAO;
 
public class CustomerDAO {
    // oracle db와의 연동
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
 
    String url = "jdbc:oracle:thin:@localhost:1521:xe";
    String user = "C##ora_user";
    String pw = "hong";
 
    public CustomerDAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
 
    public void CloseDB() throws SQLException {
        if (rs != null)
            rs.close();
        if (pstmt != null)
            pstmt.close();
        if (con != null)
            con.close();
    }
 
    public Customer selectById(String id) throws SQLException, NotFoundException { // login, dupchk할때 SELECT문으로 DB에서 ID를 찾는다.
        Customer customer = new Customer();
        String SelectSQL = "Select * from customers where Customer_id=?";
 
        con = DriverManager.getConnection(url, user, pw);
        pstmt = con.prepareStatement(SelectSQL);
        pstmt.setString(1, id);
        rs = pstmt.executeQuery();
 
        String dbid = null;
        String dbpwd = null;
        String dbaddr = null;
        String dbname = null;
        String dbbuildingno = null;
        int customerStatus = 0;
 
        if (rs.next()) {
            dbid = rs.getString("customer_id");
            dbpwd = rs.getString("customer_pwd");
            customerStatus = rs.getInt("customer_status");
            dbaddr = rs.getString("CUSTOMER_ADDR");
            dbname = rs.getString("CUSTOMER_NAME");
            dbbuildingno = rs.getString("customer_buildingno");
 
            customer.setId(dbid);
            customer.setPwd(dbpwd);
            customer.setStatus(customerStatus);
            customer.setAddr(dbaddr);
            customer.setName(dbname);
            customer.setBuildingno(dbbuildingno);
 
        } else {
            throw new NotFoundException("아이디가 존재하지 않습니다 !");
        }
        CloseDB();
        return customer;
    }
 
    public int joinMember(Customer c) throws NotFoundException { // join 할때 DB에 INSERT문으로 삽입
 
        int status = -1;
        String query = "INSERT INTO CUSTOMERS(CUSTOMER_ID,CUSTOMER_STATUS,CUSTOMER_PWD,CUSTOMER_NAME,CUSTOMER_BUILDINGNO,CUSTOMER_ADDR) VALUES ( ?, ?, ?, ?, ?, ?)";
 
        try {
            con = DriverManager.getConnection(url, user, pw);
            pstmt = con.prepareStatement(query);
            pstmt.setString(1, c.getId());
            pstmt.setInt(21);
            pstmt.setString(3, c.getPwd());
            pstmt.setString(4, c.getName());
            pstmt.setString(5, c.getBuildingno());
            pstmt.setString(6, c.getAddr());
            pstmt.executeUpdate();
            status = 1;
        } catch (SQLException e) {
            e.printStackTrace();
            status = -1;
        }
        try {
            CloseDB();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return status;
    }
}
cs

 

SearchZipServlet(우편번호찾기) -> ZipService -> ZipDAO

SearchZipServlet

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
package Servlet;
 
import java.io.IOException;
 
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import my.service.ZipService;
 
@WebServlet("/searchzip")
public class SearchZipServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    public SearchZipServlet() {
        super();
       
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String input = request.getParameter("doro");
        ZipService service = new ZipService();
        String str = service.searchZip(input);
        
        request.setAttribute("result", str);
        String path= "/result.jsp";
        RequestDispatcher rd = request.getRequestDispatcher(path);
        rd.forward(request, response);
    }
}
 
cs

ZipService

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
package my.service;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
 
import my.dao.ZipDAO;
 
public class ZipService {
    private ZipDAO zdao;
    public ZipService(){
        zdao = new ZipDAO() ;
    }
    
    public String searchZip(String doro) {
        List<Map<String,String>> addrlist = new ArrayList<Map<String,String>>();
        Map<StringString> addrmap;
        addrlist = zdao.selectByDoro(doro);
        
        JSONArray jsonArr = new JSONArray();
        
        for(int i = 0 ; i < addrlist.size(); i++) {
            addrmap = addrlist.get(i);
            JSONObject obj = new JSONObject();
            obj.put("zipcode", addrmap.get("zipcode"));
            obj.put("doroaddr", addrmap.get("doroaddr"));
            obj.put("buildingaddr", addrmap.get("buildingaddr"));
            obj.put("buildingno", addrmap.get("buildingno"));
                
            jsonArr.add(obj);
        }
        return jsonArr.toString();
    }
}
cs

ZipDAO

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
package my.dao;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class ZipDAO {
    String url = "jdbc:oracle:thin:@localhost:1521:xe";
    String user = "C##ora_user";
    String pw = "hong";
 
    public List<Map<StringString>> selectByDoro(String doro){
        
        List<Map<String,String>> addrlist = new ArrayList<Map<String,String>>();
        Connection conn = null;    
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        String doroname  = "SELECT zipcode,  \r\n" + 
                "sido||' ' \r\n" + 
                "|| sigungu ||NVL2(sigungu,' ', '')\r\n" + 
                "|| eupmyun ||NVL2(eupmyun,' ', '')\r\n" + 
                "|| doro ||' ' \r\n" + 
                "|| building1\r\n" + 
                "|| DECODE(building2,'0', '', '-'||building2) ||' ' \r\n" + 
                "|| '('|| dong || ri || DECODE(building, '', '', ',' ||building) ||')'" + 
                ","+
                "sido ||' ' \r\n" + 
                "|| sigungu ||NVL2(sigungu,' ', '')\r\n" + 
                "|| eupmyun ||NVL2(eupmyun,' ', '')\r\n" + 
                "|| dong || ri ||' ' ||  zibun1 || DECODE(zibun2, '0', '',  '-'|| zibun2)    || DECODE(building, '', '', ' (' ||building ||')') " +
                ","+
                "buildingno \r\n" +
                "FROM post\r\n" + 
                "WHERE (doro || ' ' || building1 || DECODE(building2,'0', '', '-'||building2)) LIKE ?";
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            
            conn = DriverManager.getConnection(url,    user, pw);
            pstmt =  conn.prepareStatement(doroname);
            pstmt.setString(1"%" + doro + "%");
            rs = pstmt.executeQuery();
            
            String zipcode ="";
            String doroaddr="";
            String buildingaddr="";
            String buildingno="";
        
            while(rs.next()) {
                zipcode = rs.getString(1);
                doroaddr = rs.getString(2);
                buildingaddr = rs.getString(3);
                buildingno = rs.getString(4);
                
                Map<StringString> resultMap = new HashMap<StringString>();
                resultMap.put("zipcode", zipcode);
                resultMap.put("doroaddr", doroaddr);
                resultMap.put("buildingaddr", buildingaddr);
                resultMap.put("buildingno", buildingno);
                addrlist.add(resultMap);
            }
        } catch(ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(rs != null) {
                try {
                    rs.close();
                }
                catch (SQLException e) {}
            }
            if(pstmt != null) {
                try {
                    pstmt.close();
                }
                catch (SQLException e) {}
            }
            if(conn != null) {
                try {
                    conn.close();
                }
            catch (SQLException e) {}
            }
        }
        return addrlist;
    }
}
cs

 

 

 

NotFoundException, vo (Customer, Post)

NotFoundException

1
2
3
4
5
6
7
8
9
10
11
12
13
package my.exception;
 
public class NotFoundException extends Exception{
 
    // 예외 전송용 에러 클래스
    public NotFoundException() {
        super();
    }
 
    public NotFoundException(String message) {
        super(message);
    }
}
cs

Customer

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
package my.vo;
 
public class Customer {
    // 고객에 대한 정보가 담겨있다
    // 오라클의 customer table의 한행의 자료를 표현하기위해 
    // JVM에서 일할 클래스를 만든다
    private String id;
    private String pwd;
    private String name;
    private String buildingno;
    // 객체와 객체사이에서도 관계를 맺을 필요가 있다
    // 현재 customer table과  post table 과 일대다 관계이므로 이를 표현할 필요가 있다
    // 다시 말해 테이블간의 관계가 있다면 클래스간의 관계로 표현해줘야 한다
    private Post post;
    // has a 관계
    private String addr;
    // is a 관계
    private int status;
    // 기본생성자
    public Customer() {
        super();
    }
    
    // 모든 인스턴스 변수 초기화 생성자
    public Customer(String id, String pwd, String name, String buildingno, Post post, String addr, int status) {
        super();
        this.id = id;
        this.pwd = pwd;
        this.name = name;
        this.buildingno = buildingno;
        this.post = post;
        this.addr = addr;
        this.status = status;
    }
    
    // Setter & Getter
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getBuildingno() {
        return buildingno;
    }
    public void setBuildingno(String buildingno) {
        this.buildingno = buildingno;
    }
    public Post getPost() {
        return post;
    }
    public void setPost(Post post) {
        this.post = post;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    public int getStatus() {
        return status;
    }
    public void setStatus(int status) {
        this.status = status;
    }
}
cs

Post

package my.vo;

public class Post {
	// Post 테이블의 자료를 JVM 자료로 만든다
	private String zipcode;
	private String sido;
	private String sidoe;
	private String sigungu;
	private String sigungue;
	private String eupmyun;
	private String eupmyune;
	private String dorocode;
	private String doro;
	private String doroe;
	private String jiha;
	private String building1;
	private String building2;
	private String buildingno;
	private String daryang;
	private String building;
	private String dongcode;
	private String dong;
	private String ri;
	private String dongadmin;
	private String san;
	private String zibun1;
	private String zibunserial;
	private String zibun2;
	private String zipoldcode;
	private String zipcodeserial;

	// 기본 생성자
	public Post() {
		super();
	}

	// 모든 매개변수 생성자
	public Post(String zipcode, String sido, String sidoe, String sigungu, String sigungue, String eupmyun,
			String eupmyune, String dorocode, String doro, String doroe, String jiha, String building1,
			String building2, String buildingno, String daryang, String building, String dongcode, String dong,
			String ri, String dongadmin, String san, String zibun1, String zibunserial, String zibun2,
			String zipoldcode, String zipcodeserial) {
		super();
		this.zipcode = zipcode;
		this.sido = sido;
		this.sidoe = sidoe;
		this.sigungu = sigungu;
		this.sigungue = sigungue;
		this.eupmyun = eupmyun;
		this.eupmyune = eupmyune;
		this.dorocode = dorocode;
		this.doro = doro;
		this.doroe = doroe;
		this.jiha = jiha;
		this.building1 = building1;
		this.building2 = building2;
		this.buildingno = buildingno;
		this.daryang = daryang;
		this.building = building;
		this.dongcode = dongcode;
		this.dong = dong;
		this.ri = ri;
		this.dongadmin = dongadmin;
		this.san = san;
		this.zibun1 = zibun1;
		this.zibunserial = zibunserial;
		this.zibun2 = zibun2;
		this.zipoldcode = zipoldcode;
		this.zipcodeserial = zipcodeserial;
	}

	// Setter & Getter
	public String getZipcode() {
		return zipcode;
	}

	public void setZipcode(String zipcode) {
		this.zipcode = zipcode;
	}

	public String getSido() {
		return sido;
	}

	public void setSido(String sido) {
		this.sido = sido;
	}

	public String getSidoe() {
		return sidoe;
	}

	public void setSidoe(String sidoe) {
		this.sidoe = sidoe;
	}

	public String getSigungu() {
		return sigungu;
	}

	public void setSigungu(String sigungu) {
		this.sigungu = sigungu;
	}

	public String getSigungue() {
		return sigungue;
	}

	public void setSigungue(String sigungue) {
		this.sigungue = sigungue;
	}

	public String getEupmyun() {
		return eupmyun;
	}

	public void setEupmyun(String eupmyun) {
		this.eupmyun = eupmyun;
	}

	public String getEupmyune() {
		return eupmyune;
	}

	public void setEupmyune(String eupmyune) {
		this.eupmyune = eupmyune;
	}

	public String getDorocode() {
		return dorocode;
	}

	public void setDorocode(String dorocode) {
		this.dorocode = dorocode;
	}

	public String getDoro() {
		return doro;
	}

	public void setDoro(String doro) {
		this.doro = doro;
	}

	public String getDoroe() {
		return doroe;
	}

	public void setDoroe(String doroe) {
		this.doroe = doroe;
	}

	public String getJiha() {
		return jiha;
	}

	public void setJiha(String jiha) {
		this.jiha = jiha;
	}

	public String getBuilding1() {
		return building1;
	}

	public void setBuilding1(String building1) {
		this.building1 = building1;
	}

	public String getBuilding2() {
		return building2;
	}

	public void setBuilding2(String building2) {
		this.building2 = building2;
	}

	public String getBuildingno() {
		return buildingno;
	}

	public void setBuildingno(String buildingno) {
		this.buildingno = buildingno;
	}

	public String getDaryang() {
		return daryang;
	}

	public void setDaryang(String daryang) {
		this.daryang = daryang;
	}

	public String getBuilding() {
		return building;
	}

	public void setBuilding(String building) {
		this.building = building;
	}

	public String getDongcode() {
		return dongcode;
	}

	public void setDongcode(String dongcode) {
		this.dongcode = dongcode;
	}

	public String getDong() {
		return dong;
	}

	public void setDong(String dong) {
		this.dong = dong;
	}

	public String getRi() {
		return ri;
	}

	public void setRi(String ri) {
		this.ri = ri;
	}

	public String getDongadmin() {
		return dongadmin;
	}

	public void setDongadmin(String dongadmin) {
		this.dongadmin = dongadmin;
	}

	public String getSan() {
		return san;
	}

	public void setSan(String san) {
		this.san = san;
	}

	public String getZibun1() {
		return zibun1;
	}

	public void setZibun1(String zibun1) {
		this.zibun1 = zibun1;
	}

	public String getZibunserial() {
		return zibunserial;
	}

	public void setZibunserial(String zibunserial) {
		this.zibunserial = zibunserial;
	}

	public String getZibun2() {
		return zibun2;
	}

	public void setZibun2(String zibun2) {
		this.zibun2 = zibun2;
	}

	public String getZipoldcode() {
		return zipoldcode;
	}

	public void setZipoldcode(String zipoldcode) {
		this.zipoldcode = zipoldcode;
	}

	public String getZipcodeserial() {
		return zipcodeserial;
	}

	public void setZipcodeserial(String zipcodeserial) {
		this.zipcodeserial = zipcodeserial;
	}
}

 

HomeEx1.war
4.10MB

 

오늘은 여기까지입니다 감사합니다 !

반응형

 

안녕들 하시죠!

이번 시간에도 '사내 DB테이블'을 이용한 문제풀이를 통해 ORACLE SQL 쿼리문을 복습해보겠습니다.

 

언어 및 툴

ORACLE DATABASE, SQLDEVELOPER

 

테이블 생성 참고

2019/09/28 - [Database] - ORACLE SQL 쿼리 복습을 위한 '사내 DB테이블' 세팅

 

쿼리 실행 순서

5 SELECT 
1 FROM 
2 WHERE
3 GROUP BY
4 HAVING
6 ORDER BY

 

문제

1. 직책이 SALESMAN, ANALYST인 사람의 모든 정보를 출력하시오. ( or, like, in, any, some )
1
2
3
4
select *
from emp
where job = 'SALESMAN' 
or job = 'ANALYST';
cs
 
1
2
3
4
select *
from emp
where job like 'S%' 
or job like 'A%';
cs

 

1
2
3
4
5
6
7
8
9
10
11
select *
from emp
where job in ('SALESMAN''ANALYST');
 
select *
from emp
where job = any ('SALESMAN''ANALYST');
 
select *
from emp
where job = some ('SALESMAN''ANALYST');
cs

 

2. 1981년 5월 1일 ~ 1982년 2월 사이에 입사한 사원들의 모든 정보를 부서번호순(오름차순)으로 검색하시오. ( TO_DATE )
1
2
3
4
5
select *
from emp
where hiredate >= TO_DATE('19810501''yyyymmdd'
and hiredate < TO_DATE('19820228''yyyymmdd')
order by deptno;
cs

 

3. 1981년에 입사한 사원의 이름과 사원번호를 출력하는데 사원번호가 내림차순으로 정렬하시오. ( TO_CHAR )
1
2
3
4
5
6
select ename
     , empno
from emp
where hiredate >= '19810101'
and hiredate <= '19811231'
order by empno desc;
cs
1
2
3
4
5
select ename
     , empno
from emp
where to_char(hiredate,'YYYY'= '1981'
order by empno desc;
cs

 

4. 직급이 SALESMAN 일 경우 급여 * 1.1, CLERK 일 경우 급여 * 1.3, MANAGER 일 경우 급여 * 1.5 를 하고 모든 정보를 출력하시오. ( DECODE )

DECODE 함수 = ( IF-ELSE )

ex) DECODE(컬럼, 조건1, 결과1, 조건2, 결과2....)

1
2
3
4
5
6
7
select empno
     , job
     , ename
     , sal
     , decode(job, 'SALESMAN', sal*1.1'CLERK', sal*1.3'MANAGER', sal*1.5, sal) as 인상된급여 
from emp;
 
cs

 

 

 

 

 

 

 

5. 모든 사원들에게 커미션을 200씩 추가하여 사원이름, 커미션 값을 출력하시오. ( nvl )

NVL 함수 = 값이 NULL인 경우 지정값을 출력한다. NVL("값", "지정값")

NVL2 함수 = 값이 NULL이 아닌 경우 지정값1을 출력하고 NULL인 경우 지정값2를 출력한다. NVL2("값", "지정값1", "지정값2")

1
2
3
select ename
     , nvl(comm,0+ 200 
from emp;
cs

 

6.  커미션을 가지고 있는 사원은 Y, 커미션이 NULL값인 사원은 N을 포함하여 사원이름과 커미션 값을 출력하시오.( nvl2 )
1
2
3
select ename
     , nvl2(comm, 'Y''N'
from emp;
cs

 

7. 1981년 입사자들의 평균 임금을 출력하시오.
1
2
3
select AVG(sal)
from emp
where TO_CHAR(hiredate,'YYYY'= '1981';
cs

 

8. 사원번호, 사원이름, 총 급여(SAL+COMM)을 출력하시오. 
1
2
3
4
select empno
     , ename
     , sal+nvl(comm,0)
from emp;
cs

 

9. SALESMAN 의 커미션 평균을 출력하시오. ( group by )

 

GROUP BY 함수 = 특정 컬럼을 기준으로 집계를 내는데에 사용한다.

SELECT [그룹으로 묶은 컬럼명]
     , [집계할 컬럼명]
FROM [테이블명]
GROUP BY [그룹으로 묶을 컬럼명]
1
2
3
4
5
select job
     , AVG(nvl(comm,0))
from emp
where job='SALESMAN'
group by job;
cs

 

오늘은 여기까지입니다 감사합니다 !

반응형

 

안녕들 하시죠!

이번 시간부터 '사내 DB테이블'을 이용한 문제풀이를 통해 ORACLE SQL 쿼리문을 기초부터 복습할 생각입니다.

 

언어 및 툴

ORACLE DATABASE, SQLDEVELOPER

 

테이블 생성 참고

2019/09/28 - [Database] - ORACLE SQL 쿼리 복습을 위한 '사내 DB테이블' 세팅

 

쿼리 실행 순서

5 SELECT 
1 FROM 
2 WHERE
3 GROUP BY
4 HAVING
6 ORDER BY

 

문제

1.  부서번호 10번인 사원들의 사원번호, 사원이름, 월급을 출력하시오.
1
2
3
select empno, ename, sal
from emp
where deptno=10;
cs

 

2.  사원번호 7369인 사원 이름, 입사일, 부서번호를 출력하시오.
1
2
3
select ename as 사원이름, hiredate as 입사일, deptno as 부서번호
from emp
where empno=7369;
cs

 

3. 사원번호 7300크고 7400 작은 사원 이름, 입사일, 부서번호를 출력하시오.
1
2
3
select ename as 사원이름, hiredate as 입사일, deptno as 부서번호
from emp
where empno > 7300 AND empno < 7400;
cs

 

 

4.  EMP 모든 정보를 (사원번호 기준 내림차순으로) 검색하시오.

정렬
ASC - 오름차순 ( DEFAULT값 )
DESC - 내림차순

1
2
3
select *
from emp
order by empno desc;
cs

 

5. 이름이 S로 시작하는 모든 사람의 사원번호와 이름을 출력하시오.
1
2
3
select *
from emp
order by empno desc;
cs

 

6. 직속상관 사원번호가 없는 사원의 모든 정보를 검색하시오.
1
2
3
select *
from emp
where mgr is null;
cs

 

오늘은 여기까지입니다 감사합니다 !

반응형

 

안녕들 하시죠!

이번시간에는 뒤돌아서면 까먹는 SQL 쿼리 복습을 위한 테이블 세팅을 진행해보겠습니다.

 

 
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
CREATE TABLE DEPT( -- 부서테이블
    DEPTNO NUMBER(2CONSTRAINT pk_dept PRIMARY KEY-- 부서번호
    DNAME VARCHAR2(14), -- 부서이름
    LOC VARCHAR2(13-- 부서위치
);
INSERT INTO DEPT VALUES (10,'ACCOUNTING''NEW YORK');
INSERT INTO DEPT VALUES (20'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES (40'OPERATIONS''BOSTON');
CREATE TABLE EMP( -- 사원테이블
    EMPNO NUMBER(4CONSTRAINT pk_emp PRIMARY KEY-- 사원번호
    ENAME VARCHAR2(10), -- 사원이름
    JOB VARCHAR2(9), -- 직급
    MGR NUMBER(4), -- 직속상사 사원번호
    HIREDATE DATE, -- 입사날짜
    SAL NUMBER(7,2), -- 사원급여
    COMM NUMBER(7,2), -- 보너스(커미션)
    DEPTNO NUMBER(2-- 부서번호
);
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',null,TO_DATE('1981-11-17','yyyy-mm-dd'),5000,null,10);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,TO_DATE('1981-04-02','yyyy-mm-dd'),2975,null,20);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,TO_DATE('1981-05-01','yyyy-mm-dd'),2850,null,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,TO_DATE('1981-06-09','yyyy-mm-dd'),2450,null,10);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,TO_DATE('1987-04-19','yyyy-mm-dd'),3000,null,20);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,TO_DATE('1981-12-03','yyyy-mm-dd'),3000,null,20);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,TO_DATE('1981-02-20','yyyy-mm-dd'),1600,300,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,TO_DATE('1981-02-22','yyyy-mm-dd'),1250,500,30);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,TO_DATE('1981-09-28','yyyy-mm-dd'),1250,1400,30);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,TO_DATE('1981-09-08','yyyy-mm-dd'),1500,null,30);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,TO_DATE('1981-12-03','yyyy-mm-dd'),950,null,30);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,TO_DATE('1982-01-23','yyyy-mm-dd'),1300,null,10);
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,TO_DATE('1980-12-17','yyyy-mm-dd'),800,null,20);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,TO_DATE('1987-05-23','yyyy-mm-dd'),1100,null,20);
COMMIT;
CREATE TABLE salgrade( -- 급여테이블
    grade number(7,2), -- 급여등급
    losal number(7,2), -- 최저급여
    hisal number(7,2-- 최고급여
);
INSERT INTO salgrade values(1,700,1200);
INSERT INTO salgrade values(2,1201,1400);
INSERT INTO salgrade values(3,1401,2000);
INSERT INTO salgrade values(4,2001,3000);
INSERT INTO salgrade values(5,3001,9999);
 
COMMIT;
cs

 

반응형

 

안녕들 하시죠!

이번시간에는 기초 알고리즘 단골 문제인 입력받은 숫자 n까지의 소수갯수 구하기를 Java언어로 풀어보겠습니다.

 

문제

1부터 입력받은 숫자 n까지의 소수의 갯수를 구해라. 

 

풀이

입력받은 숫자까지의 모든 숫자를 나누기 연산을 통해 비교한다.

 

입력받은 n이 5라면, 2부터 시작해서 일일이 나누어본다.

2%2 , 3%2, 3%3, 4%2, 4%3, 4%4, 5%2, 5%3 ...

 

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
import java.util.Scanner;
 
public class Test1 {
 
    public static int getCount(int n) { // 입력받은 숫자까지의 소수를 계산하는 메소드
        int total = 0;
        int num = 2;
        
        while (num <= n) {
            for (int i = 2; i <= num; i++) {
                if (num % i == 0 && i != num) { // 입력받은 숫자 이외에 다른 숫자로 나누어 떨어질 경우 ( 소수가 아님 ) break
                    break;
                }
                if (num % i ==0 && i == num) { // for문의 i가 증가해 본인과 같아져 나누어 떨어질 경우 ( 소수 )
                    total++// 소수의 갯수를 count하는 total 증가
                }
            }
            num++;
        }
        return total;
    }
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int result = getCount(n);
        System.out.println(result);
    }
}
cs

 

문제점

 

숫자가 커지면 커질수록 일일이 비교하는 것은 효율성이 떨어집니다.

100000 정도의 숫자만 입력해도 계산시간이 꽤나 걸립니다.

아래에서 시간복잡도를 통한 비교를 해보겠습니다.

 

시간복잡도
1
2
3
4
5
6
7
8
9
10
11
12
 
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
 
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int result = getCount(n);
        System.out.println(result);
 
        long end = System.currentTimeMillis();
        System.out.println("수행시간 : " + (end - start)/1000.0);
    }
cs

 

 

 

에라토스테네스의 체 알고리즘

 

고대 그리스 수학자 에라토스테네스가 발견한 제곱근을 이용한 소수를 구하는 방법.

소수를 구하는 최적의 알고리즘이라고 합니다.

 

소수는 n의 배수가 아니고 입력받은 수를 그 수보다 작은 수들로 나누어서 떨어지면 소수가 아니다.

그러므로, 모두 나누어 볼 필요없이 n 제곱근 까지만 나누어서 떨어지면 소수가 아니다.

 

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
import java.util.Scanner;
 
public class Test1 {
 
    public static int getCount(int n) { // 입력받은 숫자까지의 소수를 계산하는 메소드
        int[] arr = new int[n + 1];
        int c = 0;
        for (int i = 2; i <= n; i++) { // 입력받은 숫자까지의 모든 숫자들을 배열에 초기화한다.
            arr[i] = i;
        }
 
        int Sqrt = (int) Math.sqrt(n);
        for (int i = 2; i <= Sqrt; i++) { // 제곱근 까지만 계산
            if (arr[i] == 0) { // 0으로 초기화 되어있는 숫자들은 건너뛴다.
                continue;
            }
            for (int j = i + i; j <= n; j += i) { // 현재 숫자(i)를 제외한 제곱수들은 모두 0으로 초기화.
                arr[j] = 0// 0이 들어있는 번지는 소수가 아니다.
            }
        }
        for (int i = 2; i <= n; i++) {
            if (arr[i] != 0) {
                c++;
            }
        }
        return c;
 
    }
 
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
 
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int result = getCount(n);
        System.out.println("개수 : " + result);
 
        long end = System.currentTimeMillis();
        System.out.println("수행시간 : " + (end - start) / 1000.0);
    }
}
cs

 

수행시간   

 

오늘은 여기까지입니다 감사합니다.

'알고리즘' 카테고리의 다른 글

Java 원형큐 구현  (0) 2019.06.23
Java 링크드리스트 구현  (0) 2019.06.22
백준 10828번 (스택)  (0) 2019.05.10
백준 2750번 (버블정렬)  (0) 2019.05.01
백준 1000번  (0) 2019.04.16
반응형

안녕들 하시죠!

이번시간에는 설정해놓은 Spring 프로젝트에서 Servlet을 매핑해보겠습니다.

 

web project를 만들었다면 프로젝트 내에 web.xml 파일이 있을것입니다.

열어보게되면 현재는 welcome-file만 존재합니다.

 

아래의 코드를 이용해 Servlet과 url 을 매핑해보겠습니다.

<servlet>
	<servlet-name>mySpring1</servlet-name>
	<servlet-class>
		org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>mySpring1</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

DispatcherServlet은 앞단에서 들어온 모든 요청을 받는 Servlet 입니다.

후에 클래스에 추가할 어노테이션을 통해 찾아갈 타겟을 설정합니다.

 

이제 servlet-name 으로 사용했던 mySpring1 이름을 이용해 xml 파일을 만들겠습니다.

WebContent -> WEB-INF -> new -> other

 

Spring -> Spring Bean Configuration File -> next

 

 

 

mySpring1-servlet.xml -> next

beans, context 체크 -> finish

이제 beans 영역에 context 입력.

<context:annotation-config/>
<context:component-scan base-package="control"/>

 

annotation-config : 스프링 컨테이너에서 annotation 태그(@Autowired)를 활성화 해 사용하겠다.

component-scan base-package="control" : control 패키지 내에서 @Component, @Service 등의 어노테이션을 활성화 해 스캔하겠다.

 

다음 게시물에서는 어노테이션에 대해 정리해보겠습니다. 

오늘은 여기까지입니다 감사합니다 !

반응형

안녕들 하시죠!

이번시간부터는 Spring framework에 대해 공부해보겠습니다.

우선 프로젝트를 만들고 이전에 작성했던 dao service servlet vo 패키지를 가져와 바꿔보는 형식으로 진행할 생각입니다.

 

1. Spring Tools 설치 및 프로젝트 생성

 

Eclipse 상단 바의 help -> Eclipse MarketPlace -> spring 검색 후 Spring Tools 3 버전 Install

 

 

Apach Tomcat v8.5이 깔려있는 상태이고 web module은 2.5버전으로 만들었습니다.

 

 

2. convert to Maven Project

자바 프로젝트의 build, dependency, compile, deploy 등을 수행하며 라이브러리의 사용을 위해 Maven 프로젝트로 전환. 

빌드 툴이자 의존성 관리 역할로 사용. ( 라이브러리 관리에 용이함 )

 

프로젝트 전환 시 생성되는 pom.xml

 

 

 

 

pom.xml 기본 태그들

* 프로젝트당 한개만 있는 프로젝트 객체 모델. . 프로젝트의 설정, 버전, 의존성 등을 알 수 있다.

1
2
3
4
5
6
7
8
9
  <modelVersion>4.0.0</modelVersion> <!-- pom.xml의 버전 -->
  <groupId>mySpring1</groupId> <!-- 제작자를 식별하기위한 프로젝트 그룹 ID -->
  <artifactId>mySpring1</artifactId> <!-- 이 프로젝트에 할당된 고유 ID -->
  <version>0.0.1-SNAPSHOT</version> <!-- 프로그램의 버전 -->
  <packaging>war</packaging> <!-- 프로젝트의 패키지 종류. 현재는 web프로젝트의 war파일 -->
  
  <build>
    <sourceDirectory>src</sourceDirectory> <!-- src 역할을 하는 디렉터리 위치 -->
    <plugins> <!-- build에서 사용할 plugin -->
cs

Dependency 관리

실제 라이브러리 파일이 있는 저장소 서버의 위치를 지정하고, 이 프로젝트에서 사용할 라이브러리가 무엇인지 지정 및 관리

dependency 태그로 정의만 해두면 maven이 repository에서 검색해 자동으로 추가해준다.

- 이번 프로젝트에서 사용할 라이브러리들

spring-mvc 5.0.2
spring-jdbc 5.0.2
mybatis 3.5.2
mybatis-spring 1.3.2
jstl 1.2
simple-json 1.1.1

 

1) maven repository 페이지로 이동

https://mvnrepository.com/

2) 원하는 라이브러리 검색

3) 원하는 버전 클릭

4) dependency 코드 영역 클릭 (복사)

5) <dependencies></dependencies> 코드 안에 붙여넣기 

* 한개의 dependencis 태그 안에 여러 라이브러리들을 붙여 넣어야합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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> <!-- pom.xml의 버전 -->
    <groupId>mySpring1</groupId> <!-- 제작자를 식별하기위한 프로젝트 그룹 ID -->
    <artifactId>mySpring1</artifactId> <!-- 이 프로젝트에 할당된 고유 ID -->
    <version>0.0.1-SNAPSHOT</version> <!-- 프로그램의 버전 -->
    <packaging>war</packaging> <!-- 프로젝트의 패키지 종류. 현재는 web프로젝트의 war파일 -->
 
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
 
    </dependencies>
cs

 

오늘은 프로젝트 생성과 라이브러리를 추가하는 부분까지 진행했습니다.

다음 게시물에서 이어서 진행하겠습니다. 

오늘은 여기까지입니다 감사합니다 !

+ Recent posts