상세 컨텐츠

본문 제목

Spring 개념, Sevlet JSP Spring 차이

Framework/Spring

by H_Develop 2022. 9. 7. 18:11

본문

SpringMVC 프로젝트 파일
정리 잘 해둘 것.
실무에서 가장 많이 사용되는 패턴

 

1. 서블릿 (HTML in JAVA) - Controller 역할
prepareStatement, dataFactory 설정 등, 
Servlet으로만 한다면 중복되는 코드를 너무 많이 작성해야 했다는 점
다른 점은 다 참을만 했지만, 개발하면서 수천 줄의 코드를 짜면서 
Java 코드 안에 html을 일일이 넣어야 되는 현상은 개발자 입장에서 굉장히 불편했을 것 같다.
고작 몇십줄 코드를 봤는데도 굉장히 불편하게 느껴지지 않는가? 
큰따옴표와 +를 일일이 쳐가면서 html을 쳐야 한다니...

2. JSP (Java in HTML) - View 역할
JSP는 이러한 단점을 개선해준다! 
Html 코드 안에 Java 코드가 존재하기 때문이다!
그러나 중복된 코드를 계속 작성해야 한다는 점, JSP 코드가 너무 방대해져버린다는 점은 여전히 큰 단점이다. 
특히나 controller, domain, service를 분리하지 않는다면 더더욱이다.

3. 스프링 : 서블릿 + JSP (스프링으로 더 간단하게 작업 가능)

 

tomcat 8.~ 버젼이 좋고 (8, 8.5 다 괜찮다.)
java 8 버젼이 좋다

tomcat lib 안에 
ojdbc14.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-spec-1.2.5.jar
있어야 한다.

spring은 runas > run on server로 실행

M : model (DAO)
V : view (JSP)
C : controller (con...)
Spring 은 명확하게 MVC가 나누어져 있다.
MVC 패턴에 맞춰 진행해야 한다.
Spring은 Servlet이 없다.

 

mybatis - JSP에서 sever package class만들어 길게 썻던 코드를 

DAO 파일에서

public List<VisitVO> selectList() {
// mapper인 visit.xml 에서 mapper이름을 v로 했기에 v.visit_list로 경로를 정해준다
List<VisitVO> list = sqlSession.selectList("v.visit_list");
return list;
}

이렇게 짧게 만들어준다.

 

Mapper - Mybatis Mapper XML File은 실행할 SQL 문을 정의해놓은 파일이다.

SQL문 실행을 위해 Parameter Object를 받아오거나,

SQL문 실행 결과를 Result Object에 자동 바인딩하는 기능 등을 제공한다.

요소 : <select> <insert> <update> <delete> <sql> <resultMap> <cache> <cache-ref> 

 

------------------------------------------------------------------------------------------------------------------------------------------

 

Controller                    - Mapper를 가지고 있는 DAO를 불러온다 > 출력 및 작동

DAO                            - sqlSession을 셋터(select(), insert(), delete())와 생성자 인젝션으로 받을 준비

VO                               - Getter & Setter

mybatis-config.xml      - 쿼리문 작성한 gogaek.xml을 등록 / 등록 추가 가능

gogaek.xml                 - 쿼리문 작성, Mapper

context-1-datasource - DB연결 준비

context-2-mybatis       - cotext-1-datasource로 들어가는 역할

context-3-dao              - DAO에 대한 Bean 객체 생성

Servlet-context.xml     - context-3-dao Bean객체를 가져와서 Controller에 등록하고 Bean객체 생성

 

------------------------------------------------------------------------------------------------------------------------------------------

 

다른 프로젝트에서

pom.xml, context-1-datasource.xml, context-2-mybatis.xml 는 항상 고정,

context-3-dao.xml Controller.java DAO.java VO.java는 수정

 

파일 실행 순서

web.xml > context-1-datasource.xml > context-2-mybatis.xml > context-3-dao.xml

 

스프링 실행순서
1. 맵퍼에서 (조회, 수정등에) 필요한 쿼리문 작성 - config.mybatis.mapper > gogaek.xml

    <select id="gogaek_list" resultType="vo.GogaekVO">
      select goname, goaddr, gojumin from gogaek
   </select>


2. 1의 맵퍼를 mybatis-config.xml에 등록

  <mappers>
    <mapper resource="config/mybatis/mapper/gogaek.xml" />
  </mappers>


3. vo 생성하기


4. DAO 생성하기 (SqlSession을 셋터&생성자 인젝션으로 받을 준비)


5. context-3에서 4의 DAO에 대한 bean 객체 생성

  <bean id="gogaek_dao" class="dao.GogaekDAO">
    <constructor-arg ref="sqlSessionBean"/>
  </bean>


6. controller 생성 (DAO를 인젝션으로 받을 준비)

생성자, @RequestMapping() 작성


7. servlet-context에 6에서 생성한 컨트롤러를 객체화, bean으로 만듦

  <beans:bean id="gogaek_controller" class="controller.GogaekController">
    <beans:constructor-arg ref="gogaek_dao" />
  </beans:bean>

새 프로젝트 작성 시 순서
1. pom.xml 복사 후, 패키지와 프로젝트 명 변경
2. web.xml 복사
3. src/main/resources에 존재하는 모든 패키지를 복사
    context-1-datasource
    context-2-mybatis
    두가지는 건들 필요없음
    context-3-dao 만 수정해주면 된다
    servlet-context에서 사용 할 컨트롤러로만 변경해주면 된다

'Framework > Spring' 카테고리의 다른 글

Spring 부서목록 (select 만 있음)  (0) 2022.09.13
Spring visit 방명록  (0) 2022.09.13
Spring ( select, delete )  (0) 2022.09.13
Spring 부서목록 코드  (0) 2022.09.07
Spring 부서목록 파일 정리  (1) 2022.09.07

관련글 더보기