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

+ Recent posts