web.xml 에 대한 기본 설명


아래 Package Explorer에서 보면 web.xml 파일을 볼 수 있다.



web.xml 파일을 열어보면 동일한 2개의 <param-name> 이 있는 것을 볼 수 있다.

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

       <servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

첫번째 보이는 context-param에 속해있는 contextConfigLocation은 root-context.xml 에 정의된 클래스들을 WAS 서버의 구동과 동시에 인스턴스로 생성하여 사용할 수 있게하고,

두번째 보이는 serverlet에 속해있는 contextConfigLocation은 웹 클라이언트에서 WAS 서버에 요청시 servlet-context.xml에 정의된 해당 클래스를 인스턴스로 생성하여 사용하게 된다. 

root-context.xml 또는 servlet-context.xml 에 bean id와 클래스명을 작성하여 개별적인 클래스의 인스턴스를 생성하게 할 수도 있지만, 아래와 같은 간략한 표기법으로 클래스의 인스턴스 생성이 가능하다. 

<context:component-scan base-package="com.xxxx.xxxx"></context:component-scan>

xxxx.xxxx 는 원하는 패키지를 의미한다. 

위와같이 component-scan으로 정의한 경우 .java 소스에 아래의 4가지 중 하나의 어노테이션(annotation) 표기법으로 자동 인스턴스 생성을 해야 객체의 사용이 가능해진다. 

@Controller  : ~Controller 클래스에 사용
@Repository     : ~DAO  클래스에 사용
@Service : ~ Service 클래스에 사용 

@Component    :  @Controller, @Repository, @Service의 상위 어노테이션으로 범용적으로 사용 






Spring 기반 웹프로젝트 만들기 Java/Spring


스프링 기반의 웹 프로젝트를 만들기 위해서는 아래와 같은 내용이 사전에 설치되어 있어야 한다

- WAS 서버
- JRE, JDK 
- Eclipse 

위 내용이 설치되어 있다는 전제로 스프링 웹 프로젝트를 만들어 보자 

이클립스에서 File -> New -> Spring -> Spring Legacy Project -> Spring MVC Project 


이렇게 해서 프로젝트가 생성되고 나면 Package Explorer 에서 아래와 같이 디렉토리 구성이 나타난다 
( Perspect View는 Spring 기준이다. ) 



트리의 빨간 X 가 눈에 거슬린다

pom.xml 파일을 열어서 아래와 같이 Spring Framework의 버젼을 4.3.6.RELEASE로 수정하도록 한다

       <properties>
<java-version>1.6</java-version>
<org.springframework-version>4.3.6.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

이제 서버 접속의 url 설정이다.  Servers의 탭에 WAS 서버를 등록하고 Modules 탭으로 이동하여 아래와 같이 설정한다.



그리고 디버그 모드(Debug on Server)로 실행해 보자

그러면 아래와 같이 웹브라우저에서 접속이 가능하다


console.log 커스터마이징 하기 JavaScript+WebService


Javascript 에서 제공하는 console.log 는 디버깅시 편리하기도 하지만 끄고 싶을때 마음대로 끄지 못한다는 단점이 있다

필자의 경우 이런 불편함을 해소하기 위하여 아래 코드와 같이 커스터마이징하여 사용하고 있다 

(function() {
var IsDebug = true;

function wrap(func, wrapper) { // 2.
return function () {
var args = [func].concat(Array.prototype.slice.call(arguments));
return wrapper.apply(this, args);
};
}

window.ConsoleLog = wrap( console.log, function (func_with_args) { // 1.
if (IsDebug == true) {
// return func_with_args.apply(this, Array.prototype.slice.call(arguments, 1));
console.log( Array.prototype.slice.call(arguments, 1));
}
});

window.setDebug = function (setVal) {
IsDebug = setVal;
};
}());

이 코드를 사용할때는 console.log와 동일하게 아래와 같이 사용하면 된다

ConsoleLog( "It's degug code >>> " );

단 그전에 아래 코드를 통하여 콘솔창에 출력여부를 설정하면 된다. 

setDebug( true );   or  setDebug( false );  

그리고 위 코드상에서 아래와 같이 주석으로 처리한 부분이 있는데 이 코드는 원래 동작하는게 맞으나 

IE에서 문제가 발생한다   크롬에서는 잘동작하는 코드가 왜 IE에서 문제가 되는지는 잘 모르겠다 

문법적 오류가 있는 것도 아닌데.....  
 

// return func_with_args.apply(this, Array.prototype.slice.call(arguments, 1));
그래서 대체 코드로 아래와 같이 작성한 것이다

console.log( Array.prototype.slice.call(arguments, 1));

결과적으로 같은 Javascript 코드이지만 웹브라우저에 따라 오동작하는 경우가 발생함에 따라 멀티 브라우저 지원을 원한다면 귀찮지만 여러 웹 브라우저상에서의 테스트를 진행 해야한다

이에 대한 자료는 아래 웹사이트 참조


https://www.slideshare.net/genycho/ss-64147229





1 2 3 4 5 6 7 8 9 10 다음