학생 정보 관리 웹


필요한 페이지

모든 학생 리스트를 보여주는 페이지

학생정보를 입력해서 학생을 데이터베이스에 추가할 수 있는 페이지

학생정보중 일부를 변경해서 데이터베이스 정보를 수정할 수 있는 페이지


필요 요청

- studentList.do : 학생리스트 보여주는 페이지를 요청

- deleteStudent.do : 파라미터로 넘어온 학생을 삭제해주는 요청 -> 요청 처리 후 studentList.do로 리다이렉트

- addStudentForm.do : 학생 추가 페이지를 요청

- addStudent.do : 학생 추가 작업을 처리 요청 -> 요청 처리 후 studentList.do로 리다이렉트

- modifyStudentForm.do : 학생 수정페이지를 요청

- modifyStudent.do : 학생 수정 작업을 처리 요청


필요 기능

- 학생 리스트 데이터를 얻어오는 기능

- 학생 데이터 한개를 지우는 기능

- 학생 데이터 한개를 추가하는 기능

- 학생 데이터 한개를 수정하는 기능


필요 데이터베이스 쿼리

- 학생 리스트 조회 쿼리

- 학생 레코드 추가 쿼리   insert into student values ~~~~

- 학생 레코드 삭제 쿼리

- 학생 레코드 수정 쿼리



1. web 프로젝트 생성 (web.xml 체크) // maven 설정

2. 디펜던시 설정

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
<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
cs


 * web.xml에 dispatcherServlet 등록과 루트 컨테이너를 위한 리스너등록, 

   한글처리를 위한 필터등록 <- 스프링 MVC한글처리하기

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
<servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    
    <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>    
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    
    <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>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
cs


* 등록한 dispatch 서블릿이 사용할 스프링 컨테이너 설정파일 생성,

contextLoaderListener에 의해 생성될 루트컨테이너가 사용할 스프링 컨테이너 설정파일 생성


* 구조생성


* controller구현 클래스가 있는 controller패키지 컴포넌트 스캔

HandlerMapping, ViewResolver중에 필요한객체들 빈으로 등록

 Namespaces - context 체크

1
2
3
4
5
<context:component-scan base-package="controller"></context:component-scan>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>



* dataSource 빈 등록, sqlSessionFactory 빈 등록, IstudentDao 인터페이스를 MapperFactoryBean을 통해 매퍼 객체 빈 등록

service 구현클래스가 있는 service패키지 component-scan


 Namespaces - context 체크

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<context:component-scan base-package="service"></context:component-scan>
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost/데이터베이스이름"></property>
        <property name="username" value="아이디"></property>
        <property name="password" value="비밀번호"></property>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="mapperLocations" value="classpath*:dao/mapper/**/*.xml"></property>
     
<property name="typeAliasesPackage" value="model"></property>


    </bean>
    <bean id="studentDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
        <property name="mapperInterface" value="dao.IStudentDao"></property>
    </bean>

cs





' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글

Day67 네이버 API  (0) 2016.06.23
Day66 Spring-student // 스프링 인터셉터  (0) 2016.06.22
Day64  (0) 2016.06.20
Day63 Spring-member  (0) 2016.06.17
Day62 Spring MVC  (0) 2016.06.16

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>


<%

String[] movieList = { "캡틴아메리카", "배대슈", "엑스맨", "곡성" };

pageContext.setAttribute("movieList", movieList);

%>

<c:forEach var= "movie" items="${movieList}">

   ${movie}<br>

</c:forEach>


</body>

</html> 

서블릿에서 요청에 따라 서비스에 적절한 로직처리 메소드를 호출하고 그 결과에 대한 데이터를 req의 attribute에 실어서 포워드 보내면 jsp에서는 그녀석을 EL로 뽑아 출력하거나 데이서셋이라면 위 방법으로 반복돌면서 데이터 접근


' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글

Day46 자바스크립트  (0) 2016.05.24
Day45 데이터베이스와 JDBC  (0) 2016.05.20
Day43 JSTL(JSP Standard Tag Library)  (0) 2016.05.18
Day42 표현언어  (0) 2016.05.18
Day41  (0) 2016.05.16

EL표현식 - JSP페이지 내에서 자바코드를 이용한 데이터출력을 EL태그를 이용해 간단히 표현하기 위한

( 표현식, 자바코드를 이용한 attribute값 꺼내기, 파라미터 꺼내기 등을 El로 대체)


$ { 값} 

조건연산과 산술연산도 가능


JSTL(JSP페이지 내에서 조건문 반복문을 JSTL태그를 이요해 간단히 구현) 반복 조건문에 들어갈 조건식을 작성할 때 사용


JSTL(JSP Standard Tag Library)


JSP는 스크립트릿과 자바 코드 등 여러 코드들이 섞여서 복잡한 구조로 되어 있는데,

 간결하고 이해하기 쉽게 코딩을 하기 위해 자신만의 태그를 추가할 수 있습니다.


커스텀태그 라이브러리 - 작성한 커스텀 태그를 모아서 압축한 후 이를 배포해서 사용


커스텀태그를 표준화 ----> JSTL 


*간단한 프로그램 로직의 구현(자바의 변수 선언, if문, for문 등에 해당하는 로직)


JSTL -> jsp는 자바코드와 HTML코드 등 여러 코드들이 섞여서 복잡한 구조로 되어 있음

로직은 자바코드로 껍데기는 HTML로 

복잡한 로직처리는 모델2구조로 인해 별도의 자바파일로 분리하기로 했음

껍데기에서 분리가 불가능한 로직( 조건문 반복문,포맷등)을 JSP페이지 내에서 자바코드보다 간결하게 표현하기 위해 JSTL라이브러리를 씀!

' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글

Day45 데이터베이스와 JDBC  (0) 2016.05.20
Day44 JSTL  (0) 2016.05.19
Day42 표현언어  (0) 2016.05.18
Day41  (0) 2016.05.16
Day40 서블릿 등록  (0) 2016.05.13

+ Recent posts