Spring mvc로 웹 서비스를 만들고 서비스를 할 때 아마존 클라우드를 이용할 수도 있지만

cafe24의 TOMCAT JSP 호스팅을 사용하는 방법을 정리합니다. 

EXPORT WAR파일

이클립스나 spring tool suite 3에서 제작한 프로젝트를 export합니다. war 파일로 저장해주세요. 

https://www.cafe24.com/

 

카페24

No.1 글로벌 전자상거래 플랫폼 '카페24'

www.cafe24.com

사이트에 가입을 하고 tomcat 호스팅을 클릭합니다. 

tomcat 호스팅 상품 가격표

적당한 서비스를 선택하고 신청을 합니다. 

https://www.cafe24.com/?controller=myservice_hosting_account_shellconnect

 

https://www.cafe24.com/?controller=myservice_hosting_account_shellconnect

 

www.cafe24.com

누르면 cafe24 ftp관련 접속 할수 있는 설정과 주소 그리고 프로그램을 안내받을 수 있습니다. 

ftp비번을 입력하고 filezilla 프로그램을 다운로드 받아 설치를 합니다. 

filezilla를 이용하여 접속 설정을 하고 접속을 한후 아래의 경로에 war파일을 올려줍니다.

war파일 경로

서버가 재시작 하면서 홈페이지를 확인할 수 있습니다. 

https://digital365365.com/

 

울산디지털365치과의원

울산 남구 삼산에 위치한 디지털365치과는 당일 임플란트, 치아교정,충치치료,사랑니발치, 스케일링,구강검진, 잇몸치료를 진료하는 치과입니다.

digital365365.com

도메인도 구매하여 설정을 해주면 위와 같이 잘 접속됨을 확인할 수 있습니다. 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

QM6차량에 카시트를 설치 해보겠습니다.

제품은 다이치 카시트 ISOFIX 입니다.. 뒷자석에 보시면 ISOFIX라고 보입니다 양옆으로

손으로 살작 넣어서 그아래를 보면 이렇게 고리가 보입니다.

ISOFIX 연결 고정

ISOFIX 2개를 넣어서 고정합니다. 

다이치 카시트 설치완료

시트를 얹으면 끝납니다. 설치끝.. 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

이번 디지털365치과의원 홈페이지를 제작하며 모바일 페이지에 대해 정리합니다.


모바일 페이지 구분을 위해 디바이스를 구분해주는 라이브러리가 있었습니다. 
스프링 모바일 디바이스 입니다. 
순서는 메이븐을 추가해주시고요.
<!-- 모바일 페이지 디바이스 구분 -->
<dependency>
    <groupId>org.springframework.mobile</groupId>
    <artifactId>spring-mobile-device</artifactId>
    <version>1.1.5.RELEASE</version>
</dependency>

web.xml에

<!-- 스프링 모바일 -->

<filter>

  <filter-name>deviceResolverRequestFilter</filter-name>

  <filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>

</filter>

<filter-mapping>

  <filter-name>deviceResolverRequestFilter</filter-name>

  <url-pattern>/*</url-pattern>

</filter-mapping>

필터를 추가합니다. 

servlet-context.xml에 이부분을 수정 추가 합니다. 

<!-- 스프링 모바일부분. -->

<annotation-driven>

<argument-resolvers>

<beans:bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />

<beans:bean class="org.springframework.mobile.device.site.SitePreferenceWebArgumentResolver" />

</argument-resolvers>

</annotation-driven>

구분

<beans:bean class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">

  <beans:constructor-arg>

    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

      <beans:property name="prefix" value="/WEB-INF/views/" />

      <beans:property name="suffix" value=".jsp" />

    </beans:bean>

  </beans:constructor-arg>

  <beans:property name="mobilePrefix" value="mobile/" />

  <beans:property name="tabletPrefix" value="mobile/" />

  <beans:property name="enableFallback" value="true"/>

</beans:bean>

구분

<interceptors>

   

<beans:bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor"></beans:bean>

<beans:bean class="org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor"></beans:bean>

</interceptors>


이러면 경로가 pc의 경우 views/home.jsp 기존대로 호출되구요. 

모바일이나 태블릿의 경우 view/mobile/home.jsp로 호출됩니다. 중간에 mobile가 붙죠 ^^ 

기존 주소 그대로 호출되고 pc와 모바일이 분리되고 컨트롤러는 같이 쓰고 개발이 편리한것 같습니다. 


블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

출처 : http://hobbiez.tistory.com/321
 

checked 여부 확인

$("input:checkbox[id='ID']").is(":checked") == true : false  /* by ID */

$("input:checkbox[name='NAME']").is(":checked") == true : false /* by NAME */

checked/unchecked 처리

$("input:checkbox[id='ID']").prop("checked", true); /* by ID */

$("input:checkbox[name='NAME']").prop("checked", false); /* by NAME */

특정 라디오버튼 선택 / 모든 라디오버튼 선택해제

$("input:radio[name='NAME']:radio[value='VALUE']").attr("checked",true);

$("input:radio[name='NAME']").removeAttr("checked");

전체선택 체크박스를 선택하면 그 아래의 모든 체크박스를 선택 HTML

<label><input type="checkbox" id="check_all" class="input_check"> <b>전체선택</b></label>

<ul class="select_subject">

<label><input type="checkbox" class="input_check" name="class[1]" value="1"> <b>1</b></label>

<label><input type="checkbox" class="input_check" name="class[2]" value="2"> <b>2</b></label>

</ul>

전체선택 체크박스를 선택하면 그 아래의 모든 체크박스를 선택 jQuery

$(function(){

    $("#check_all").click(function(){

        var chk = $(this).is(":checked");//.attr('checked');

        if(chk) $(".select_subject input").prop('checked', true);

        else  $(".select_subject input").prop('checked', false);

    });

});

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

게시글 이미지 클릭시 전화 걸기

엄청 간단하다.. 글적기를 한후.. 이렇게 쏴주장


<a href="tel:010-7100-5805" > 이미지내용태그..  </a>

전화가 걸어진다;;;;끝.. 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

스프링부트 2.0 에서  멀티 db를 사용하고 mybaits와 mysql 을 사용해보자.. 

/main/resources/application.properties

파일을 열고 환경 설정을 한다. 

#db순서
spring.first.datasource.type=org.apache.tomcat.jdbc.pool.DataSource 
spring.first.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.first.datasource.jdbc-url=db주소
spring.first.datasource.username=아디
spring.first.datasource.password=패스워드
spring.first.datasource.connectionProperties=useSSL=false;useUnicode=yes;characterEncoding=UTF-8;serverTimezone=UTC 

#db순서
spring.second.datasource.type=org.apache.tomcat.jdbc.pool.DataSource 
spring.second.datasource.driverClassName=com.mysql.jdbc.Driver
spring.second.datasource.jdbc-url=db주소
spring.second.datasource.username=아디.
spring.second.datasource.password=패스워드.
spring.second.datasource.connectionProperties=useSSL=false;useUnicode=yes;characterEncoding=UTF-8;serverTimezone=UTC 

JSP 페이지 사용을 위해서

#JSP를 사용하겠다.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

문자를 UTF-8사용 설정

spring.http.encoding.charset=UTF-8 

첫번째 DB파일 설정

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FirstDataSourceConfig {
@Bean 
@ConfigurationProperties(prefix = "spring.first.datasource") 
public DataSource firstDataSource() 
{
return DataSourceBuilder.create().build(); 

@Bean public SqlSessionFactory firstSqlSessionFactory(DataSource firstDataSource, ApplicationContext applicationContext) throws Exception 
{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); 
sqlSessionFactoryBean.setDataSource(firstDataSource); 
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:mapper/first/*.xml")); 
return sqlSessionFactoryBean.getObject(); 
}
@Bean public 
SqlSessionTemplate firstSqlSessionTemplate(SqlSessionFactory firstSqlSessionFactory) throws Exception 
{
return new SqlSessionTemplate(firstSqlSessionFactory); 
}

}

 

2번째 DB파일 설정

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SecondDataSourceConfig {
@Bean 
@ConfigurationProperties(prefix = "spring.second.datasource") 
public DataSource secondDataSource() 
{
return DataSourceBuilder.create().build(); 

@Bean public SqlSessionFactory secondSqlSessionFactory(DataSource secondDataSource, ApplicationContext applicationContext) throws Exception 
{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); 
sqlSessionFactoryBean.setDataSource(secondDataSource); 
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:mapper/second/*.xml")); 
return sqlSessionFactoryBean.getObject(); 
}
@Bean public 
SqlSessionTemplate secondSqlSessionTemplate(SqlSessionFactory secondSqlSessionFactory) throws Exception 
{
return new SqlSessionTemplate(secondSqlSessionFactory); 
}

}

SQL파일은 여기에 위치한다. 

JSP파일은 여기에 위치한다. 

JSP경로

서비스를 만들고

DAO역시 만들어준다.

컨트롤러 뷰 화면 입니다. 

정리완료... 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

치아미백을 가정과 직장에서 간편하게!

바쁜 일상으로 치과에 내원하시기 힘든 분들을 위해 미서울치과에서 BEAUTIS WHITE 자가 미백기를 권해드립니다.

알기 쉽게 사용법을 영상으로 준비했으니 함께 따라 해 보세요 ^^

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

우리는 매일 하루의 시작과 마무리를 칫솔질 양치질 과 함께 합니다.

하지만 정작 제대로 하고 계신 분들은 많지 않죠?

이런 올바르지 않은 칫솔질로 인해 구내염 입냄새 충치 가 발생하여 치과 를 방문하시는 분들이 많습니다.

그렇다고 매번 스케일링 을 할 수도 없고... 그래서 미서울치과가 올바른양치질방법 을 안내해드립니다.

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

"al.exe"을(를) 찾을 수 없습니다. SdkToolsPath가 설정되었는지, 도구가 SdkToolsPath 아래의 올바른 프로세서 특정 위치에 있는지,

 Microsoft Windows SDK가 설치되었는지 확인하세요.


visual studio 2019 버전이 나와서 인스톨하고 2017을 지웠습니다. 

기존에 만들었던 프로그램 기능 업그레이드를 위해서 프로젝트를 다시 켰는데 이런문제가 발생하였습니다. 


오류 작업에서 SdkToolsPath "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\" 

또는 레지스트리 키 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.7.2\WinSDK-NetFx40Tools-x86"을(를)

 사용하여 "al.exe"을(를) 찾을 수 없습니다. SdkToolsPath가 설정되었는지, 도구가 SdkToolsPath 아래의 올바른 프로세서 특정 위치에 있는지,

 Microsoft Windows SDK가 설치되었는지 확인하세요. meseoulpixel

심각도 코드 설명 프로젝트 파일 비표시 오류(Suppression) 상태


새로 인스톨해도 안되고 ;; 대체 왜 안되나 싶어 경로에 가보니 al.exe가 없었습니다. 

다른 버전에 들어가보니 다 있길래.. 하도 답답해서 그냥 통째로 복사 했습니다. 

4.7.1 폴더에 들어가니 al.exe뿐만 아니라 파일이 많이 있길래 통으로 복사했습니다. 

마소에서 올려주는 sdk툴 아무리 설치해도.. 해결안됩니다...

이렇게 복사했습니다. 

도움이 되었길 바랍니다.


블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,


송정 가연장을 들렀음.

입구 디자인이 이쁨. 화단이 이쁨.



들어가는 입구!. 나오는 손님 두분이서 하는 애기가 정말 맛있다.

조미료를 사용안한거 같아. 정말 맛집인가? 하고 들어갔다.


실내는 그렇게 넓지는 않았지만 카페 느낌의 깔끔하고 식당가 같지 않았다.

미역국이 종류별로 11000원부터 18000원대 까지 있었다.

소고기 미역국을 2개 시켰다. 각 13000원으로 미역국치고는 비싼느낌이었다.



반찬이 종류별로 나왔으나 미역국에 반찬은 별로 필요 없는데 종류가 많았다.

전복회를 소자를 시켰다. 완전 맛났다.. 대자를 시킬걸.... 먹으면서 바로 후회했다.

만약 가게된다면 꼭 적당히 먹는 다는 생각은 버리고 넉넉히 시켜드시길 바란다.

소고기 미역국이다. 소고기 미역국은 내가 잘 먹는 국이여서 맛이 틀별히 다를것이라고생각지 않았는데... 먹어보고 아.. ! 왜케 맛있지.. 였다... 

모든 음식이 간이 쎄지 않고 적당했고... 미역국은 국물하나 남기지 않고 다 먹었다. 

나갈때 정말 맛있다라는 애기를 왜 했는지 알것 같았다.. 소고기미역국에 참기름을 둘러 먹으면 맛난데.. 적당히 얌념이 다되어 나오기 때문에 참기름은 따로 필요 없다. 국물이 짜지도 않고 어떻게 이런 비율을 알아냈는지 모르겠지만 정말 맛있었다.. 뜨거운걸 먹을때 물을 부어서 먹는데 .. 이건... 그럴수 없었다. 집에서 먹던 평소의 미역국이 아니였기에.. 미역국집이라 하여 음.. 5천원정도 하고 그냥 미역국맛으로 기대를 크게 안했었는데 근 1년? 새로운 가게에서 먹어본 음식중에서 최고다.. !!

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,