반응형

1. root-context.xml에 bean 생성

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

 

2. Controller에 validator 주입

import org.springframework.validation.Validator;

@Autowired
private Validator validator;

 

3. Action에서 유효성 검사 수행

Errors err = new BeanPropertyBindingResult(vo, "Object Name");
validator.validate(vo, err);
if (err.hasErrors()){
    유효성에 어긋날 경우 처리 내용
} else {
    유효성 검사 통과
}

 

반응형
반응형

무료 호스팅을 통해 개인적으로 스터디를 진행하려고 인터넷을 검색해보니 닷홈이라는 호스팅 업체가 평이 좋은 것 같았다. 구글에 "무료호스팅"이라고 검색하면 상단에 나오기도 하고 설명에도 무료로 제공한다고 되어 있었다.

 

구글에서 무료호스팅을 검색한 결과

 

그래서 닷홈에 가입하고 무료 호스팅을 받으려고 했더니.. 이건 무료가 아니네.. 낚인 건가..

간단히 설명하자면 닷홈에서 도메인(최소 만원인 듯..)을 구매한 사용자에게만 무료로 제공한다는 조건이 걸려있다.

이건 무료가 아니지... 일단 기록해두자.

 

닷홈 사이트에 게시된 호스팅 상품 종류 및 제공 조건
닷홈 도메인 구매 가격

 

뒤도 돌아보지 않고 바로 회원탈퇴! 다음에 기회가 된다면 닷홈과의 인연도 있겠지..

반응형
반응형

기초

{톰캣 설치 경로}/conf/server.xml 파일의 Host 부분을 수정하면 된다.

 

톰캣을 설치하면 기본적으로 아래와 같이 설정이 되어 있다.

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

해당 부분을 아래와 같이 설정하면 webapps 폴더 하위에 있는 test 폴더가 루트 경로가 된다.

<Host name="localhost"  appBase="webapps/test"
            unpackWARs="true" autoDeploy="true">

 

주의사항

해당 주의사항은 필자가 톰캣 설정을 하면서 겪은 현상을 해결하기 위해 진행했던 기록이다.
아래 방법이 정답이라고는 할 수 없으니 참고만 하길 바란다.

 

1. 위와 같이 설정을 하면 war 파일이 unpack되지 않는다.
   이를 우회하기 위해서는 아래와 같이 Host는 그대로 두고 Context를 추가한다.

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
	<Context docBase="test" path="/" reloadable="true"/>

 

2. 1항처럼 설정을 하면 webapps 폴더에 ROOT폴더와 test폴더가 함께 생성되는 현상이 발생한다.
   이를 해결하기 윈해서는 Host에 deployIgnore를 추가하면 해결된다.

<Host name="localhost"  appBase="webapps"
	unpackWARs="true" autoDeploy="true" deployIgnore=".*">
    <Context docBase="IDS" path="/" reloadable="true"/>
반응형
반응형

서론

해당 글은 WAMP를 활용하여 웹 서버를 가동시키고 웹 브라우저에서 Hellow World를 서비스하는 예쩨를 설명한 글이다.

WAMP를 설치하지 않았다면 이전 "[PHP] Hello World를 찍어보자! - 1. 설치편"을 참고하면 된다.

 

내용

1. 웹 루트 경로에 test.php파일을 생성한다.
   ※ WAMP를 설치할 때, 기본 경로로 설치하였다면 웹 루트 경로는 다음과 같다.
      "C:\Bitnami\wampstack-7.1.28-0\apache2\htdocs"

웹 루트 경로에 test.php 파일을 생성한 화면

 

2. 해당 파일(test.php)을 에디터로 열어 다음과 같이 코드를 작성한다.

<?php
    echo "Hellow World!!";
?>

 

3. 브라우저를 통해 해당 페이지에 접속(localhost:81/test.php)하여 확인한다. 

test.php 페이지에 접속한 화면

반응형

'Development 와 IT > PHP' 카테고리의 다른 글

[PHP] Hello World를 찍어보자! - 1. 설치편  (0) 2019.04.17
반응형

서론

해당 글은 WAMP(Window Apache Mysql PHP)를 설치하고, 정상적으로 설치가 되었는지 확인하는 방법을 설명한 글이다.

WAMP를 이미 설치했다면 다음 "[PHP] Hello World를 찍어보자! - 2. 소스코드 작성 및 실행편"으로 넘어가자.

 

내용

1. bitnami 사이트의 WAMP 다운로드 페이지에 접속한다.

2. "On my computer" 항목의 [Win/Mac/Linux]를 클릭한다.

 

WAMP 다운로드 페이지

 

3. 해당 사이트가 접속자의 운영체제에 가장 적합한 설치프로그램을 나타내준다. (필자의 경우 64bit Windows 사용 중)
   [Download for Windows 64-bit]를 클릭하면 설치프로그램이 다운로드 된다. (약 250MB)

 

접속자의 운영체제에 가장 적합한 설치프로그램 추천 및 다운로드 화면

 

4. 다운로드 된 프로그램을 실행시켜 설치 마법사의 안내에 따라 설치를 진행한다.
   4-1. 기본 값으로 [Next]를 계속 진행한다.
   4-2. 웹 서비스에 사용할 포트를 지정한다.
   4-3. MySQL 관리자 계정의 비밀번호를 지정한다.
   4-4. 클라우드 저장소를 활용할지에 대한 여부를 결정한다. (필자는 해제하고 진행하였다.)

 

WAMP 설치 절차

 

5. 설치가 완료되면 아래와 같이 Bitnami WAMP Stack 프로그램이 실행된다.

 

Bitnami WAMP Stack 프로그램 실행 화면

 

6. 실행된 프로그램에서 [Go to Application], [Open phpMyAdmin] 버튼을 활용하여 정상설치 여부를 확인한다.

   6-1. 프로그램에서 [Go to Application] 버튼을 클릭하면, 아래와 같이 기본 사이트에 접속된다.

 

설치된 기본 사이트 접속 화면

 

   6-2. 프로그램에서 [Open phpMyAdmin] 버튼을 클릭하면, 아래와 같이 phpMyAdmin 사이트에 접속된다.
         ※ MySQL의 기본 관리자 계정은 "root"이고, 비밀번호는 설치과정에서 지정한 비밀번호를 입력하면 된다.

 

phpMyAdmin 사이트 접속 화면

 

반응형
반응형

자바 기본함수를 활용하여 디렉토리를 생성하는 방법은 크게 두 가지가 존재한다.

mkdir : 입력된 경로의 최하단 디렉토리 한 개만 생성

mkdirs : 입력된 경로의 모든 디렉토리 전부 생성

 

아래와 같이 파일 객체를 생성한다.

가정 : c드라이브 하위에는 test 디렉토리 자체가 없다.

import java.io.File;
   { 생략 }
File file = new File("c:\\test\\myFolder");

 

mkdir을 호출하게 되면 디렉토리가 생성되지 않는다.

만약, test 디렉토리가 존재한다면 myFolder가 생성된다.

file.mkdir();

 

mkdir을 호출하게 되면 test, myFolder 디렉토리가 생성된다.

file.mkdirs();

 

반응형
반응형

서론

해당 글은 Node.js를 활용하여 웹 서버를 가동시키고 웹 브라우저에서 Hellow World를 서비스하는 예제를 설명한 글이다.
Node.js를 설치하지 않았다면 이전 "[Node.js] Hello World를 찍어보자! - 1. 설치편" 을 참고하면 된다.

내용

1. 소스코드를 위치시킬 폴더를 생성한다.
   ex) d:\nodejs

2. 해당 폴더에 javascript 파일을 생성한다.
   ex) d:\nodejs\startup.js

3. startup.js 파일에 아래와 같은 코드를 작성한 후 저장한다.
   해당 코드는 Node.js 공식사이트에 게제된 소스코드를 활용하였다.


const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});


4. 커맨드 창을 연다. 

   [Window Key] + [R] > cmd > 확인


5. 해당 위치로 이동한다.

   ex) cd d:\nodejs


6. 위에서 작성한 startup.js를 실행시킨다.

   ex) node startup.js


7. 정상적으로 서버가 동작한다는 메세지를 확인한다.


nodejs 실행 방법


8. 웹 브라우저를 열어 위에서 작성한 아이피와 포트로 접속하면 Hello World가 화면에 나타나는 것을 볼 수 있다.




반응형
반응형

서론

웹 사이트 개발을 하다보면 정적 콘텐츠들이 많이 생기게 된다.
웹 사이트의 특성상 많은 정적 콘텐츠들을 요청하게 되면 그만큼 속도가 느려지게 된다.
해당 글은 AjaxMin을 활용하여 정적 콘텐츠들을 경량화시켜 웹 사이트의 속도를 향상시킬 수 있는 방법을 설명하였다.

참고 : AjaxMin은 경량화가 목적이지 머지(병합)의 목적이 아니다. 
        닷넷프레임워크는 기본적으로 번들이라는 기능을 제공하여 설정에 따라 머지가 자동적으로 이루어 진다.

내용

1. NuGet Package Manager를 통해 AjaxMin을 설치한다.
   Install-Package AjaxMin


2. 프로젝트를 언로드한다.


3. 프로젝트명.csproj를 열어서 아래와 같이 수정한다.

   <Project> 영역의 마지막에 AfterBuild 코드를 추가한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  <UsingTask TaskName="AjaxMin" AssemblyFile="$(SolutionDir)packages\AjaxMin.5.14.5506.26202\tools\net40\AjaxMinTask.dll" />
  <Target Name="AfterBuild">
    <PropertyGroup>
      <DestinationPath>$(ProjectDir)publish</DestinationPath>
    </PropertyGroup>
    <ItemGroup>
      <JS Include="**\*.js" Exclude="publish\**\*.js;obj\**\*.js" />
      <CSS Include="**\*.css" Exclude="publish\**\*.css;obj\**\*.css" />
    </ItemGroup>
    <Copy SourceFiles="@(JS)" DestinationFiles="@(JS -> '$(DestinationPath)\%(RecursiveDir)%(Filename)%(Extension)')" Condition="'%(Extension)'=='.js'">
      <Output ItemName="JavaScriptFiles" TaskParameter="DestinationFiles" />
    </Copy>
    <Copy SourceFiles="@(CSS)" DestinationFiles="@(CSS -> '$(DestinationPath)\%(RecursiveDir)%(Filename)%(Extension)')" Condition="'%(Extension)'=='.css'">
      <Output ItemName="CssFiles" TaskParameter="DestinationFiles" />
    </Copy>
    <AjaxMin JsSourceFiles="@(JavaScriptFiles)" JsSourceExtensionPattern="\.src.js$" JsTargetExtension=".js"
              CssSourcefiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".css"></AjaxMin>  
  </Target>


4. 프로젝트를 다시 로드하고 빌드를 해보면 위에서 설정한 디렉토리에 경량화가 된 정적 콘텐츠들을 확인할 수 있다. 

반응형

+ Recent posts