728x90
어젯밤 MBC에서 라이브에이드 공연을 보여줬는데

겨우 DMB로 보는데
지금 레전드로 불리는 사람들의 젊은 모습이 꽤 인상적이었다

그 중에서 필 콜린스가 피아노 치며 노래를 부르는데
초반에 피아노 음을 틀려 머쓱해하는 모습이
잡혔다 ㅋ

TV에서 볼 때는 중년이었는데
라이브에서는 앳 된 모습이 신선했다.

Take a look at me now~~~
728x90
728x90

전자정부 프레임워크는 기본으로 회원전용 서비스이다.

로그인을 해야만 사용할 수 있는데 blog처럼 누구나 와서 읽을 수 있는 서비스를 하려고 하면 좀 복잡하다.


간단하게 *.do 형태로 호출되는 서비스와

*.bog 로 호출되는 서비스를 나누어서 *.blog에서는 로그인 체크를 안하면 된다.


추가방법.

web.xml 에 추가 : 기존에 action 이라는 servlet이 있으므로 그 밑에 추가

    <servlet>
        <servlet-name>blog</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/blog/springmvc/blog*.xml</param-value>
        </init-param>
        /
    </servlet>
    <servlet-mapping>
        <servlet-name>blog</servlet-name>
        <url-pattern>*.blog</url-pattern>
    </servlet-mapping>  


blog_servlet.xml 추가 : web.xml 에 정의된 경로에 추가


이것은 egov-com-servlet.xml 을 copy 한 것이고

기본 package 경로를 수정한다.

    <context:component-scan base-package="사용할package명.blog">
        <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> 

Java Source로 Controller, Service, Repository 등을 생성한다.

(일단은 Contoller만 만들어서 되는지 확인하자)

@Controller
public class BlogController {


    private ApplicationContext applicationContext;

    private static final Logger LOGGER = LoggerFactory.getLogger(BlogController.class);

    private Map<Integer, IncludedCompInfoVO> map;

    public void afterPropertiesSet() throws Exception {}

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
       
        LOGGER.info("BlogController setApplicationContext method has called!");
    }

    @RequestMapping("/index.blog")
    public String index(ModelMap model) {
        return "blog/BlogMain";
    }
 


index.blog 가 호출될 때 보여줄 jsp Page를 만든다

WEB-INF/jsp/blog/BlogMain.jsp

WEB-INF 밑에 index.jsp 에서

<jsp:forward page="/index.do"/> 를 호출하게 되어 있으므로

<jsp:forward page="/index.blog"/>로 바꾸어 준다.


728x90
728x90

전자정부 프레임워크로 프로젝트를 만들 때

1. 빈 프로젝트 에서 공통 컴포넌트들을 추가한다.

2. Template 프로젝트를 생성한 후 필요한 공통컴포넌트를 추가한다.

3. AllinOne 프로젝트를 생성한다.


2번의 경우에서 필요한 컴포넌트 추가하면 에러가 많이난다.

이유는 컴포넌트에 동일한 서비스가 이미 있는 경우가 있기 떄문이다.

RestdeManageService를 예로 들면

egovframework.com.sym.cal.service.impl/EgovCalRestdeManageServiceImpl

egovframework.let.sym.cal.service.impl/EgovCalRestdeManageServiceImpl

두개 파일이 동일한 @RestdeManageService 로 정의되어 있다.


그러면 어떤 것을 사용해야할 지 고민이 된다.

원본에는 let안에 있는데... com으로 바꿔야하나

아무튼 이런것들이 꽤 많다.

전자정부프레임워크 담당자는 빈 Web 프로젝트부터 시작하라고 한다.

http://www.egovframe.go.kr/uss/olh/qna/QnaInqireCoUpdt.do?qaId=QA_00000000000013099&passwordConfirmAt=


그래도 템플릿에서 시작하겠다고 하면

중복되는 애들의 @Controller, @Service, @Repository 를 하나를 없애고

참조하는 import 경로도 수정한다.


let가 기본인데 com으로 바꿀 때 import 를 수정하지 않으면 casting에러가 난다.

728x90
728x90

index 화면이 열리기까지의 과정이다.


1. globals.properties에 main page 경로 정의

(/egov_portal_shop/src/main/resources/egovframework/egovProps/globals.properties)

Globals.MainPage = /cmm/main/mainPage.do


2. controller 에서 정의

requestMapping의 value 에 Globals.MainPage 값을 넣어 준다.

각종 조회한 뒤 addAttribute로 넣은뒤

jsp로 넘긴다.("main/EgovMainView")

    @RequestMapping(value = "/cmm/main/mainPage.do")
    public String getMgtMainPage(HttpServletRequest request, ModelMap model)
      throws Exception{

        // 공지사항 메인 컨텐츠 조회 시작 ---------------------------------
        //model.addAttribute("notiList", map.get("resultList"));
        // 공지사항 메인컨텐츠 조회 끝 -----------------------------------

        // 자유게시판 메인 컨텐츠 조회 시작 ---------------------------------
        model.addAttribute("bbsList", bbsMngService.selectBoardArticles(boardVO, "BBSA02").get("resultList"));
        // 자유게시판 메인컨텐츠 조회 끝 -----------------------------------

        // FAQ 메인 컨텐츠 조회 시작 ---------------------------------
        //model.addAttribute("faqList", faqManageService.selectFaqList(searchVO));
        // FAQ 메인 컨텐츠 조회 끝 -----------------------------------

        // 설문참여 메인 컨텐츠 조회 시작 -----------------------------------
        //model.addAttribute("qriList", egovQustnrRespondInfoService.selectQustnrRespondInfoManageList(qVO));
     // 설문참여 메인 컨텐츠 조회 끝 -----------------------------------


        return "main/EgovMainView";
    }


3. jsp page

jsp Page에 대한 처리 정보는 servlet.xml 에서 한다

(/egov_portal_shop/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml)

    <!-- 화면처리용 JSP 파일명의  prefix, suffix 처리에 대한 mvc 설정  -->
    <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
    p:viewClass="org.springframework.web.servlet.view.JstlView"
    p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/> 

기본으로 /WEB-INF/jsp/ 에 .jsp 파일을 설정해놨다


return "main/EgovMainView" 를 하게 되면

/WEB-INF/jsp/main/EgovMainView.jsp 파일을 찾는다.

(/egov_portal_shop/src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp)


하지만 이렇게 하면

호출되는 주소창에 다음과 같이 나온다.

http://localhost:8080/egov_portal/cmm/main/mainPage.do


깔끔하게 루트로 보내려면

다음과 같은 작업을 한다.

나만의 서비스이므로 package를 새로만든다. robsoft

하지만 spring에서 component-scan에 의해 정해진 package만 사용되므로

base-package인 egovframework를 붙인다.

(/egov_portal_shop/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml)

    <!-- 패키지 내 Controller, Service, Repository 클래스의 auto detect를 위한 mvc 설정 -->
    <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>


그래서 egovframework.rob.shop (shop은 내가 만들 모듈 명)으로 하고 controller class를 만든다.

egovframework.rob.shop.RobMainController


여기에 mainPage로 보낼 코드를 작성한다.

소스는 원래 있던 소스를 그대로 가져왔다.

    /**
     * 메인 페이지 조회
     * @return 메인페이지 정보 Map [key : 항목명]
     *
     * @param request
     * @param model
     * @exception Exception Exception
     */
    @RequestMapping(value = "/mainPage.do")
    public String getMgtMainPage(HttpServletRequest request, ModelMap model)
      throws Exception{

        // 공지사항 메인 컨텐츠 조회 시작 ---------------------------------
        model.addAttribute("notiList", map.get("resultList"));


        // 공지사항 메인컨텐츠 조회 끝 -----------------------------------

        // 자유게시판 메인 컨텐츠 조회 시작 ---------------------------------
        model.addAttribute("bbsList", bbsMngService.selectBoardArticles(boardVO, "BBSA02").get("resultList"));
        // 자유게시판 메인컨텐츠 조회 끝 -----------------------------------

        // FAQ 메인 컨텐츠 조회 시작 ---------------------------------
        model.addAttribute("faqList", faqManageService.selectFaqList(searchVO));
        // FAQ 메인 컨텐츠 조회 끝 -----------------------------------

        // 설문참여 메인 컨텐츠 조회 시작 -----------------------------------
        model.addAttribute("qriList", egovQustnrRespondInfoService.selectQustnrRespondInfoManageList(qVO));
     // 설문참여 메인 컨텐츠 조회 끝 -----------------------------------


        return "main/RobMainView";
    }
 


그 다음 jsp Page

prefix로 /WEB-INF/jsp 가 붙으므로 경로는 다음과 같다.

파일명에도 뒤에 .jsp가 붙는다.

/egov_portal/src/main/webapp/WEB-INF/jsp/main/RobMainView.jsp 

마찬가지로 내용은 원본인 EgovMainView.jsp와 동일하게 했다.


그리고 호출할 때 index.jap파일도 수정해야 한다.

/egov_portal_shop/src/main/webapp/index.jsp

기본으로 index.jsp를 찾게 되고 거기에서 mainPage.do로 forwarding을 한다.

/cmm/main/mainPage.do를 그냥 mainPage.do 로 바꾼다.

원본 : <script type="text/javaScript">document.location.href="<c:url value='/cmm/main/mainPage.do'/>"</script>

수정본 : <script type="text/javaScript">document.location.href="<c:url value='/mainPage.do'/>"</script>


이러면 바로

http://localhost:8080/egov_portal/ 을 하면 바로 mainPage.do로 보인다.

728x90
728x90

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)


[net.sf.log4jdbc.DriverSpy] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.


여러 원인이 있다.

1. tomcat의 실제 lib 결로에 mysql jar 파일을 넣으라고도 하고

2. 여러 프로젝트로 인해 꼬였으니 clean 후 다시 배포하라고도 하는데


나의 경우에는 2번인 듯 하다.

똑같은 Project 소스를 이름만 다르게 했는데..

하나를 close project 한뒤에

clean 하고 다시 배포했더니 된다. ㅡ.ㅡ


728x90

수영 3주를 마치고

2018. 10. 28. 10:31
728x90

음~ 수영을 다시 다니니 좋은점은

재밌다는 것이다.

(재미있는데 자꾸 남은 시간은 본다 ㅎㅎ)


수업이 시작하면

기본 자유형 4바퀴정도 하고

그날 그날 교정할 자세로 몇바퀴 돌고 * 2

30분쯤 되면 반대쪽으로 걸어갔다오면서 좀 쉬고

남은 20분 빡세게 돌다 끝난다


어쩌다 킥판을 드는 날은 맨 뒤로 가야한다.

하체부실 어쩔 ㅜ.ㅜ


자유형이나 평영을 하면 앞쪽으로

배영은 포지션이 애매~~하다.


맨 앞에서 하게 되면 따라오는게 부담이 되어 오버페이스를 하는 경우가 꽤 있다.

헉헉헉헉.. 머리도 띵하고


아무래도 쫓아가는게 체질인 듯 ㅎ


수업이 끝나고 종료인사 '수고하셨습니다'를 하고 돌아서 자유형으로 또 몇바퀴 돈다.

며칠전에는 플립턴을 간만에 했는데 코에 물이 많이 들어갔는지

제체기에 콧물에... 특별한 감기증상은 없으니 물이 들어가 알러지성 비염증세가 심해진 것 같다.

두르마리 화장지 1개정도 쓴 것 같음.

자리에 수북히 쌓이는 휴지... 민망해서 두어번 갖다 버리고


토요일에 병원가서 코찍 몇 번 뿌리고 나니 흐르는 건 좀 멈췄다.

근데 약을 4일치나 주다니...아침,저녁으로 총 8개. 항생제도 있고..


아무튼 다음주에 끝나고 자유형할때는 플립턴으로 한번 돌아야겠다 ㅋㅋㅋ

(벌써 한달이 지나가네.. 다음달까지만 등록해놨는데 연장을 해야하나)

728x90

맥북 복구하다 ㅎㅎㅎ

2018. 10. 28. 10:09
728x90

새벽 몇시까지였는지 기억도 안난다.

넘 피곤했지만...

복구(?)에는 성공했다.


부팅영역 어딘가 문제가 있었던 것 같다.


option + R 을 누르면 멀티부팅 시 선택할 수 있는데

여기에서 정상적으로 맥OS, 윈도우즈가 나타났다.

혹시나 해서 윈도우로 띄워보니 역시나 잘된다.

그러나 맥은 같은 현상이다...


결국 윤철이에게 빌려 온 외장 DVD플레이어에

스노우 레파드(snow leopard)를 넣고 실행시켜서

어찌어찌 디스크 관리자를 열었는데

검사하보니 문제는 없다고 하네...


결구 OS를 새로 설치하는데

이상하게 잘 인식 안할 때가 있고 속도도 엄청 느렸다.

설치는 완료하고 자야했기에 졸린 눈을 비비고

날아드는 모기에도 불구하고

끝까지 설치완료 후 부팅까지 확인했다.


원래 멀티부팅할 때 프로그램을 써서 선택했었는데

시작OS를 윈도우로 설정할 수 있었다는것을 나중에 깨달음 ㅡㅡ.

(몇 년 동안 매번 선택했는데... 쩝)


이제는 전원버튼 누르고 딴짓해도 윈도우로 들어 감 ㅎㅎㅎ

한고비 넘겼으니 또 얼마나 버텨줄 지 모르겠넹

728x90
728x90

2006년에 구매했으니... 12년이면 많이 쓴건가?


갑자기 부팅이 안되고 연한 하늘색화면에서 계속 멈춰있다.

이것저것 복구방법을 써 봤으나 똑같다...

command + s 로 복구까지 해봤는데도...


마지막으로 재설치가 있는데

맥북에 있는 super drive는 이미 동작하지 않아 설치불가

dvd player를 구해서 다시 설치해봐야겠다.


이대로 녀석을 보내기엔... 너무 아쉬운데

728x90
728x90

전자정부 프레임워크 All in one 에서

web_allinone.xml 을 수정했는데

갑자기 에러가 난다.

cvc-complex-type.2.3: Element 'web-app' cannot have character [children], because the type's content type is element-only.    web_allinone.xml    /allinone/src/main/webapp/WEB-INF    line 5    XML Problem


저 부분은 건드린 것이 없는데...

<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 


1개의 element만 사용할 수 있다고 하는데

자세히 보면 xsi:schemaLocation에 두 개가 정의되어 있다.

그중에 xmlns:web에 똑같은 내용이 있어서

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd를 제거하니 오류가 없어진다.

<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee"> 



728x90
728x90

첫 화면은 index.do 이다.

첫화면을 변경하기 위해서는 index.do 를 adminIndex.do 로 변경한 뒤에

index.do를 만들어 원하는 디자인을 입히면 될 것 같음.


--> 안된다 ㅜ.ㅜ

index.do를 다시 만들었는데... 자꾸 intercepter인가가 가로채서...

원래는 로그인 없이 사용할 수 있는 서비스로 보내려고 한건데.. 쩝.

일단 아래는 참고용으로 놔둠.

-----



EgovComIndexController.java

 @RequestMapping("/index.do")
    public String index(ModelMap model) {
        return "egovframework/com/cmm/EgovUnitMain";
    }

 EgovLoginSesionCheck.jsp

 <%
     // 세션 정보를 가져온다. LoginVO
     egovframework.com.cmm.LoginVO user = (egovframework.com.cmm.LoginVO)egovframework.com.cmm.util.EgovUserDetailsHelper.getAuthenticatedUser();
     String contextPath = request.getContextPath();
     if(user.getUrl() == null || user.getUrl().equals("")) user.setUrl(contextPath+"/index.do");
 %>

 egovDevIndex.jsp

 <jsp:forward page="/index.do"/>

 index.jsp

 <jsp:forward page="/index.do"/>

 

 


여기에서 일단 관리자는 adminIndex.do로 변경하면

1. adminIndex.jsp 생성(index.jsp 복사)

    index.do 를 adminIndex.do 로 변경


2. EgovLoginSesionCheck는 세션이 없으면 기본으로 index.do 로 보내는 것이므로 그대로 둠.


3. EgovComIndexController 에는 adminIndex 추가

   @RequestMapping("/adminIndex.do")
    public String adminIndex(ModelMap model) {
        return "egovframework/com/cmm/EgovUnitMain";
    }


728x90
BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1951)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (179)
난 그래 (159)
Study (290)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :