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
package model;
 
public class Student {
    private int id;
    private String name;
    private int grade;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getGrade() {
        return grade;
    }
    public void setGrade(int grade) {
        this.grade = grade;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", grade=" + grade + "]";
    }
    
}
 
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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="dao.IStudentDao">
    <select id="selectAll" resultType="student">
        select * from student
    </select>
    <select id="selectOne" parameterType="int" resultType="student">
        select * from student where id=#{id}
    </select>
    <insert id="insertStudent" parameterType="student">
        insert into student values (#{id}, #{name}, #{grade})
    </insert>
    <update id="updateStudent" parameterType="student">
        update student set name=#{name}, grade=#{grade} where id=#{id}
    </update>
    <delete id="deleteStudent" parameterType="int">
        delete from student where id=#{id}
    </delete>
</mapper>

cs* 필요한 쿼리 작성    



1
2
3
4
5
6
7
8
9
10
11
12
13
14
package dao;
 
import java.util.List;
 
import model.Student;
 
public interface IStudentDao {
    public List<Student> selectAll();
    public void insertStudent(Student student);
    public void updateStudent(Student student);
    public void deleteStudent(int id);
    public Student selectOne(int id);
}
 

cs필요한 함수작성


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
package service;
 
import java.util.List;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import dao.IStudentDao;
import model.Student;
 
@Service
public class StudentService {
    @Autowired
    private IStudentDao sDao;
    
    public List<Student> getStudentList(){
        return sDao.selectAll();
    }
    public void addStudent(Student student){
        sDao.insertStudent(student);
    }
    public void modifyStudent(Student student){
        sDao.updateStudent(student);
    }
    public void deleteStudent(int id){
        sDao.deleteStudent(id);
    }
    public void getStudentOne(int id){
        sDao.selectOne(id);
    }
}
 
cs


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
package controller;
 
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 model.Student;
import service.StudentService;
 
@Controller
public class StudentController {
 
    @Autowired
    private StudentService service;
    
    //studentList.do : 학생 리스트 보여주는 페이지를 요청
    @RequestMapping("studentList.do")
    public String studentList(Model model){
        model.addAttribute("studentList", service.getStudentList());
        return "studentList";
    }
    
//    - deleteStudent.do : 파라미터로 넘어온 학생을 삭제해주는 요청 -> 요청 처리 후 studentList.do로 리다이렉트
    @RequestMapping("deleteStudent.do")
    public String deleteStudent(int id){
        service.deleteStudent(id);
        return "redirect:studentList.do";
    }
    
//    - addStudentForm.do : 학생 추가 페이지를 요청
    @RequestMapping("addStudentForm.do")
    public String addStudentForm(){
        return "addStudentForm";
    }
    
//    - addStudent.do : 학생 추가 작업을 처리 요청 -> 요청 처리 후 studentList.do로 리다이렉트
    @RequestMapping("addStudent.do")
    public String addStudent(Student student){
        //Student클래스 참조변수를 매개변수에 두면 요청이 들어올때, 
        //Student객체를 만들어서 파라미터 이름과 Student의 멤버변수(세터)와 이름이 같으면 해당 객체의 멤버변수에 값을 넣어줌
        service.addStudent(student);
        return "redirect:studentList.do";
    }
    
//    - modifyStudentForm.do : 학생 수정페이지를 요청
    @RequestMapping("modifyStudentForm.do")
    public void modifyStudnetForm(){
        //반환유형 void이면 받은 요청에서 .do 뗀 문자열이 view네임으로 지정됨
    }
 
//    - modifyStudent.do : 학생 수정 작업을 처리 요청
    @RequestMapping("modifyStudent.do")
    public String modifyStudent(Student student){
        service.modifyStudent(student);
        return "redirect:studentList.do";
    }
    
}
 
cs


 테스트 해보기

applicationContext 복사후

1
2
3
4
5
6
public class Test {
    public static void main(String[] args) {
     ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
    }
 
}
cs

콘솔에 에러뜨나 확인 후 서버 돌려보기,  에러 유무 확인




스프링 인터셉터 : 요청이 컨트롤러에 전달되기 전에 해야될 작업을 수행

      

              HandlerInterceptorAdapter를 상속 받음으로써 구현 가능

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//    @Override    //요청이 컨트롤러에서 처리 완료 후 수행할 작업
//    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
//            ModelAndView modelAndView) throws Exception {
//        
//    }
    @Override    //요청이 컨트롤러에 전달되기전에 수행할 작업
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        HttpSession session = request.getSession();
        String userid = (String)session.getAttribute("userid");
        if(userid == null){
            response.sendRedirect("loginForm.do");
            return false;
        }
        return true;
    }
cs


빈으로 등록 

1
2
@Component //빈으로 등록
public class LoginCheckInterceptor extends HandlerInterceptorAdapter{
cs

어떤 요청 url에 대해서 인터셉터가 동작할지 설정

네임스페이스 MVC 체크  

1
2
3
4
5
6
7
8
9
10
    <mvc:interceptors>
        <mvc:interceptor>
<!--                 와일드 카드도 되고 , 여러개 중복 등록도 된다. -->
            <mvc:mapping path="/main.do"/>
            <mvc:mapping path="/memberUpdateForm.do"/>
            <ref bean="loginCheckInterceptor"></ref>
<!--             interceptor객체가 이미 빈으로 등록되 있는 경우 bean속성에 등록된 bean id를 적어주고 -->
<!--             등록과 동시에 인터셉터 설정을 하려면 <bean class="인터셉터 클래스 풀패키지명"></bean> -->
        </mvc:interceptor>
    </mvc:interceptors>
cs


Log4j

Log4j는 자바기반의 로깅 유틸리티로,  Apache에서 만든 오픈소스 라이브러리다. (slf4j도 많이 쓰임)

 요소

 설명

Logger

 출력할 메시지를 Appender에 전달한다.

Appender

 전달된 로그를 어디에 출력할 지 결정한다. (콘솔 출력, 파일 기록, DB 저장 등)

Layout

 로그를 어떤 형식으로 출력할 지 결정한다.


Log4j는 다음과 같은 로그 레벨을 가진다.


로그 레벨

설명 

FATAL

 아주 심각한 에러가 발생한 상태를 나타낸다. 

ERROR

 어떠한 요청을 처리하는 중 문제가 발생한 상태를 나타낸다. 

 WARN

 프로그램의 실행에는 문제가 없지만, 향후 시스템 에러의 원인이 될수 있는 경고성 메시  지를 나타낸다.

 INFO

 어떠한 상태변경과 같은 정보성 메시지를 나타낸다. 

 DEBUG

 개발시 디버그 용도로 사용하는 메시지를 나타낸다. 

 TRACE

 디버그 레벨이 너무 광범위한것을 해결하기 위해서 좀 더 상세한 이벤트를 나타낸다.


' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글

Day68 네이버 API - 책검색  (0) 2016.06.24
Day67 네이버 API  (0) 2016.06.23
Day65 Spring-student  (0) 2016.06.21
Day64  (0) 2016.06.20
Day63 Spring-member  (0) 2016.06.17

SQuirreL SQL Client Home Page

squirrel-sql.sourceforge.net/
이 페이지 번역하기
SQuirreL SQL is an open-source Java SQL Client program for any JDBC compliant database.


Orange - 웨어벨리(Warevalley)

www.warevalley.com/xml/products/orange


Toad World

www.toadworld.com/



보통 mysql콘솔 같은 디비접속프로그램(클라이언트)는 잘 사용되지 않음


무료로 배포되는 여러 툴 중 각자 개발자들이 입맛에 맞는 프로그램을 사용함(ex.람쥐)


오라클 같은 경우는 오라클에서 제공하는 EM이나 유로 클라이언트인 토드나 오렌지가 주로 사용됨



Spring Framework


Spring 이란?

• 오픈 소스 프레임워크

– Rod Johnson 창시

• Expert one-on-one J2EE Design - Development, 2002, Wrox

• Expert one-on-one J2EE Development without EJB, 2004, Wrox


– 엔터프라이즈 어플리케이션 개발의 복잡성을 줄여주기 위한 목적

– EJB 사용으로 수행되었던 모든 기능을 일반 POJO(Plain Old JavaObject) 를 사용해서 가능하게 함.    

경량 컨테이너(light weight container)


• 주요 개념

– 의존성 주입(Dependency Injection)

– 관점 지향 프로그래밍(Aspect-Oriented Programming)



Spring 장점  -- 객체 관리 컨테이너

• 경량 컨테이너 – 객체의 라이프 사이클 관리, Java EE 구현을 위한 다양한 API 제공

DI (Dependency Injection) 지원 -- 의존성 관리

• AOP (Aspect Oriented Programming) 지원

• POJO (Plain Old Java Object) 지원

• 다양한 API와의 연동 지원을 통


Spring

https://spring.io/
이 페이지 번역하기
Spring helps development teams everywhere build simple, portable,. fast and ... Bootstrap yourSpring Boot application with start.spring.io. Generate now!

spring 개발환경 구축

스프링은 딱히 어떤 설치나 뭐가 있어야 되는게 아니므니다.
자바프로젝트에 스프링에 필요한 라이브러리를 import하면 되는겁니다.
add jars....관리 힘듬 ->라이브러리관리 도구를 사용하면 편리함(Maven, 엔트,  gradle...)

Maven을 이용해서 스프링 라이브러리를 프로젝트에 세팅!

configure -> convert to Maven project

C:\Users\student\.m2 <-- 메이븐라이브러리 날리기


' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글

Day51 스프링 JDBC  (0) 2016.05.30
Day49 Spring Framework  (0) 2016.05.26
Day47 MVC, 커맨드 패턴  (0) 2016.05.24
Day46 자바스크립트  (0) 2016.05.24
Day45 데이터베이스와 JDBC  (0) 2016.05.20

+ Recent posts