2022.01.19 TIL

서승원·2022년 1월 19일
0

TIL

목록 보기
57/68

Spring( urlMapping 이용)

1
2
3
4
5
6
7
8
9
10
    <bean id="test04" class="banana.CtrlTest04"/>
        
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/test04.pknu">test04</prop>        
            </props>
        </property>
    </bean>
 
cs
위와 같은 spring.xml 파일로 urlMapping 정보로 url에 대해 보여주게 될 class 를 연결한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class CtrlTest04 implements Controller {
 
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, 
                HttpServletResponse response) throws Exception 
    {
        List<String> list = new ArrayList<String>();
        list.add("apple");
        list.add("banana");
        list.add("orange");
        list.add("kiwi");
        ModelAndView mnv = new ModelAndView();
        mnv.setViewName("view04");
        mnv.addObject("fruits", list);
        return mnv;
    }
cs
CtrlTest04.java 에 Control 어노테이션을 달고 handleRequest 를 오버라이딩해서 list라는 String의 list를 작성해 ModelAndView에 Attribute로 return시킨다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page contentType="text/html; charset=utf-8" pageEncoding="EUC-KR"%>
<%@ taglib prefix="q" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
 
</head>
<body>
    WEB-INF/jsp/view04.jsp
    <q:forEach items="${fruits}" var="t">
        ${t}<br/>
    </q:forEach>
</body>
</html>
cs

결과적으로 ViewName으로부터 EL문을 사용한 jsp파일에 연결된다. 이 때 꼭 필요한 것이

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/jsp/"/>
	<property name="suffix" value=".jsp"/>
</bean>

spring.xml 파일에 viewResolver 라는 이름으로 prefix와 suffix를 이용해 고정된 파일 경로와 포맷을 지정해주는 것이다.

Spring ( urlMapping이용하지 않는 방법)

1
2
3
4
5
6
7
8
9
10
11
12
  <servlet>
    <servlet-name>apple</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>apple</servlet-name>
    <url-pattern>*.pknu</url-pattern>
  </servlet-mapping>
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="org.mariadb.jdbc.Driver" /> 
        <property name="url" value="jdbc:mariadb://183.111.242.21:3306/pukyung05" /> 
        <property name="username" value="pukyung05" /> 
        <property name="password" value="pukyung00!!1" /> 
    </bean>
    
    <bean id="jtpl" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="ds" />
    </bean>
    
    <bean class="orange.CtrlSpring">
        <property name="jdbcTemplate" ref="jtpl"/>
    </bean>
cs

web.xml과 spring.xml
web.xml 에는 *.pknu 를 통해 spring.xml 에서 정보를 얻어 접속하는 것을 init-param으로 작성하고 spring.xml 에는 dbcp 접속정보 , dbcp import, 보여질 코드를 작성할 CtrlSpring 에 대한 Bean 연결 내용이 작성된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    @RequestMapping("/list.pknu")
    public ModelAndView list() throws Exception {
        RowMapper<SpringVO> rowMapper = new RowMapper<SpringVO>() {
            @Override
            public SpringVO mapRow(ResultSet rs, int arg1) throws SQLException {
                SpringVO vo = new SpringVO();
                vo.setNo( rs.getInt("no") );
                vo.setData( rs.getString("data") );
 
                return vo;
            }            
        };
        List<SpringVO> ls = jdbcTemplate.query("SELECT * FROM spring_T", rowMapper );
        
        ModelAndView mnv = new ModelAndView();
        mnv.setViewName("spring_list");
        mnv.addObject("list",ls );
        return mnv;
    }
cs
CtrlSpring.java에 list() 함수를 위와 같이 작성했다. RowMapper 를 오버라이딩하여 spring_T 테이블에 접근해 SELECT 결과를 보여주기 위함이다. query 문을 이용해서 spring_list.jsp문에 해당 결과를 보여주도록 처음의 CtrlTest04와 같이 세팅하고,
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
<%@ page contentType="text/html; charset=utf-8" pageEncoding="EUC-KR"%>
<%@taglib prefix="q" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
 
</head>
<body><%-- 
    WEB-INF/jsp/spring_list.jsp
    --%>
    <table border="1" cellspacing="0" cellpadding="8">    
        <q:forEach items="${list}" var="t">
            <tr>
                <td>${t.no}</td>
                <td>${t.data}</td>
            </tr>
        </q:forEach>
    </table>
    <br/><br/>
    <form method="POST" action="add2.pknu">
        <input type="text" name="data"/>
        <input type="submit"/>
    </form>
</body>
</html>
cs
위와 같이 jsp 파일을 작성하면, no와 data를 EL문을 이용해서 화면에 테이블안에 담아 출력할 수 있다.

profile
2년차 백엔드 개발자, crimy

0개의 댓글