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

지역변수 : 메소드내에서 생성하는 변수 -> 메소드 종료시 사라짐, 스택영역에 생성됨.






멤버변수(필드) = 인스턴스변수 : 클래스 내부에 정의, 해당 클래스가 객체화 될때마다 각 객체내에 생성됨, 

  해당 객체가 소멸될때 같이 사라짐.







정적변수 = 클래스변수 : 모든객체를 통틀어서 하나만 있는변수 , 해당클래스로 객체를 하나도 안만들었어도 1개만 존재하고 

객체를 계속 만들어도 1개만 존재. 클래스 내부에 static 키워드를 포함해서 정의하며, 프로그램이 실행될때 생성되서, 

프로그램이 종료될때 사라짐.





public static int numberOfCars; //  private static int numberOfCars;






정적메소드의 활용용도 - > 정적변수에 대한 게터,세터를 만들거나 객체의 상태와 상관없는 동작을 수행하는 메소드를 정의할때 사용.

                                       정적 함수에서는 멤버변수에 접근할수 없음.





toString이 우리가 만들지 않아도 원래 존재함, 해당 객체가 문자열화 될때 어떻게 문자열로 바뀔지를 결정하는 기능, 이미 존재하지만 똑같은 이름으로 toSring을 다시 만들어주면, 해당 객체가 문자열화 될때 우리가 정의한 내용에 맞게 문자열됨.


finalize도 원래 존재함, 객체가 소멸되기 직전에 호출되는 메소드, 우리가 똑같은 이름으로 다시 정의하면 해당객체가 소멸될때 우리가 정의한 함수내용을 실행함.


System.gc();

System.runFinalization(); // 가비지컬렉터를 강제로 일시키기 (사용x)


this : 자기 자신을 참조하는 키워드







//* 곱셈 실수부 -> (a*c) - (b*d)    나눗셈 실수부 ->(a*c)/(c*c+d*d) + (b*d)/(c*c+d*d)

   곱셈 허수부 -> (a*d) + (b*c)    나눗셈 허수부 ->(a*d)/(c*c+d*d) - (a*d)/(c*c+d*d) *//

 






' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day 14 형변환 , 추상클래스  (0) 2016.03.31
Day13 상속  (0) 2016.03.30
Day11  (0) 2016.03.28
Day10 public/private  (0) 2016.03.25
Day09 객체지향  (0) 2016.03.24

<객체지향> 관련있는 변수와 함수를 하나의 꾸러미로 묶어서 관리, 실제 세계를 모델링하여 소프트웨어를 개발하는 방법 ;

객체 : 힙영역에 할당되있는 모든 데이터 (new연산자를 이용해 만들어진 데이터) 

객체의 상태(state) : 객체의 특징값(속성) = 변수(필드)이다.

객체의 동작(behavior) : 객체가 취할 수 있는 동작 = 함수(메소드)

 

클래스 : 관련있는 함수와 변수를 조합해 만든 자료형 -> 객체란 클래스를 통해 생성해낸 데이터

         


<객체 지향 프로그래밍(Object-Oriented Programming, OOP)>은 컴퓨터 프로그래밍의 패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다 


출처 : https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D




<구조체 : 다른 타입의 변수들의 묶음 자료형> -> 사용자 정의 자료형

// 배열 : 같은 타입의 변수들의 묶음 자료형





class Student{

int age;

int score; //Student 타입으로 데이터를 한번 생성하면 그안에는

String name;         // 그안에는 정수변수 두개 문자열변수 한개의 조합된 데이터가 만들어짐

}


public class StructTest {

public static void main(String[] args) {

// Student s;//우리가 만든 데이터타입 Student라는 타입의 변수 s를 생성

Student s = new Student();   //-Student데이터의 위치가담김

               s.age = 10; s.score = 100; s.name = "학생1"; System.out.println("나이 : "+ s.age); System.out.println("점수 : "+ s.score); System.out.println("이름 : "+ s.name); } }



<함수(메소드) : 명령어들의 집합>



public static void 그림그리기명령어집합(){

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

} // 나중에 또 사용될 가능성이 많은 코드들에 이름을 지어주면 재활용하기 쉬움



public static void 그림그리기명령어집합(){

String name ="??";

name ="학생1";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);

name = "학생2";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);

name = "학생3";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);



그림그리기명령어집합("학생1");

그림그리기명령어집합("학생2");    //인자값 // String name = "학생1" 

그림그리기명령어집합("학생3");


public static void 그림그리기명령어집합(String name){

      //매개변수

//함수 실행 전 매개변수 = 인자값 코드를 수행함

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);









public class StringTest {

public static void main(String[] args) {

String proverb = "A barking dog";

String s1, s2, s3, s4;

System.out.println("문자열의 길이 = " + proverb.length());

s1 = proverb.concat(" never Bites!");

s2 = proverb.replace('b', 'B');

s3 = proverb.substring(2, 5);

s4 = proverb.toUpperCase();

System.out.println(s1);

System.out.println(s2);

System.out.println(s3);

System.out.println(s4);

}

}




 Object 클래스의 주요 메소드 <-- 모든 자바 클래스들은 Object 클래스로부터 상속받는다.


 메소드

설 명 

 String toString()

 현재 객체의 문자열을 반환한다




객체의 생성

Car    myCar;

myCar = new Car();


1. 참조 변수 선언 : Car 타입의 객체를 참조할 수 있는 변수 myCar를 선언한다.

2. 객체 형성 : new 연산자를 이용하여 객체를 생성하고 객체 참조값을 반환한다.

3. 참조 변수와 객체의 연결 : 생성된 새로운 개체의 참조값을 myCar라는 참조 변수에 대입한다.



' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day11  (0) 2016.03.28
Day10 public/private  (0) 2016.03.25
Day 08 정렬  (0) 2016.03.23
Day 07 배열  (0) 2016.03.22
Day 06 复习  (0) 2016.03.21

+ Recent posts