본문 바로가기
풀스택/Spring

spring 예제 emaillist->emaillist3

by woohyun22 2019. 2. 19.

1. 사용자의 요청을 DispatcherServlet이 받는 다.

2. 요청을 처리해야 하는 컨트롤을  찾기 위해 HandlerMapping에게 질의를 하고 HandlerMapping 컨트롤 객체에

    매핑되어 있는 URL를 찾아낸다.

3. DispatcherServlet은 찾은 컨트롤에게 요청을 전달하고 Controller는 서비스 계층의 인터페이스를 호출하여 적절한

    비지니스를 수행한다.

 

4. 컨트롤러는 비지니스 로직의 수행결과로 받아낸 도메인 모델 객체와 함께 뷰이름을 ModelAndView 객체에 저장하여

    반환한다.

5. DispatcherServlet은 응답할 View를 찾기 위해 ViewResolver에게 질의를 한다.

6. DispatcherServlet은 찾아낸 View 객체에게 요청을 전달한다.





-----jsp, servlet jsp로 이루어진 eamillist를 spring 형식으로 바꾸기-----


먼저 pom.xml에 디펜던시 추가 + properties


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
61
62
63
64
65
66
67
68
69
70
71
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.douzone</groupId>
    <artifactId>emaillist3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    
    //---------------------------------------------------------------------
    <!-- properties와 dependencies에서 spring설정을 해준다. -->
    
    
    <properties>
        <org.springframework-version>4.2.1.RELEASE</org.springframework-version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <!-- MySQL Connect JDBC Driver -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <!-- jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
    
    
    //---------------------------------------------------------
    
    
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <warSourceDirectory>webapp</warSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
cs


web.xml에 dispatcherServlet 설정 및 spring설정


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
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>emaillist3</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    //-----------------------------------------------------------------------------------
    <!-- Context Parameter 전역-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    
    <!-- Context Listener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
 
    <!-- encoding filter(한글 처리,utf-8) -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
 
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
 
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
 
    <!-- Front Controller 서블릿 설정한다 이것으로 사용자의 요청을 받는다.-->
 
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 
</web-app>
cs


WEB_INF에 spring-servlet.xml 추가


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
 
    <context:annotation-config />
    <context:component-scan
        base-package="com.douzone.emaillist.controller" />
 
</beans>
 
cs


WEB_INF에 applicationContext.xml 추가


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
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
 
    <context:annotation-config />
    
    <context:component-scan base-package="com.douzone.emaillist">
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Repository" />
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Service" />
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Component" />
    </context:component-scan>
</beans>
 
cs


WEB_INF에 views 폴더 추가후 jsp 파일들 추가


add.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@page import="com.douzone.emaillist.dao.EmaillistDao"%>
<%@page import="com.douzone.emaillist.vo.EmaillistVo"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    request.setCharacterEncoding("utf-8");
    String firstName = request.getParameter("fn");
    String lastName = request.getParameter("ln");
    String email = request.getParameter("email");
    
    EmaillistVo vo = new EmaillistVo(); 
    vo.setFirstName(firstName);
    vo.setLastName(lastName);
    vo.setEmail(email);
    
    new EmaillistDao().insert(vo);
    
    response.sendRedirect("/emaillist3");
%>
cs


list.jsp


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
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>메일 리스트에 가입되었습니다.</h1>
    <p>입력한 정보 내역입니다.</p>
    <!-- 메일정보 리스트 -->
    <c:forEach items="${list }" var = "vo">
        <table border="1" cellpadding="5" cellspacing="2">
            <tr>
                <td align=right>First name: </td>
                <td>${vo.firstName}</td>
            </tr>
            <tr>
                <td align=right width="110">Last name: </td>
                <td width="110">${vo.lastName }</td>
            </tr>
            <tr>.
                <td align=right>Email address: </td>
                <td>${vo.email}</td>
            </tr>
        </table>
        <br>
</c:forEach
    <p>
        <a href="form.jsp">추가메일 등록</a>
    </p>
    <br>
</body>
</html>
cs


form.jsp


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 language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>메일 리스트 가입</h1>
    <p>
        메일 리스트에 가입하려면,<br>
        아래 항목을 기입하고 submit 버튼을 클릭하세요.
    </p>
    <form action="${pageContext.request.contextPath }/add.jsp" method="post">
        First name: <input type="text" name="firstName" value="" ><br>
        Last name: <input type="text" name="lastName" value=""><br>
        Email address: <input type="text" name="email" value=""><br>
        <input type="submit" value="submit">
    </form>
    <br>
    <p>
        <a href = "${pageContext.request.contextPath }">리스트 바로가기</a>
    </p>
</body>
</html>
cs


jsp 파일을 가져오고, 정리=input제거나, id,name 정리


controller에서 각 mapping과 url지정, 파라미터지정


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
package com.douzone.emaillist.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 org.springframework.web.bind.annotation.RequestMethod;
 
import com.douzone.emaillist.dao.EmaillistDao;
import com.douzone.emaillist.vo.EmaillistVo;
 
@Controller
public class EmaillistController {
 
    @Autowired //
    private EmaillistDao emaillistDao;
 
    /*
     * @ResponseBody
     * 
     * @RequestMapping("") public ModelAndView list() { ModelAndView mav = new
     * ModelAndView(); mav.addObject("list", emaillistDao.getList());
     * mav.setViewName("/WEB-INF/views/list.jsp");
     * 
     * return mav;
     */
 
    @RequestMapping("")
    public String list(Model model) {
        model.addAttribute("list", emaillistDao.getList());
        return "/WEB-INF/views/list.jsp";
    }
 
    @RequestMapping("/form")
    public String form() {
        return "/WEB-INF/views/form.jsp";
    }
 
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String add(EmaillistVo emaillistVo) {
        emaillistDao.insert(emaillistVo);
 
        return "redirect:/";
    }
}
 
cs


Dao와 vo는 가져온 것을 활용 + 틀린것없는지 보충


보충하기!!









1.실행 순서는 사용자의 요청을 web.xml의 dispatchedServlet가 받는다


2.요청을 처리하기 위해 HandlerMapping에 질의를 하고 매핑되어있는 URL을 찾는다.


3.

728x90

'풀스택 > Spring' 카테고리의 다른 글

spring에서의 예외처리  (0) 2019.02.23
ViewResolver 설정  (0) 2019.02.23
spring html, css적용 안될때  (0) 2019.02.23
  (0) 2019.02.19
Spring  (0) 2019.02.14

댓글