Skip to content

Latest commit

ย 

History

History
142 lines (106 loc) ยท 6.74 KB

File metadata and controls

142 lines (106 loc) ยท 6.74 KB

๊ธฐ์ดˆ or ๊ถ๊ธˆํ–ˆ๋˜ ๊ฒƒ์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„.

pom.xml

  • Project Object Model์˜ ์ค€๋ง
  • maven์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด XMLํƒœ๊ทธ ํ˜•ํƒœ๋กœ ์ œ๊ณต์ด ๋˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํƒœ๊ทธ๋ฅผ pom.xml์— ๋„ฃ์–ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ dependencies์— *.jar ์ถ”๊ฐ€

web.xml

  • DispatherServlet์˜ ์„ค์ •์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ /WEB-INF/web.xml ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๋ฉฐ, ์„œ๋ธ”๋ฆฟ๊ณผ ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด DispatherServlet ์„ค์ •์ด ์™„๋ฃŒ๋œ๋‹ค.

  • web.xml์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋Š” JSP ํŽ˜์ด์ง€์™€ ๋‹ฌ๋ฆฌ ์„ค์น˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋“ฑ๋ก์„ ํ•˜๋Š” ๊ณผ์ •์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ณณ์˜ ์ด๋ฆ„์„ Web application deployment descriptor๋ผ๊ณ  ํ•˜๋Š”๋ฐ (์ค„์—ฌ์„œ DD-Deployment Descriptor) ์ด ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ web.xml์ด๋‹ค. web.xml ํŒŒ์ผ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋งˆ๋‹ค ๋”ฑ ํ•˜๋‚˜์”ฉ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • DD๋Š” WAS ๊ตฌ๋™ ์‹œ /WEB-INF ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌํ•˜๋Š” web.xml์„ ์ฝ์–ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ค์ •์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค.

  • web.xml์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์šฐ์„  ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ์ธ <web-app></web-app>์„ ๋งŒ๋“ ๋‹ค.

  • ์ด ์•ˆ์— ์›น ์„œ๋ฒ„๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ URL์„ ๋ฐ›์•˜์„ ๋•Œ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„์„œ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•ด์•ผ ํ•œ๋‹ค.

  • URL๊ณผ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๊ฐ๊ฐ <servlet><servlet-class></servlet-class></servlet>ํƒœ๊ทธ์™€<servlet-mapping><url-pattern></url-pattern></servlet-mapping>๋กœ ์ž‘์„ฑ

<web-app>
	<servlet>
    	<servlet-name>
        	//์„œ๋ธ”๋ฆฟ์˜ ์ด๋ฆ„
        </servlet-name>
    	<servlet-class>
    		//์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค์˜ ์ด๋ฆ„
        </servlet-class>
   	</servlet>
    <servlet-mapping>
    	<servlet-name>
        	//์ฐธ์กฐํ•  ์„œ๋ธ”๋ฆฟ์˜ ์ด๋ฆ„
        </servlet-name>
    	<url-pattern>
    		//mappingํ•  URL
        </url-pattern>
    </servlet-mapping>
</web-app>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>Archetype Created Web Application</display-name>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext.xml</param-value>
  </context-param>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/dispatcher-servlet.xml</param-value>
    </init-param>
  </servlet>


  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
  • ContextLoaderListener ํด๋ž˜์Šค๋Š” ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ(๋””ํดํŠธ์—์„œ ํŒŒ์ผ๋ช… applicationContext.xml)์„ ๋กœ๋“œํ•˜๋ฉด ServletContextListener ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ServletContext ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ(ํ†ฐ์ผ“์œผ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋กœ๋“œ๋œ ๋•Œ)์— ํ˜ธ์ถœ๋œ๋‹ค. ์ฆ‰, ContextLoaderListener ํด๋ž˜์Šค๋Š” DispatcherServlet ํด๋ž˜์Šค์˜ ๋กœ๋“œ๋ณด๋‹ค ๋จผ์ € ๋™์ž‘ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ธต์„ ์ •์˜ํ•œ ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์„ ๋กœ๋“œํ•œ๋‹ค.
  • <param-name>contextConfigLocation</param-name> : ๋นˆ ์„ค์ • ํŒŒ์ผ์„ ํ•˜๋‚˜ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค.

dispatcher-servlet.xml

  • <mvc:annotation-driven/> : ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ์„ ๋„์™€์คŒ
  • <bean:component-scan base-package="com.example2"/> : autowiredํ•  ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ
  • DispatherServlet์€ ์ด ๋ทฐ ์ด๋ฆ„๊ณผ ๋งค์นญ๋˜๋Š” ๋ทฐ ๊ตฌํ˜„์ฒด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ViewResolver๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

๊ฐœ๋ฐœ ์ˆœ์„œ

  1. DB ํ…Œ์ด๋ธ” ์ƒ์„ฑ
  2. VO ํด๋ž˜์Šค ์„ค๊ณ„ (domain)
  3. DAO ์ธํ„ฐํŽ˜์ด์Šค ์ž‘์„ฑ - ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜
  4. XML Mapper์˜ ์ƒ์„ฑ๊ณผ ํ•„์š”ํ•œ DTD ์ถ”๊ฐ€ ๋ฐ SQL๋ฌธ ์ž‘์„ฑ
  5. MyBatis์—์„œ ์ž‘์„ฑ๋œ XML Mapper๋ฅผ MyBatis๊ฐ€ ๋™์ž‘ํ•  ๋•Œ ์ธ์‹ํ•˜๋„๋ก ์„ค์ •
  6. DAO์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ํ•˜๋Š” DAO ํด๋ž˜์Šค ์ž‘์„ฑ - SqlSessionTemplate ์ด์šฉ

Mybatis๋ž€?

  • ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ธ ์ž๋ฐ”์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ข€๋” ์‰ฝ๊ฒŒ ํ• ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ

  • ์ž๋ฐ”์—์„  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด JDBC(์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ API)๋ฅผ ์ œ๊ณต

  • JDBC๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ API๋ฅผ ์ œ๊ณต

  • ๋‹ค์–‘ํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด JDBC๋Š” ์„ธ๋ถ€์ ์ธ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž‘์—…๋ณ„๋กœ ๊ฐ๊ฐ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌํ•ญ๋“ค์€ ๋‹ค์ˆ˜์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ด€๋ จ๋œ ๊ฐ์ฒด๋ฅผ ํ•ด์ œํ•ด์•ผํ•˜๋Š” ๋‹จ์ ์ด ์กด์žฌ

-->Mybatis๋Š” JDBC๋ณด๋‹ค ์ข€๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Œ

sqlSessionFactoryBean

  • SqlSessionFactoryFactory ํด๋ž˜์Šค : SqlSession์„ ๋งŒ๋“œ๋Š” ์—ญํ• 

  • Dao๋Š” Factory์„ ๋ฉค๋ฒ„๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ํ•„์š”ํ•  ๋•Œ SqlSession์„ openํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์“ฐ๋ฉด sqlSession๋ฅผ close

  • SqlSessionํด๋ž˜์Šค : sql๋ฌธ์„ ์‹ค์ œ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ์—ญํ• (ํ•„์š”ํ• ๋•Œ openํ•˜๊ณ  closeํ•ด์ค˜์•ผํ•จ)

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="datasource"/>
      <property name="mapperLocations" value="classpath:mybatis/mapper/**/*.xml"/>
  </bean>

BoardMapper.xml

  • XML Mapper๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” namespace๋ผ๋Š” ๊ฒƒ์˜ ์„ค์ •์— ์กฐ์‹ฌํ•ด์•ผํ•œ๋‹ค. ํด๋ž˜์Šค์˜ ํŒจํ‚ค์ง€์™€ ์œ ์‚ฌํ•œ ์šฉ๋„๋กœ, MyBatis ๋‚ด์—์„œ ์›ํ•˜๋Š” SQL ๋ฌธ์„ ์ฐพ์•„์„œ ์‹คํ–‰ํ•  ๋•Œ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.repository.BoardRepository">
    <select id="findAll" resultType="com.example.domain.Board">
        SELECT * from Board;
    </select>
</mapper>

HttpServletRequest

  • ํ•˜๋‚˜์˜ ์š”์ฒญ์—์„œ HttpServletRequest ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธํ•˜๊ธฐ ๊นŒ์ง€ ์ƒํƒœ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ณ ์ž ํ•  ๋•Œ, ํ•œ๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ์‹คํ–‰๋œ ํŽ˜์ด์ง€๋ผ๋ฆฌ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋””์ŠคํŒจ์ฒ˜์— ์˜ํ•œ ์š”์ฒญ์žฌ์ง€์ •์„ ํ•˜๊ธฐ ์ „ HttpServletRequest ๊ฐ์ฒด์˜ setAttribute( ) ๋ฉ”์†Œ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์š”์ฒญ ์žฌ์ง€์ •์œผ๋กœ HttpServletRequest ๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌ๋œ ํŽ˜์ด์ง€์—์„œ getAttribute( ) ๋ฉ”์†Œ๋“œ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.