0729)

금요일에 mybatis 를 기존에 만들어 둔 게시판과 연동했는데 실행 오류가 났다.

오늘 오전 다시 파일들을 찬찬히 살펴보며 코드를 수정했는데 pom.xml 에 세팅 오류가 있었다.'

 

오류 메세지 )

Context initialized 이벤트를 [org.springframework.web.context.ContextLoaderListener] 클래스의 인스턴스인 리스너에 전송하는 동안 예외 발생 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'boardDAOMybatis': 
Unsatisfied dependency expressed through field 'mybatis'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.SqlSessionTemplate#0' defined in class path resource [applicationContext.xml]: 
Cannot resolve reference to bean 'sqlSession' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSession' defined in class path resource [applicationContext.xml]: 
Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException

 

수정한 pom.xml 파일

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.springbook</groupId>
   <artifactId>biz</artifactId>
   <name>BoardWeb</name>
   <packaging>war</packaging>
   <version>1.0.0-BUILD-SNAPSHOT</version>
   <properties>
      <java-version>1.6</java-version>
      <org.springframework-version>5.0.7.RELEASE</org.springframework-version>
      <org.aspectj-version>1.6.10</org.aspectj-version>
      <org.slf4j-version>1.6.6</org.slf4j-version>
   </properties>
   <dependencies>
      <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.22</version>
          <scope>provided</scope>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
      <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.8.8</version>
          <scope>runtime</scope>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${org.springframework-version}</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
      <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.4</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
      <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.7</version>
      </dependency>
      
       <!-- Mybatis -->
      <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.2</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>2.0.6</version>
      </dependency>
      
   
      <!-- Spring -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${org.springframework-version}</version>
         <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
               <groupId>commons-logging</groupId>
               <artifactId>commons-logging</artifactId>
             </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>
            
      <!-- AspectJ -->
      <dependency>
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjrt</artifactId>
         <version>${org.aspectj-version}</version>
      </dependency>   
      
      <!-- Logging -->
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${org.slf4j-version}</version>
      </dependency>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>jcl-over-slf4j</artifactId>
         <version>${org.slf4j-version}</version>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-log4j12</artifactId>
         <version>${org.slf4j-version}</version>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
         <version>1.2.15</version>
         <exclusions>
            <exclusion>
               <groupId>javax.mail</groupId>
               <artifactId>mail</artifactId>
            </exclusion>
            <exclusion>
               <groupId>javax.jms</groupId>
               <artifactId>jms</artifactId>
            </exclusion>
            <exclusion>
               <groupId>com.sun.jdmk</groupId>
               <artifactId>jmxtools</artifactId>
            </exclusion>
            <exclusion>
               <groupId>com.sun.jmx</groupId>
               <artifactId>jmxri</artifactId>
            </exclusion>
         </exclusions>
         <scope>runtime</scope>
      </dependency>

      <!-- @Inject -->
      <dependency>
         <groupId>javax.inject</groupId>
         <artifactId>javax.inject</artifactId>
         <version>1</version>
      </dependency>
            
      <!-- Servlet -->
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>servlet-api</artifactId>
         <version>2.5</version>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>javax.servlet.jsp</groupId>
         <artifactId>jsp-api</artifactId>
         <version>2.1</version>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>jstl</artifactId>
         <version>1.2</version>
      </dependency>
   
      <!-- Test -->
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.12</version>
         <scope>test</scope>
      </dependency>        
   </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

MyBatis로 기능 처리가 잘 되는 것을 볼 수 있다.

 

 

비교를 위해 남겨 놓은 수정 전 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.springbook</groupId>
	<artifactId>biz</artifactId>
	<name>BoardWeb</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	<properties>
		<java-version>1.6</java-version>
		<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>
	<dependencies>
	
	<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
	<dependency>
	    <groupId>org.projectlombok</groupId>
	    <artifactId>lombok</artifactId>
	    <version>1.18.24</version> 
	    <scope>provided</scope>
	</dependency>
	
	
	
	
	      <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
      <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.8.8</version>
          <scope>runtime</scope>
      </dependency>
      
      
      
      
	
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
	<dependency>
		 <groupId>org.springframework</groupId>
		 <artifactId>spring-jdbc</artifactId>
		 <version>${org.springframework-version}</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
	<dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
	    <version>1.4</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
	<dependency>
	    <groupId>commons-fileupload</groupId>
	    <artifactId>commons-fileupload</artifactId>
	    <version>1.3.1</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
	<dependency>
	    <groupId>com.fasterxml.jackson.core</groupId>
	    <artifactId>jackson-databind</artifactId>
	    <version>2.9.7</version>
	</dependency>
	
	
	
	    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.5.2</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	    <version>2.0.6</version>
	</dependency>
		
	<!-- https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core -->
	<dependency>
	    <groupId>org.apache.ibatis</groupId>
	    <artifactId>ibatis-core</artifactId>
	    <version>3.0</version>
	</dependency> -> 강사님 파일에는 없음
	
	
	

		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				 </exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
				
		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>	
		
		<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
		<dependency>
		    <groupId>org.aspectj</groupId>
		    <artifactId>aspectjweaver</artifactId>
		    <version>1.8.8</version>
		    <scope>runtime</scope>
		</dependency> -> 강사님 파일에는 위에 위치되어 있음. 
		
		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j-version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>
				
		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	
		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>        
	</dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

ibatis-core는 그리고 어디서 왜 가지고 온 것일까..? 과거의 내가 그랬다니 믿을 수가 없다.

롬북의 버전이 다른 것, ibatis-core 부분은 큰 문제는 아니지만 aspectjweaver 태그가 앞쪽에 들어가야 인식이 되는 건지 강사님이 aspectjweaver 태그를 넣은 부분으로 코드를 옮기자 실행이 됐다. 이클립스의 오류인지 실행 순서의 오류인지 알 수가 없다.

 

GPT에게 이 문제에 대해 물어봤다. 

질문 : 스프링으로 프로젝트를 할때 pom.xml에서 aspectjweaver태그 위치가 실행 오류와 연관이 있어?

답변 : 

`pom.xml` 파일에서 `aspectjweaver` 태그의 위치는 **실행 오류와 직접적인 연관이 없습니다**. 하지만, `pom.xml`에서의 태그 위치는 Maven 빌드 순서나 종속성 관리에 영향을 줄 수 있습니다. 실행 오류는 주로 다음과 같은 원인들로 발생할 수 있습니다:

### **1. 종속성 충돌**
- Maven에서는 여러 라이브러리를 가져올 때, 동일한 라이브러리의 다른 버전이 서로 충돌할 수 있습니다. 이런 경우 `aspectjweaver`가 포함된 위치와 상관없이, 해당 라이브러리의 버전 충돌로 인해 실행 오류가 발생할 수 있습니다.

### **2. 종속성 범위(scope)**
- `aspectjweaver` 라이브러리의 `scope`가 잘못 설정된 경우, 예를 들어 `test` 범위로 설정되어 있는데 실제 애플리케이션 런타임에서 필요할 경우, 런타임 오류가 발생할 수 있습니다.

### **3. 종속성 순서**
- Maven의 종속성은 일반적으로 선언된 순서대로 적용됩니다. 이 순서가 의존성 해결에 영향을 미칠 수 있습니다. `aspectjweaver`가 특정 다른 라이브러리에 의존하고 있고, 그 의존성이 올바르게 해결되지 않을 경우 문제를 일으킬 수 있습니다.

### **4. 종속성 버전**
- `aspectjweaver` 라이브러리의 버전이 프로젝트에서 사용 중인 다른 라이브러리와 호환되지 않을 경우, 실행 중 오류가 발생할 수 있습니다.

### **5. Maven 빌드 플러그인**
- `aspectjweaver`를 사용하는 동안, 필요한 Maven 빌드 플러그인(예: AspectJ Maven 플러그인)이 올바르게 설정되지 않은 경우에도 실행 오류가 발생할 수 있습니다.

### **올바른 위치**
일반적으로 `aspectjweaver`는 `dependencies` 섹션 내에 위치하며, 다른 종속성과 함께 나열됩니다. 예를 들어:

```xml
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.7</version> <!-- 버전은 예시입니다. -->
    </dependency>
    <!-- 기타 종속성들 -->
</dependencies>
```

### **오류를 방지하는 방법**
1. **정확한 버전 관리**: 모든 종속성의 버전을 일관되게 관리합니다.
2. **종속성 충돌 방지**: `mvn dependency:tree` 명령을 통해 의존성 트리를 확인하고, 충돌이 있는지 검사합니다.
3. **종속성 우선순위 확인**: 특정 종속성이 다른 종속성보다 먼저 로드되도록 해야 한다면, `pom.xml`의 선언 순서를 조정할 수 있습니다.
4. **빌드 플러그인 설정**: 필요한 경우 AspectJ Maven 플러그인이나 다른 관련 플러그인을 설정합니다.

### **마무리**
`aspectjweaver` 태그의 위치가 실행 오류의 직접적인 원인은 아니지만, Maven 종속성 관리에서의 위치, 버전, 범위(scope), 그리고 다른 라이브러리와의 충돌 여부는 오류 발생과 밀접한 관련이 있습니다. 따라서 이러한 요소들을 종합적으로 고려하여 문제를 해결하는 것이 중요합니다.

 


휴.. 쉽지 않다.

버전을 강사님과 다 맞췄는데 안됐고, 나 뿐만 아니라 다른 동료들도 같은 오류가 난 것으로 보아

강사님도 저 오류가 나 파일을 수정하셨는데 공유가 되지않았고

저 오류의 가장 유력한 후보는 일단 3번인 것 같다. 

 

강사님이 전에 주신 pom.xml 파일과 비교해도 aspectjweaver 태그의 순서 말고는 다른 부분이 없다!

GPT의 답변이 다 믿을만한 것은 아니지만 방대한 통계로 해준 답변일테니

앞으론 저런 오류가 날 수도 있구나 정도로 알고 코드를 잘 봐야겠다! 

 

삽질이라면 삽질이지만 언제 또 이렇게 pom.xml을 자세히 볼까!? 정말 엄청난 깨달음이다.

이참에 정리하는 aspectjweaver 태그란?

Maven 프로젝트에서 AspectJ 라이브러리를 사용하기 위해 선언하는 종속성을 지정하는 역할.

AspectJ는 AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)를 구현하기 위한 도구로,

스프링 프레임워크에서 AOP 기능을 구현할 때 자주 사용

 

AOP 프로그래밍

AOP (Aspect Oriented Programming)

여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법

 

 

UIUX _국비과정 0717 [스프링 3대 요소] | Notion

스프링의 3대 요소

ringed-tartan-f02.notion.site

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 

 

기본으로 이 코드가 설정이 되어야 하는데 난 지금까지 다른 설정으로 되어 기본 코드가 작성됐다.

그럴 땐 윈도우 Preferences에 들어가서 설정을 바꾸면 된다.

 

 

Workspace에서 바꿔주고, Web에서는 목록을 열어 html, css, jsp의 Encoding을 UTF-8로 바꿔준다.

 

 

그러면 이제 jsp 파일을 새로 만들 때마다 기본 설정이 UTF-8로 잘 된다!

[문제 1] Tomcat10 [org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.]을(를) 발생시켰습니다.

해결)

https://stackoverflow.com/questions/8021370/java-lang-noclassdeffounderror-javax-servlet-jsp-tagext-taglibraryvalidator

 

java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator

I followed the guide in this link to install JSTL but I got the following error when I tried to launch my JSP page: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator ...

stackoverflow.com

톰캣 10 버전은 자카르타 라이브러리 두 개를 다운 받아야한다. 

-> 이 라이브러리가 필요하다면! 난 결과적으로 아니었다.. 라이브러리 선택 자체를 잘 못했던 거였음. 

 

 

[문제 2] common > Person 파일 작동이안됨

해결)

Build Path 에 들어가보니 전에 잘못 다운받았던 라이브러리가 연결되어있었다. 그래서 그걸 삭제하니 해결됨!

그리고 404 에러가 한 파일에서만 자꾸 났는데.. 이름을 바꾸니 해결됨. 

이름 바꾸고는 꼭 프로젝트 들어가서 클린을 해줄 것! 

 

 

 

요청한 작업을 수행하는 중 오류 발생: IO 오류: The Network Adapter could not establish the connection (CONNECTION_ID=zKdIfC+zSJKe0zs0HLXHFg==) 업체 코드 17002

 

원인 : 오라클 오토런이 걸려있지 않아 발생한 오류.

 

잘 되다가도 가끔 이런 오류가 뜨는데 그럴 땐 이렇게 오라클 컨테이너를 확인해보고,

docker ps --all

구동시킬 컨테이너 이름을 적어 다시 시작해주면 된다.

docker restart (구동시킬 컨테이너 이름)

 

오라클 디벨로퍼도 껐다 다시 켜서 실행해보면 잘 된다.

오류 메세지 :

several ports (8005, 9999) required by tomcat v9.0 server at localhost are already in use. the server may already be running in another process, or a system process may be using the port. to start this server you will need to stop the other process or change the port number(s).

 

Mac ) 해결방법 :

터미널 창에서

//포트번호로 찾기
lsof -i :[포트번호]

//프로세스 종료하기
kill -9 [PID]

 

윈도우 ) 해결방법 :

명령 프롬포트에서

netstat -p tcp -ano 치고 8080, 9999 포트 사용 중인 pid 찾아서

taskkill /f /pid (번호) 치고 강제 종료

번호 칠 때는 괄호 없어야 한다.

 

 

맥은 윈도우와 명령어가 다르다! 

그리고,, 맥에서는 톰캣은 꼭 종료 시 서버를 잘 끄고, 실행했던 서버도 다 죽여야 다음에 저런 오류가 안뜬다.

이클립스 자체도 별로지만 맥이 이클립스를 좀 예민하게 받아들이는 것 같다..

  • [ jsp ) .metadate 파일 보는 법, 숨겨진 파일 보는 법 : shift + command + . ]
  • jsp는 파일 저장 방식이 다르다고 하는데 .metadate 파일 안에서 내가 만든 파일은 어디서 볼 수 있나
  • jsp workspace 에 저장되어 있는 파일은 뭐지..!?

→ getRealPath 실제 저장된 파일 경로

 

톰켓에서 실제 데이터를 저장하고 있는 곳

/jsp-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/firstjsp/

 

  • 쿠키는 톰캣서버에서 제공하는 객체라 톰캣서버를 통해서만 수집하는 건가???

→ 그게 아니다. 어디서든 쿠키를 설정할 수 있다! 회원가입, 결제창 등 고객과 상호작용을 위한 페이지마다 자바와 같은 언어로 쿠키 기능을 넣으면 된다. 톰캣으로만 쿠키 기능을 구현할 수 있는 것이 아님. 쿠키는 하나의 기능! 자바스크립트를 통해 쿠키를 읽을 수도 있다.

  • jsp가 일단 잘 설치된게 맞는지!! 맞는것 같다.. 근데 자바 버전이 다른 것 같은데 이상 없는 건지 모르겠음 나중에 문제가 될지..? (뭐 까는 것마다 자바버전,경로 설정하다보니)

 

  • wep.xml 파일의 역할

→ 웹 애플리케이션에서 중요한 역할을 하는 배포 서술자 <servlet>, <servlet-mapping>

→ 서블릿 설정, 요청과 응답을 처리하기 전에 특정 로직을 실행하는 필터를 정의 <filter>, <filter-mapping>

→ 어플리케이션의 생명주기 이벤트를 처리하는 리스너를 정의 <listener>

→ 웹 애플리케이션 초기화 매개변수 설정 <context-param>

→ 에러 페이지 설정 <error-page>

→ 보안설정 <security-constraint>, <login-config> …

→ 파일 확장자와 MIME 타입 매핑 <mime-mapping>

( MIME 타입은 인터넷을 통해 전송되는 파일의 형식을 지정하는 표준 - text/html , image/jpeg , video/mp4 같은 것 )

  • 팝업창 구현한 예제 왜 닫기 버튼 안 먹히는지 (gpt도 모름..)
  • html + css 할때 그리드 플랙스 다 같이 써도 되는지
  • 오라클 SQL 진짜.. 부모와 자식 구분이 안됨. <- 상대적인 거고 어떤 의도로 테이블을 만드느냐에 따라 어디선 이게 부모, 어디선 자식이 될 수 있는 거였음. 절대적인 건 없다. 

 

 

ㅠㅠ 

파워포인트를 꽤 잘다루는 난.. 왜인지 피그마로 뭐가 안된다. 

피그마로 단위평가를 본 지 꽤 됐지만 망한 피그마 시험이 계속 생각났다.

설상가상으로 오늘 강사님이 내 피그마 시험을 채점하시며 "안된다"하고  한숨을 쉬시는 걸 보고는 그냥 될때까지 차분히 다시 해보기로!

내가 자꾸 못하고 있던 건 화면의 가로 스크롤이다. 사실 엄청 쉬운건데 내가 헤맸던 이유는 그룹과 프레임 설정을 엉망으로 했던 것!!!

 

피그마에서 그룹은 이미지를 설정과 연관되고,

프레임은 프로토타입 설정에 영향을 준다고 생각하면 쉽다! 

 

그리고 피그마 작업을 할땐 디자인도 중요하지만 프로토타입 설정으로 인해 동적인 효과를 미리 구현하는 것에도 큰 의의가 있으니

차분히, 개발 과정을 가장해 구성에 들어갈 것.

이라고.. 누가 말해주진 않았지만 스스로 생각해본다.. 맞겠지? ㅠ

 

 

암튼 

 

스크롤은 이렇게!

먼저 이미지를 묶어 그룹처리, 다음은 그 그룹을 프레임으로 묶는다.

 

그리고 그 프레임 크기를 화면에 보여질 이미지만큼 조절하고 

위 화면처럼 프로토타입에 들어가 스크롤을 설정해준다.

 

그럼 이렇게 스크롤이 잘 된다!

 

 

이제 어떻게 하는지 알았으니 다음엔 더 잘해보자..

+ Recent posts