전자정부 프레임워크 값넘기기 연습 (10) MyBatis 테스트

1. com.test.mybatis 패키지에 

StudentDAO.java 파일을 생성후 아래의 코드를 입력

 

package com.test.mybatis;
import java.util.ArrayList;
import java.util.HashMap;

public interface StudentDAO {
    public int insertStudent(StudentModel stdmodel);
    public ArrayList<StudentModel> selectStudent();
    public ArrayList<StudentModel> selectStudentOrder();
    public ArrayList<StudentModel> selectStudentWhere(String name);
    public ArrayList<StudentModel> selectStudentOr( HashMap<String,Object> arg );
}

 

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

2. com.test.mybatis 패키지에

StudentDAOImpl.java 파일을 생성후 아래의 코드를 입력

 

 

package com.test.mybatis;

import java.util.ArrayList;
import java.util.HashMap;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;

@Repository
public class StudentDAOImpl implements StudentDAO {

@Autowired
SqlSession sqlSession;

@Override
public int insertStudent(StudentModel stdmodel) {
// TODO Auto-generated method stub

StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
int n = mapper.insertStudent(stdmodel);
return n;
}
    
    @Override
    public ArrayList<StudentModel> selectStudent()
    {
        StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
        ArrayList<StudentModel> arr = mapper.selectStudent();
        return arr;
    }
    
    @Override
    public ArrayList<StudentModel> selectStudentOrder()
    {
        StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
        ArrayList<StudentModel> arr = mapper.selectStudentOrder();
        return arr;
    }   

    @Override
    public ArrayList<StudentModel> selectStudentWhere(String name)
    {
        StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
        ArrayList<StudentModel> arr = mapper.selectStudentWhere(name);
        return arr;
    }   
    
    @Override
    public ArrayList<StudentModel> selectStudentOr( HashMap<String,Object> arg )
    {
        StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
        ArrayList<StudentModel> arr = mapper.selectStudentOr(arg);
        return arr;        
    }
    
}

 

 

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

 

3. com.test.mybatis 패키지에

StudentModel.java 파일을 생성후 아래의 코드를 입력

 

package com.test.mybatis;

public class StudentModel {
String name;
int age;
String birth;
public StudentModel() {
name = "";
age = 0;
birth ="";
}
public StudentModel(String name, int age, String birth) {
super();
this.name = name;
this.age = age;
this.birth = birth;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
}

 

 

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

4. com.test.mybatis 패키지에

StudentDAO.xml 파일을 생성후 아래의 코드를 입력

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.test.mybatis.StudentDAO">
    <resultMap type="StudentModel" id="stdModel">
<result property="name" column="name" />
<result property="age" column="age" />
<result property="birth" column="birth" />
</resultMap>
    
<select id="selectStudent" resultMap="stdModel">
SELECT * FROM student
</select>
    
<select id="selectStudentOrder" resultMap="stdModel">
SELECT * FROM student order by name
</select>    
    
<select id="selectStudentWhere"  resultMap="stdModel" parameterType="String">
SELECT * FROM student where name= #{name}
</select>      

    <select id="selectStudentOr"  resultMap="stdModel" parameterType="HashMap">
SELECT * FROM student where name= #{name} or age=#{age}
</select> 
    
<insert id="insertStudent" parameterType="com.test.mybatis.StudentModel">
INSERT INTO STUDENT VALUES( #{name}, #{age},#{birth} )
</insert>

    
    
</mapper>

 

 

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

5. egovframework.example.sample.web 패키지 경로에

MyController.java 파일 생성후 아래 코드를 입력

 

 

package egovframework.example.sample.web;

import java.util.ArrayList;
import java.util.HashMap;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.support.SessionStatus;

import com.test.mybatis.StudentDAOImpl;
import com.test.mybatis.StudentModel;

import egovframework.example.sample.service.SampleDefaultVO;
import egovframework.example.sample.service.SampleVO;

@Controller
public class MyController {


@Autowired
StudentDAOImpl daoImpl;

@RequestMapping(value = "/insert.do", method = RequestMethod.GET)
public String insert( Model model )throws Exception {

int n = daoImpl.insertStudent(new StudentModel("스프링",30,"2020-11-11"));
model.addAttribute("result",n+":inserted");
return "insertview";
}


@RequestMapping(value = "/select.do", method = RequestMethod.GET)
public String select( Model model )throws Exception {

ArrayList<StudentModel> arr = daoImpl.selectStudent();
model.addAttribute("stdArr",arr);

return "selectview";
}

@RequestMapping(value = "/selectw.do", method = RequestMethod.GET)
public String selectw( Model model )throws Exception {

ArrayList<StudentModel> arr = daoImpl.selectStudentWhere("홍길동");
model.addAttribute("stdArr",arr);

return "selectview";
}


@RequestMapping(value = "/selecto.do", method = RequestMethod.GET)
public String selecto( Model model )throws Exception {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("name","홍길동");
map.put("age", 20);

ArrayList<StudentModel> arr = daoImpl.selectStudentOr(map);
model.addAttribute("stdArr",arr);

return "selectview";
}

}

 

 

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

6. pom.xml 파일에  아래의 코드 추가

 

 

      <dependency>
         <groupId>com.oracle.database.jdbc</groupId>
         <artifactId>ojdbc6</artifactId>
         <version>11.2.0.4</version>
      </dependency>
      <dependency>
         <groupId>commons-dbcp</groupId>
         <artifactId>commons-dbcp</artifactId>
         <version>1.4</version>
      </dependency>
      <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.10</version>
      </dependency>
      <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis-spring</artifactId>
         <version>2.0.7</version>
      </dependency>

 

 

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

7. webapp 경로에 test.html 파일 추가

아래의 코드 입력

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>hello</h1>
</body>
</html>

 

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

8. webapp - WEB-INF - jsp - egovframework - example 경로에

insertview.jsp 파일을 추가하고 아래의 코드를 입력

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${result}</h1>
</body>
</html>

 

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

9.  webapp - WEB-INF - jsp - egovframework - example 경로에

selectview.jsp 파일을 추가하고 아래의 코드를 입력

 

 

 

<%@ 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>
<html>
<head>
<meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
  <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
<title>Insert title here</title>
</head>
<body>
<div class="container">
<table class="table table-striped">
<thead>
<tr><th>이름</th><th>나이</th><th>생일</th></tr>
</thead>
<tbody>
<!--<tr><td>이름1</td><td>나이1</td><td>생일1</td></tr>-->
<c:forEach var="s" items="${stdArr}">
<tr><td>${s.name}</td><td>${s.age}</td><td>${s.birth}</td></tr>
</c:forEach>
  </tbody>
</table>
</div>
</body>
</html>



 

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

10. webapp - WEB-INF - config - egovframework - springmvc 경로에

dispatcher-servlet.xml 파일에 다음코드를 추가 해준다.

 

<?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: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/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
                http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <context:component-scan base-package="egovframework">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>
    
    
<context:component-scan base-package="com.test.mybatis"></context:component-scan>

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>
        </property>
    </bean>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
        <property name="interceptors">
            <list>
                <ref bean="localeChangeInterceptor" />
            </list>
        </property>
    </bean>
    
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
    <!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>

    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="cmmn/egovError"/>
        <property name="exceptionMappings">
            <props>
                <prop key="org.springframework.dao.DataAccessException">cmmn/dataAccessFailure</prop>
                <prop key="org.springframework.transaction.TransactionException">cmmn/transactionFailure</prop>
                <prop key="org.egovframe.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
                <prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
            </props>
        </property>
    </bean>
    
    
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>       
    
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 아래부분은 매핑할 xml파일이 있는 패키지경로를 설정한다. -->
<property name="typeAliasesPackage" value="com.test.mybatis" />
<property name="mapperLocations" value="classpath:com/test/mybatis/*.xml" />
</bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>  

    <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
    p:viewClass="org.springframework.web.servlet.view.JstlView"
    p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp"/>

    <!-- For Pagination Tag -->
    <bean id="imageRenderer" class="egovframework.example.cmmn.web.EgovImgPaginationRenderer"/>

    <bean id="paginationManager" class="org.egovframe.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
        <property name="rendererType">
            <map>
                <entry key="image" value-ref="imageRenderer"/>
            </map>
        </property>
    </bean>
<!-- /For Pagination Tag -->

    <mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/>
</beans>

 

 

 

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

11. 서버를 실행한다. 

 

http://localhost:8086/testMyBatis/insert.do 주소 이동후 결과 확인

 

 

 

 

값이 추가 된것을 확인한다.

 

http://localhost:8086/testMyBatis/select.do 주소로 이동

 

 

DB에서 불러오는 모습을 볼수 있다.

전자정부 프레임워크 값넘기기 연습 (9) AOP 테스트

 

1.  컨트롤러에 매핑 추가

 

@Autowired
Hello myH;

 

@RequestMapping("/myaop.do")
public String myaop(Model model) throws Exception {

//int n = myH.method1();
//System.out.println("n="+n);
//myH.method1();

String s = myH.testA();
System.out.println(s);

return "test";
}

 

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

2. webapp - WEB-INF - jsp - egovframework - example 경로에

test.jsp 파일을 만들고 아래의 코드를 입력

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> test .....</h1>

</body>
</html>

 

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

3. pom.xml에 다음 코드 추가

 

     <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->

        <dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.6</version>
</dependency>
        <dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2</version>
</dependency>

 

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

4. webapp 경로 아래에

test.html 파일을 만들고 아래의 코드를 입력

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>hello</h1>
</body>
</html>

 

 

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

5. my.aoptest 패키지 경로에 

Hello.java 파일 생성후 아래의 코드 입력

 

package my.aoptest;

public class Hello {

public String testA() {
System.out.println("testA call");
return "testA return";

}
public String testB() {
System.out.println("testB call");
return "testB return";

}

public int method1() {

System.out.println("method1 call");

return 100;

}

}

 

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

6. egovframework.example.sample.web 패키지 경로에

AdvisorClass.java 파일 생성후 아래의 코드 입력

 

 

package egovframework.example.sample.web;

import org.aspectj.lang.ProceedingJoinPoint;

public class AdvisorClass 
{
public void beforeMethod() {
System.out.println("beforeMethod 호출");
}

public void afterMethod() {
System.out.println("afterMethod 호출");
}

public Object aroundMethod(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("aroundMethod 호출1");

// 원래의 메서드를 호출한다.
Object obj = pjp.proceed();

System.out.println("aroundMethod 호출 2:"+obj);

return obj;
}

public void afterReturningMethod() {
System.out.println("afterReturningMethod 호출");
}

public void afterThrowingMethod(Throwable e1) {
System.out.println("afterThrowingMethod 호출");
System.out.println(e1);
}    
}

 

 

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

7. egovframework.example.sample.web 패키지 경로에

MyAdvice.java 파일 생성후 아래의 코드 입력

 

package egovframework.example.sample.web;

import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.util.StopWatch;

@Aspect
@Component
public class MyAdvice {
    StopWatch stopWatch = new StopWatch();
    //@Before("execution(* my.aoptest.*.*(..))")
   @Before("execution(* my.aoptest.Hello.test*(..))")
   public void before()
   {
       System.out.println("before.... time");
       stopWatch.start();
   }
   @After("execution(* my.aoptest.Hello.test*(..))")
   public void after()
   {
        System.out.println("after");
        stopWatch.stop();
        System.out.println(stopWatch.prettyPrint());       
   }
    
// @Around("execution (* my.aoptest.*.*(..))")
// public Object time(ProceedingJoinPoint pjp) {
 
//  System.out.println("around start");
//  Object result = null;
//  try {
// //...
//  result=pjp.proceed(); // testA()
//  System.out.println("result="+result);
// //...
//  }catch (Throwable e) {
//  e.printStackTrace();
//  }
//  System.out.println("around end");
//  return result;
//  }    
}

 

 

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

8.  webapp - WEB-INF - config - egovframework - springmvc - 

dispatcher-servlet.xml  파일에 아래의 코드를 추가한다.

 

<?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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
                http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

    <context:component-scan base-package="egovframework">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>
    
    
    
    
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

<bean id="myH" class="my.aoptest.Hello"></bean>
    <bean id="advisor1" class="egovframework.example.sample.web.AdvisorClass"></bean>
    
<aop:config>
<aop:aspect ref='advisor1'>
<aop:pointcut id="point1"
expression="execution(* method1())" />

<aop:before method="beforeMethod" pointcut-ref="point1" />
 <aop:after method="afterMethod" pointcut-ref="point1"/> 
<aop:around method="aroundMethod" pointcut-ref="point1" />
<!-- <aop:after-returning method="afterReturningMethod" pointcut-ref="point1"/> --> 
<!-- <aop:after-throwing method="afterThrowingMethod" pointcut-ref="point1" throwing="e1"/> -->
</aop:aspect>
</aop:config>




    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>
        </property>
    </bean>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
        <property name="interceptors">
            <list>
                <ref bean="localeChangeInterceptor" />
            </list>
        </property>
    </bean>
    
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
    <!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>

    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="cmmn/egovError"/>
        <property name="exceptionMappings">
            <props>
                <prop key="org.springframework.dao.DataAccessException">cmmn/dataAccessFailure</prop>
                <prop key="org.springframework.transaction.TransactionException">cmmn/transactionFailure</prop>
                <prop key="org.egovframe.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
                <prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
            </props>
        </property>
    </bean>

    <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
    p:viewClass="org.springframework.web.servlet.view.JstlView"
    p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp"/>

    <!-- For Pagination Tag -->
    <bean id="imageRenderer" class="egovframework.example.cmmn.web.EgovImgPaginationRenderer"/>

    <bean id="paginationManager" class="org.egovframe.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
        <property name="rendererType">
            <map>
                <entry key="image" value-ref="imageRenderer"/>
            </map>
        </property>
    </bean>
<!-- /For Pagination Tag -->

    <mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/>
</beans>

 

 

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

9. 실행 

http://localhost:8086/testAOP/myaop.do 를실행하면

 

 

 

 

 

콘솔 결과 값을 볼수 있다.

1. ajax 를 사용하여 테스트하기

webapp 경로에 07.test.html 파일을 생성후 아래의 코드를 작성

 

<h1>hello</h1>
<h1>hi.............</h1>

 

 

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

2. webapp - WEB-INF - jsp - egovframework - example 경로에 

07.ajtest.jsp 파일 생성후 아래의 코드를 작성

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    

<h1>ajax call</h1>

 

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

3. test.my.mymodel 패키지 경로에 StudentAjaxDAO.java 추가

아래의 코드를 입력

 

package test.my.mymodel;

import java.sql.*;

import org.apache.commons.dbcp.BasicDataSource;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class StudentAjaxDAO {


@Autowired
BasicDataSource dataSource;

Connection conn = null;
Statement stmt = null;

public String selectStudentJSON() {

ResultSet rs=null;
JSONArray jarr = new JSONArray();
try {
String sql ="select * from student";
conn = dataSource.getConnection();
stmt = conn.createStatement();  
        rs = stmt.executeQuery(sql);
        while( rs.next()){
         JSONObject jo = new JSONObject();
         String name = rs.getString("name");
         int age = rs.getInt("age");
         Date birth = rs.getDate("birth");
         jo.put("name", name);
         jo.put("age", age);
         jo.put("birth", birth.toString() );
         jarr.add( jo );
        }
        conn.close();
}catch( Exception err) {
}

return jarr.toJSONString();
}


}

 

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

4. pom.xml 에  각종 드라이버 추가

 



<!-- json -->
<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

 

 

         <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
    <groupId>commons-dbcp</groupId>
     <artifactId>commons-dbcp</artifactId>
     <version>1.4</version>
</dependency>

 

 

 

<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.3.22</version>
</dependency>

 

 

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.19</version>
</dependency>


<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.6</version>
    <scope>runtime</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/cglib/cglib -->
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2.2</version>
</dependency>

--------------------------------------------------------------------------------------------
5. 컨트롤러 추가 MyController.java 에 컨트롤러 추가

 

 

@RequestMapping(value = "/ajaxcall.do", method = RequestMethod.GET)
public String ajaxcall(Model model) throws Exception {

return "07.ajtest";
}

 

 

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

 

6. 결과 확인 

http://localhost:8086/ttt/06.ajax.html 주소로 이동후 확인 버튼을 눌러본다.

ajax call 이 나오며 요청 버튼을 누르면

06.ajax.html 안에 아랫부분에서 07.test.html 도 같이 불러온다.

 

 

1.  selectview 만들기

test.my.mybean  패키지 경로에

Student.java 파일 추가 아래의 코드를 입력

 

 

package test.my.mybean;

public class Student {


String name;
int age;
MyData mydata;


public Student(String name, int age, MyData mydata) {
this.name = name;
this.age = age;
this.mydata = mydata;
}

public Student() {
this.name = "";
this.age = 0;
this.mydata = null;
}


public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public MyData getMydata() {
return mydata;
}
public void setMydata(MyData mydata) {
this.mydata = mydata;
}





}

 

 

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

2.  webapp - WEB-INF - jsp - egovframework - example 경로에

06.selectview.jsp 파일 추가 아래의 코드를 입력

 

<%@ 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>
<html>
<head>
<meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
  <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
<title>Insert title here</title>
</head>
<body>
<div class="container">
<table class="table table-striped">

<thead>
<tr><th>이름</th><th>나이</th><th>생일</th></tr>

</thead>
<tbody>
<c:forEach var="s" items="${stdArr}">
<tr><td>${s.name}</td><td>${s.age}</td><td>${s.birth}</td></tr>
</c:forEach>

<!--  <tr><td>이름1</td><td>나이1</td><td>생일1</td></tr>
<tr><td>이름2</td><td>나이2</td><td>생일2</td></tr>
 -->
</tbody>
</table>
</div>
</body>
</html>

 

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

3. webapp 경로에  06.ajax.html 파일을 생성 아래의 코드를 추가

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
h1{
color:red;
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
function fn(){
//$('#mydiv').text('hello')
//$('#mydiv').load('07.test.html') // ajax html, json, xml

//$ajax( {url:'ajaxcall.do',type:'get',
// dataType:'html',data:{myname:'aaa',age:20}})

$('#mydiv').load('ajaxcall.do?myname=aaa')//'ajaxcall.do?myname=aaa&age20'
}
</script>
</head>
<body>
<button onclick="fn()">확인</button>
<a href="07.test.html" target="myi">요청</a>
<div id="mydiv"></div>
<hr>
<iframe name="myi" width="100%" height="500"></iframe>

</body>
</html>

 

 

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

4. 컨트롤러 추가

Mycontroller.java 파일에  아래의 코드를 추가 한다.

 

@RequestMapping(value = "/select.do", method = RequestMethod.GET)
public String selectdao(Model model) throws Exception {
System.out.println("call.....");
StudentDAO stdDAO = new StudentDAO();
ArrayList<StudentDTO> stdArr = stdDAO.selectStudent();

model.addAttribute("stdArr", stdArr);

return "06.selectview";
}

 

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

5. 결과 확인

http://localhost:8086/ttt/select.do 주소로 접속해

DB에 들어있는 정보들이 잘 불러와 지는지 확인한다.

 

 

 

 

 

 

 

 

이름, 나이, 생산일 DB에 입력하기

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

1.오라클에 scott 계정으로 STUDENT 테이블 생성

NAME, AGE, BIRTH 칼럼 생성

 

 

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

2. test.my.mybean 패키지에 MyData 클래스 추가 아래의 코드 입력

 

 

 

package test.my.mybean;

public class MyData {
int myData;




public MyData() {
this.myData = 0;
}

public MyData(int myData) {
this.myData = myData;
}

public int getMyData() {
return myData;
}

public void setMyData(int myData) {
this.myData = myData;
}
}

 

 

 

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

3. DAO, DTO 파일 생성

test.my.mymodel 패키지 경로에 StudentDTO.java 파일과

StudentDAO.java 파일을 만들어준다. 

 

우선 StudentDTO.java 파일의 코드를 아래와 같이 입력한다.

 

 

package test.my.mymodel;

public class StudentDTO {


String name;
int age;
String birth;


public StudentDTO() {

}

public StudentDTO(String name, int age, String birth) {
this.name = name;
this.age = age;
this.birth = birth;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}


}

 

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

4.패키지경로 : test.my.mymodel 에 

StudentDAO.java 파일의 코드를 아래와 같이 입력한다.

 

 

package test.my.mymodel;

import java.sql.*;
import java.util.ArrayList;

public class StudentDAO {

String oracleURL = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "scott";
String pass = "tiger";
Connection conn = null;
Statement stmt = null;

public StudentDAO() {
try {

Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(oracleURL, id, pass);

} catch (Exception ex) {

}
}

public String insertData(String name, int age, String birth) {

String sql = String.format("insert into student values('%s','%d','%s')",name,age,birth);

 try{
        

stmt = conn.createStatement();  
        stmt.execute(sql);
        conn.close();
        
        return "insert sucess";
        
    }catch( Exception ex){
     return ex.getMessage();
    }
 
}



public ArrayList<StudentDTO> selectStudent() {

String sql = "select * from student";
ResultSet rs = null;
ArrayList<StudentDTO> arr = new ArrayList<StudentDTO>();

try{
        stmt = conn.createStatement();  
        rs = stmt.executeQuery(sql);
        while (rs.next()) {
         String name = rs.getString("name");
         int age = rs.getInt("age");
         Date birth = rs.getDate("birth");
         arr.add(new StudentDTO( name, age, birth.toString()));
        
        }
        conn.close();
        return arr;
                
    }catch( Exception ex){
     return null;
    }
}

}

 

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

5. webapp - WEB-INF - jsp - egovframework - example 경로에

05.insertview.jsp 파일을 추가 아래의 코드를 작성

 

 

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


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>결과 : ${result}</h1>

</body>
</html>

 

 

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

6. webapp - WEB-INF - config - egovframework - springmvc 경로에

dispatcher-servlet.xml 파일에 아래의 빈을 추가해준다.

 

 

     <bean id="myData" class="test.my.mybean.MyData">
     <constructor-arg value="100"></constructor-arg>
    </bean>

 

아래 코드를 컨트롤러 부분에 추가를 해준다.

 

@Autowired
MyData myData;

 

 

@RequestMapping(value = "/mybean.do", method = RequestMethod.GET)
public void mybean(HttpServletResponse response, Model model) throws Exception {

// response.setCharacterEncoding("euc-kr");
response.setContentType("text/html; charset=utf8");
int n = myData.getMyData();
// model.addAttribute("num1", num1); // 데이터 설정.....
try {
PrintWriter out = response.getWriter();
out.print("<h1>테스트</h1>");
out.print("<h1>" + n + "</h1>");
out.flush();
} catch (IOException e) {
e.printStackTrace();
}

// return "02.sumview"; //forward view
}

 

 

추가를 해주고

 

테스트로 http://localhost:8086/ttt/mybean.do 로 

dispatcher-servlet.xml 의 빈 값인 테스트값 n값 100 이 불러와지는지 테스트

 

 

 

 

 

컨트롤러 하나더 추가

 

@RequestMapping(value = "/insertdao.do", method = RequestMethod.GET)
public String insertdao(Model model) throws Exception {
System.out.println("call.....");
StudentDAO stdDAO = new StudentDAO();
String result = stdDAO.insertData("임꺽정", 30, "2019-11-12");

model.addAttribute("result", result);
return "05.insertview";

}

 

 

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

7. 실행결과 확인

 

 

주소창에 http://localhost:8086/ttt/insertdao.do 입력하여 자료가 DB에 들어갔는지 확인

 

 

 

임꺽정이 추가 되어 있다.

 

비만도 계산하기 코드 연습

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

1. webapp 폴더 아래에 05.bimanform.html 파일 생성

아래의 코드를 입력

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>비만도</h1>
<form action ="bimanproc.do" method="get" target="myi">
<label>키 </label> :
<input type ="number" name="height"><br>
<label>몸무게</label> :
<input type ="number" name="weight"><br>
<button>결과</button>
</form>

<iframe name="myi" width="100%" height="700" frameborder="0">
</iframe>

</body>
</html>

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

2. webapp - WEB-INF - jsp - egovframework - example 경로에

05.bimanview.jsp 파일 생성후 아래의 코드 작성

 

 

<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${result }</h1>
<img src="${imgResult}">
</body>
</html>

 

 

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

 

3.MyController.java 파일에 컨트롤러 추가

 

@RequestMapping(value = "/bimanproc.do")
public String bimanproc( int height, int weight, Model model)
{
double avgweight = (height - 100) * 0.85;
double biman  = (weight/avgweight) * 100;
String result;
String imgResult;
if( biman<=90) {
result = "저체중";
imgResult = "image/a.jpg";
}else if( biman<=110) {
result = "정상";
imgResult = "image/b.jpg";
}else if( biman<=120) {
result = "과체중";
imgResult = "image/c.jpg";
}else {
result = "비만";
imgResult = "image/d.jpg";
}
model.addAttribute("result",result);
model.addAttribute("imgResult",imgResult);
return "05.bimanview";
}

 

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

4. 결과 확인

http://localhost:8086/ttt/05.bimanform.html 에서 값 입력후 확인

 

 

다양한 입력값 처리 하기

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

1. webapp 경로밑에 04.form.html 파일 생성후 아래 코드입력

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<!-- <form action="param.do" method="get" target="_blank"> -->
<form action="04.param.do" method="get" target="myi">
<label>이름 </label> : 
<input type="text" name="myname" required><br>
<label>나이 </label> : 
<input type="number" name="myage" required min="1" max="120"><br>
<label>생일 </label> : 
<input type="date" name="mybirth" ><br>
<hr>
<label>전화번호 </label> : 
<input type="tel" name="myphone" pattern="\d{3}-\d{3,4}-\d{3,4}" placeholder="000-0000-0000"><br>
<label>이메일 </label> : 
<input type="email" name="myemail"><br>
<label>시간 </label> : 
<input type="time" name="mytime" min="09:00" max="18:00"><br>

<fieldset>
<legend>색상</legend>
<input type="radio" name="color" value="빨강">빨강<br>
<input type="radio" name="color" value="파랑">파랑<br>
<input type="radio" name="color" value="노랑">노랑<br>
</fieldset>

<fieldset>
<legend>취미</legend>
<input type="checkbox" name="hobby" value="골프">골프<br>
<input type="checkbox" name="hobby" value="낚시">낚시<br>
<input type="checkbox" name="hobby" value="영화">영화<br>
</fieldset>

<select name="company">
<option value="회사1">회사1</option>
<option value="회사2">회사2</option>
<option value="회사3">회사3</option>
</select>
<br>
<textarea rows="4" cols="100" name="mytxt"></textarea>
<br>
<button>확인</button>
</form>

<iframe name="myi" width="100%" height="700" frameborder="0"></iframe>
</body>
</html>

 

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

2. webapp - WEB-INF - jsp - egovframework - example 경로에

04.paramview.jsp 파일 생성후 아래의 코드 입력

 

<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>이름 : ${myname}</h3>
<h3>나이 : ${myage}</h3>
<h3>생일 : ${mybirth}</h3>
<h3>전화번호 : ${myphone}</h3>
<h3>이메일 : ${myemail}</h3>
<h3>칼라 : ${color}</h3>
<ul>
<c:forEach var="h" items="${hobby}">
<h3><li>${h}</li></h3>
</c:forEach>
</ul>

<h3>회사 : ${company}</h3>
<h3>txt : ${mytxt}</h3>


</body>
</html>

 

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

3. 컨트롤러에 아래의 코드 추가 (MyController.java)

 

 

@RequestMapping(value = "/04.param.do", method = RequestMethod.GET)
public String param04(String myname, int myage, String mybirth, String myphone, String myemail, String color,
String[] hobby, String company, String mytxt, Model model) throws Exception {

model.addAttribute("myname", myname); // 데이터 설정.....
model.addAttribute("myage", myage);
model.addAttribute("mybirth", mybirth);
model.addAttribute("myphone", myphone);
model.addAttribute("myemail", myemail);
model.addAttribute("color", color);
model.addAttribute("hobby", hobby);
model.addAttribute("company", company);
model.addAttribute("mytxt", mytxt);

return "04.paramview"; // forward view
}

 

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

 

4. 결과값 출력

 

http://localhost:8086/ttt/04.form.html 주소입력 이동후

 

 

 

 

 

 

ㄴ 폼에 입력 후 확인버튼을 누르면

 

 

 

결과값 출력을 확인 할수 있다.

webapp 경로 아래에 03.jstl.jsp 파일 코드 추가

webapp - images 아래폴더에 사진파일 추가 (a.jpg)

 

c:set 값에 따라 출력 결과가 달라지게 된다.

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:set var="name" value="이순신" />
<c:set var="age" value="20" />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test="${name=='홍길동'}">
<h1>홍길동입니다.</h1>
</c:if>
<c:if test="${name=='이순신'}">
<h1>이순신입니다.</h1>
<img src="images/a.jpg">
</c:if>

<c:choose>
<c:when test="${name=='홍길동'}">
<h1>홍길동입니다.</h1>
</c:when>
<c:when test="${name=='이순신'}">
<h1>이순신입니다.</h1>
</c:when>
<c:otherwise>
<h1>기타...</h1>
</c:otherwise>
</c:choose>
<hr>
<c:forEach var="n" begin="1" end="10" step="1">
<h3>${n}</h3>
</c:forEach>
</body>
</html>

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

 

결과물 : 

http://localhost:8086/ttt/03.jstl.jsp 주소 입력후 이동

 

이순신일때

 

 

 

홍길동일때

 

+ Recent posts