2018. 9. 5. 11:13

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0


이 에러가 뜨는데, 디버그 모드로 해도..... 클래스 다 끝나고, 에러가 떨어져서...


어디서 발생하는지도 모르겠고....했는데.....진짜.....


java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 


Exception은 결국 ArrayList에서 get(index) 했는데, 값이 없는데, 자꾸 get으로 가져오려고 하니까. 생기는거였다.


이때는 ArrayList 들중에 get(0) 이렇게 가져온게 없는지 확인해야한다.


ArrayList 초기화만 해주고, 넣은 값이 하나도 없는데, 0를 검색하니, 당연히 없으니까, 에러가 뜨는거였다.


나 같은 경우는.....




1
2
3
4
 tmpList.get(0).getName();

cs


저렇게 해놓은거 하나가 숨어있었다.ㅠㅠㅠㅠㅠㅠ


저거 하나때문에 거의 반나절을 버린듯...ㅠㅠㅠㅠ


그래서


1
2
3
if( tmpList.size()!=0){
    tmpList.get(0).getName();
}
cs

이렇게 싸이즈가 0이 아닐때만 실행되게 해놓았다.




'컴퓨터 > Java Spring Framework' 카테고리의 다른 글

JPA CascadeType 종류  (0) 2018.05.10
Spring Security logout Handler custom  (0) 2018.05.08
mod_jk연동 도메인 여러개  (0) 2018.03.09
톰캣 설치  (0) 2018.03.09
아파치 컴파일 설치  (0) 2018.03.09
Posted by Tyson
2018. 5. 10. 19:11


스프링에서 하나만 지웠는데, 조인 걸어논 테이블 데이터까지 삭제가 된거다...


그래서 보니까..... 


CascadeType.REMOVE


로 해놓은거다.....


아......그래서  Casecade Type 종류 찾아 놓았다....




밑에 출처 http://chomman.github.io/blog/java/jpa/programming/jpa-cascadetype-%EC%A2%85%EB%A5%98/

===================================================================



 

CascadeType의 종류에는 다음과 같은 것들이 있다.

  • CascadeType.RESIST – 엔티티를 생성하고, 연관 엔티티를 추가하였을 때 persist() 를 수행하면 연관 엔티티도 함께 persist()가 수행된다.  만약 연관 엔티티가 DB에 등록된 키값을 가지고 있다면 detached entity passed to persist Exception이 발생한다.
  • CascadeType.MERGE – 트랜잭션이 종료되고 detach 상태에서 연관 엔티티를 추가하거나 변경된 이후에 부모 엔티티가 merge()를 수행하게 되면 변경사항이 적용된다.(연관 엔티티의 추가 및 수정 모두 반영됨)
  • CascadeType.REMOVE – 삭제 시 연관된 엔티티도 같이 삭제됨
  • CascadeType.DETACH – 부모 엔티티가 detach()를 수행하게 되면, 연관된 엔티티도 detach() 상태가 되어 변경사항이 반영되지 않는다.
  • CascadeType.ALL – 모든 Cascade 적용


Posted by Tyson
2018. 5. 8. 18:11

스프링에서, 로그아웃 정보를 가져와야하는데,


시큐리티에서 로그아웃을 다 처리해버리니까.....유저정보를 가져와서 로그아웃 정보를 가지고 있고 싶을때


뒤져보니까. 시큐리티에서 로그아웃 핸들러를 만들어서, 로그아웃시, 처리 클래스를 만들어서 작업하면 된다.



밑에는 다른분 블로그에서 퍼온거~ 감사합니다!!


===================================================================================



스프링시큐리티 구조를 이해 하기에 앞서

http://www.slideshare.net/madvirus/ss-36809454 이 자료를 읽어보면 많은 도움이 될거에요.


지금은 logout custom 을 하기위한 작업으로  SimpleUrlLogoutSuccessHandler

을 상속 받아 사용 하기로 한다.


security.xml

<security:logout

    logout-url="/logout"

    success-handler-ref="myLogoutSuccessHandler"

/>




@Component

public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {


    @Override

    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,

            Authentication authentication) throws IOException, ServletException {


        if (authentication != null) {

            // do something 

        }


        setDefaultTargetUrl("/login");

        super.onLogoutSuccess(request, response, authentication);       

    }

}



로그아웃이 된데에 어디로 보낼지 setDefaultTargetUrl 에 담아 이동 하도록 한다.


stackoverflow 참고 자료.



출처: http://mycup.tistory.com/166 [한글창제의 기쁨]

'컴퓨터 > Java Spring Framework' 카테고리의 다른 글

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 에러  (0) 2018.09.05
JPA CascadeType 종류  (0) 2018.05.10
mod_jk연동 도메인 여러개  (0) 2018.03.09
톰캣 설치  (0) 2018.03.09
아파치 컴파일 설치  (0) 2018.03.09
Posted by Tyson
2018. 3. 9. 18:00


다운받기


[root@localhost home]# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.43-src.tar.gz



다운을 받고,


> tar xvfz tomcat-connectors-1.2.30-src.tar.gz

> cd /home/kyu/tomcat-connectors-1.2.30-src/native

> ./configure --with-apxs=/home/apache2/bin/apxs

           /home/apache2는 아파치 설치된 디렉토리의 /bin/apxs 폴더로 한다.

> make

> make install



make install 하면, 자동으로 mode_jk.so파일이 아파치의 /modules 폴더로 들어간다.



그다음에, 아파치 conf폴더로 들어간다.(나같은 경우는 /home/apache2/conf/ 폴더이다.)


거기에서

>vi httpd.conf 파일을 열고,


LoadModule jk_module modules/mod_jk.so


<IfModule jk_module>


        JkWorkersFile conf/workers.properties


        # Configure logging and memory


        JkShmFile logs/mod_jk.shm


        JkLogFile logs/mod_jk.log


        JkLogLevel info


</IfModule>


를 추가해준다.


나같은 경우는 workers.properties란 파일을 추가로 만들어서 그곳에 톰캣 연결 정보를 넣을것이다.


그리고, vhost로 두개의 도매인을 띄울거라,



# Virtual hosts

#Include conf/extra/httpd-vhosts.conf


여기에서 #를 지워준다.


그리고, 도메인 설정을 httpd-vhosts.conf 파일에 설정하면 된다.


여러 설정을 파일로 나눠서 관리하게 편하게 하고, 파일을 include 시켜주는 구조이다.




저장하고 나와서,


> vi workers.properties

를 치고 


# Define worker names


worker.list=project1 project2 

worker.project2.type=ajp13

worker.project2.host=localhost

worker.project2.port=8008

worker.project1.type=ajp13

worker.project1.host=localhost

worker.project1.port=8009



위와같이 작성해준다.


난 프로젝트 두개를 띄울거라, 위에 같이 두개를 적어준다.


여러개 할때는 콤마(,) 없이, 그냥 띄어쓰기로 하면된다.




이제는 vhost에서 서버 접속 설정을 해줘야 한다.


> cd /home/apache2/conf/extra 폴더로 가면



[root@localhost extra]# ls

httpd-autoindex.conf  httpd-info.conf       httpd-mpm.conf                 httpd-userdir.conf

httpd-dav.conf        httpd-languages.conf  httpd-multilang-errordoc.conf  httpd-vhosts.conf

httpd-default.conf    httpd-manual.conf     httpd-ssl.conf                 proxy-html.conf



위에 같이 뜬다.


> vi httpd-vhosts.conf

파일을 열어서,


다른거 지우고 아래와 같이 써준다.


<VirtualHost *:80>

   DocumentRoot /

   ServerName localhost


    <IfModule log_config_module>

        LogFormat "%v %h %l %u %t \"%r\" %>s %b"

        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

        LogFormat "%h %l %u %t \"%r\" %>s %b" common


        <IfModule logio_module>

          LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

        </IfModule>


        #CustomLog "logs/project1-acoustid_access_log" common

        #CustomLog "logs/project1-acoustid_access_log" combined

        CustomLog "|/home/apache2/bin/rotatelogs /home/log/apache2/project1_access_log.%Y%m%d 86400 +540" combined

    </IfModule>



   JkLogFile logs/mod_jk.log

   JkLogLevel info

   JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

   JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

   JkRequestLogFormat "%w %V %T"



   SetEnvIf Request_URI "/weblog/*" no-jk


   JkMount /* project1


   <Directory "/home/tomcat_project1/webapps/project1">

       Options FollowSymLinks

       AllowOverride None

       Order allow,deny

       Allow from all

   </Directory>


   <Directory "/home/weblog">

       Options FollowSymLinks

       AllowOverride None

       Order allow,deny

       Allow from all

   </Directory>


</VirtualHost>



폴더들은 자신이 원하는폴더로 지정해준다. 

대부분 로그정보 파일 저장 경로임.


그리고,   JkMount /* project1

이거가 중요하다.


여기에 아까 workers.properties 에 세팅한 톰캣에서 지정한 이름을 적어줘야 한다.


그래야 저기로 접속했을때 jk를 사용해서 지정한 포트로 보내준다.


두개의 도메인을 할시에는 도메인 명에 다른거 바꿔서 똑같이 하나 더 만들어준다.

그리고 폴더 경로 및 이름들은 바꿔주면 된다.


'컴퓨터 > Java Spring Framework' 카테고리의 다른 글

JPA CascadeType 종류  (0) 2018.05.10
Spring Security logout Handler custom  (0) 2018.05.08
톰캣 설치  (0) 2018.03.09
아파치 컴파일 설치  (0) 2018.03.09
스프링에서 DB 연결하기(ver. mySQL)  (0) 2017.03.31
Posted by Tyson
2018. 3. 9. 17:54





아래 방법은 자바 jdk가 설치 되어있다는 전재하에 설명임.


설치 안했을때는 먼저 설치하시고 하시길..




[root@localhost bin]# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-8/v8.0.50/bin/apache-tomcat-8.0.50.tar.gz



[root@localhost bin]# tar apache-tomcat-8.0.50.tar.gz


심볼릭 마크를 해줘도 된다.


근데, 난 그냥 폴더명을 바꿔주었다.


[root@localhost appls]# mv apache-tomcat-8.0.50 tomcat_project


(tomcat_project로 함)

그리고 설정에서 경로를 거기로 해주면 되니까.




그리고 환경변수를 지정해 줘야한다.


[root@localhost etc]# vi /etc/profile



export CATALINA_HOME=/appls/tomcat_project

export PATH=$PATH:$CATALINA_HOME/bin



실행해보려면, 

[root@localhost bin]# ./startup.sh 

실행하고,


확인하는법은,

[root@localhost bin]# ps -ef | grep java

위처럼 해보면 띄어져 있다.


중지할때는 아래처럼 하면된다.

[root@localhost bin]# ./shutdown.sh 


기본 8080포트로 되어 있으니,


http://localhost:8080 으로 접속하면, 


아래와 같은 화면이 보인다.





그리고 아파치랑 연동해서 사용하려면 mod_jk란걸 설치해 줘야한다.

다음 포스트에 mod_jk연동법은 올리겠다.





'컴퓨터 > Java Spring Framework' 카테고리의 다른 글

JPA CascadeType 종류  (0) 2018.05.10
Spring Security logout Handler custom  (0) 2018.05.08
mod_jk연동 도메인 여러개  (0) 2018.03.09
아파치 컴파일 설치  (0) 2018.03.09
스프링에서 DB 연결하기(ver. mySQL)  (0) 2017.03.31
Posted by Tyson
2018. 3. 9. 17:06


아파치 톰캣을 쓰려고 보니까,


아파치도 yum말고, 컴파일로 수동설치해야지 디테일한 세팅이 가능하더라.


그래서 아파치를 다운 받아서 직접 설치하는데 너무 중간중간 에러가 많이 나와서 정리해놓았다.


여기저기서 주워온것들이 많음.


> wget http://apache.mirror.cdnetworks.com/httpd/httpd-2.4.29.tar.gz

으로 파일을 받자, 

위경로는 버젼이 바뀔수있으므로 링크들어가서 파일 있는지 확인하자.


> tar xvfz httpd-2.4.29.tar.gz

압축을 풀고,


>cd httpd-2.4.29.tar.gz

폴더를 이동하고,


>./configure

>make

>make install


를 해본다.


근데, 이때 에러 나오는것들중에, 

 configure: error: Cannot use an external APR-util with the bundled APR

이런거나, 

checking for APR... configure: WARNING: APR version 1.4.0 or later is required, found 1.3.9
configure: WARNING: skipped APR at apr-1-config, version not acceptable
no
configure: error: APR not found. Please read the documentation.

이런 에러가 나오면, apr, apr-util을 설치 하자.

 다음 설치 할 것은 apr-util

 끝으로 pcre을 설치(이건 있으면 그냥 넘어가던지 없으면 다시 설치한다.)

 

여기까지 설치 하였다면 기본적은 패키지는 전부 설치되어 있다고 볼 수 있다.
이제 아파치를 세팅할 것이다.

이렇게 했는데, 또 밑에 같은 에러가 나온다.

APR을 yum에서도 설치했었는데, 중복이다보니까, 새로 설치한것을 못찾고 버젼 낮은거만 찾은거다. 그래서 yum으로 지워준다.


exports.c:1838: error: previous definition of 'ap_hack_apu_version' was here

exports.c:2884: error: redefinition of 'ap_hack_apu_version_string'

exports.c:1839: error: previous definition of 'ap_hack_apu_version_string' was here

make[2]: *** [exports.lo] 오류 1

make[2]: Leaving directory `/home/${사용자}/httpd-2.4.2/server'

make[1]: *** [all-recursive] 오류 1

make[1]: Leaving directory `/home/${사용자}/httpd-2.4.2/server'

make: *** [all-recursive] 오류 1


이 에러는 yum으로 낮은 버전의 APR을 설치한 후 다시 컴파일 설치로 최신버전의 APR이 설치되었을때 발생하는 문제로 낮은 버전의 APM을 지우면 됩니다.

1
#yum remove APR
1
#yum remove APR
> ./configure --prefix=/appls/apache2 --with-apr=/usr/local/apr

아니면, 뒤에 -with-apr하고 apr 설치한 경로를 입력해 준다.



이제 다했다.


> /usr/local/apache/bin/

아파치 설치한 폴더의 bin폴더로 가서,

> ./httpd start

를 해본다.


그리고 접속하면 밑에처럼 뜰거다.그럼 된거..ㅠㅠ



It works!



이제 서비스에 등록하자.


> cp /usr/local/apache/bin/apachectl /etc/init.d/httpd


서비스 시작 폴더에 아파치 실행파일을 httpd 이름으로복사해준다.


그리고 서비스에 등록하자.


[root@localhost bin]# chkconfig --add httpd

httpd 서비스는 chkconfig 를 지원하지 않습니다


근데, 위와 같은 에러가 나온다.ㅠㅠㅠㅠ


그러면, httpd 폴더로 가서, 



[root@localhost /]# vi /etc/init.d/httpd


#!/bin/sh 밑에 추가 5줄



# chkconfig: 2345 90 90

# description: init file for Apache server daemon

# processname: /usr/local/server/apache/bin/apachectl

# config: /usr/local/server/apache/conf/httpd.conf

# pidfile: /usr/local/server/apache/logs/httpd.pid


빨간색은 아파치 자신이 지정해서 설치한경로


정상적으로 등록이 되는지 확인해 보자.


 


[root@localhost /]# chkconfig --add httpd 


[root@localhost /]# chkconfig --list | grep httpd



httpd           0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제




자, 이제 다 됬다...


'컴퓨터 > Java Spring Framework' 카테고리의 다른 글

JPA CascadeType 종류  (0) 2018.05.10
Spring Security logout Handler custom  (0) 2018.05.08
mod_jk연동 도메인 여러개  (0) 2018.03.09
톰캣 설치  (0) 2018.03.09
스프링에서 DB 연결하기(ver. mySQL)  (0) 2017.03.31
Posted by Tyson
2017. 3. 31. 11:31

이 자바 스프링 넘이란 놈을 하면서.....진짜....설정때문에 어마어마한 시간을 보내고 있다~


내가 자바를 싫어했던 이유가 새록새록 생각났다~


먼저 pom.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
27
28
29
30
31
32
33
34
35
36
   <!-- print query log -->
        <dependency>
            <groupId>org.lazyluke</groupId>
            <artifactId>log4jdbc-remix</artifactId>
            <version>0.2.7</version>
        </dependency>
    
    
       <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.31</version>
        </dependency>
 
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
cs

위에 것들을 추가해준다. 

mysql, mybatis 그리고 쿼리 띄어주는것까지 추가해주고,




/src/main/webapp/WEB-INF/spring/ 폴더의

root-context.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
27
28
29
   <bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/testtable" />
        <property name="username" value="root" />
        <property name="password" value="password" />
    </bean>
 
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:/mapper/**/*.xml" />
    </bean>
 
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSession" />
    </bean>
 
 
    <!-- query log -->
    <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
        <constructor-arg ref="dataSourceSpied" />
        <property name="logFormatter">
            <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
                <property name="loggingType" value="MULTI_LINE" />
                <property name="sqlPrefix" value="SQL    :  " />
            </bean>
        </property>
    </bean>
 
cs


mysql 정보는 

        <property name="url" value="jdbc:mysql://localhost:3306/testtable" /> 에

localhost:포트/스키마이름 

해주고, 

밑에 아이디랑 비번 넣어준다.


그 밑에 sqlSession은 마이바티스를 불러와서 쿼리를 넣어준다는 말인데,

쿼리문장을 넣는 곳에 경로를 넣어준다.

        <property name="mapperLocations" value="classpath:/mapper/**/*.xml" />

위 경로는 

/src/main/resources/mapper/전체폴더/전체.xml파일

이란 뜻이다.

나 같은경우는 게시판을 만들꺼니까.

/src/main/resources/mapper/board/board_sql.xml 이란 파일을 만들었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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="user">
    <select id="selectCount" resultType="Integer">
        <![CDATA[
            SELECT count(*)  
              FROM board
        ]]>
    </select>
    <!-- <select id="selectUserId" parameterType="hashmap" resultType="Integer">
        <![CDATA[
            SELECT count(user_id) checkResult 
              FROM user 
                  WHERE user_id = #{user_id}
        ]]>
    </select> -->
</mapper>
 
cs


보드 테이블 갯수조회 쿼리만 넣었다.

값이 안들어가도 그냥 조회만되게..



/src/main/java 밑에 패키지를 만들어 주고,

나는 패키지 com.myboardtest.dao 만들었다. 

콘트롤러랑 다른 패키지를 만들었다.

그리고, 거기에

/src/main/java/com.myboardtest.dao/AbstractDAO.java 를 만들어 주고,

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
package com.myboardtest.dao;
 
import java.util.List;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
 
public abstract class AbstractDAO {
    protected Log log = LogFactory.getLog(AbstractDAO.class);
 
    @Autowired
    private SqlSessionTemplate sqlSession;
 
    protected void printQueryId(String queryId) {
        if (log.isDebugEnabled()) {
            log.debug("\t QueryId : " + queryId);
        }
    }
 
    public Object insert(String queryId, Object params) {
        printQueryId(queryId);
        return sqlSession.insert(queryId, params);
    }
 
    public Object update(String queryId, Object params) {
        printQueryId(queryId);
        return sqlSession.update(queryId, params);
    }
 
    public Object delete(String queryId, Object params) {
        printQueryId(queryId);
        return sqlSession.delete(queryId, params);
    }
 
    public Object selectOne(String queryId) {
        printQueryId(queryId);
        return sqlSession.selectOne(queryId);
    }
 
    public Object selectOne(String queryId, Object params) {
        printQueryId(queryId);
        return sqlSession.selectOne(queryId, params);
    }
 
    @SuppressWarnings("rawtypes")
    public List selectList(String queryId) {
        printQueryId(queryId);
        return sqlSession.selectList(queryId);
    }
 
    @SuppressWarnings("rawtypes")
    public List selectList(String queryId, Object params) {
        printQueryId(queryId);
        return sqlSession.selectList(queryId, params);
    }
}
cs


이렇게 만들고,

 얘는 abstract class라 또

src/main/java/com.myboardtest.dao/boardDAO.java 를 만들어서 AbstractDAO.java를 불러왔다.

1
2
3
4
5
6
7
8
9
10
11
package com.myboardtest.dao;
 
import org.springframework.stereotype.Repository;
 
@Repository("dao")
public class boardDAO extends AbstractDAO {
    public Integer selectCount() {
        return (Integer) selectOne("user.selectCount");
    }
}
 
cs


참고로 여기에는 서비스파일을 만드는 대신에,

어노테이션으로 @Repository("dao") 라고 만들어줬다.

아직 어노테이션은 잘 모르지만, @Repository 라는게, dao라는 이름으로 저장소같은거를 만들어줬다라고 이해했다.


그리고, Integer로 받을꺼기 때문에 인티저 클래스 만들어 주고,


*int 는 null 값을 못받고, Integer는 널 값을 받을수있기때문에 Integer로 했다.



그리고, selectOne("user.selectCount"); 은, AbstractDAO에서 selectOne이라는 클래스에 

board_sql.xml에 있는 namespace = user에서 id = selectCount 에 있는 쿼리문을 가져와서 넣는다는 거다.



그리고 홈컨트롤러 

/src/main/java/com.myboardtest.myboard/HomeController.java 에서 애네를 불러와야한다.

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
package com.myboardtest.myboard;
 
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.myboardtest.dao.boardDAO;
 
/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
 
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
 
    // @Autowired
    // private SqlSessionTemplate sqlSession;
 
    /**
     * Simply selects the home view to render by returning its name.
     */
    @Autowired
    private boardDAO dao;
 
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
 
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
 
        String formattedDate = dateFormat.format(date);
 
        model.addAttribute("serverTime", formattedDate);
 
        // System.out.println(sqlSession.selectOne("SELECT * FROM BOARD"));
        /*
         * boardDAO dao = new boardDAO();
         */ System.out.println(dao.selectCount());
        return "home";
    }
 
}
cs


@Autowired

private boardDAO dao;

라는 거가 아까 boardDAO.java에서 저장소에 넣은 dao를 불러온다.


System.out.println(dao.selectCount());

그리고 그냥 콘솔에서 찍어만 보았다.

결과값이 뜨더군.


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

이 넘의 스프링 시작하는데, 너무 클래스들이 얼히고 설켜 있어서, 처음에 구조 파악하는데 오래걸렸다.

지금은 그냥 저장소에서 불러왔는데, 

서비스 패키지를 만들어 주고, 서비스들을 그곳에 모아두면 나중에 이용할때 더 편하긴 하다.

그거는 다음 포스트에 올리는걸로




'컴퓨터 > Java Spring Framework' 카테고리의 다른 글

JPA CascadeType 종류  (0) 2018.05.10
Spring Security logout Handler custom  (0) 2018.05.08
mod_jk연동 도메인 여러개  (0) 2018.03.09
톰캣 설치  (0) 2018.03.09
아파치 컴파일 설치  (0) 2018.03.09
Posted by Tyson