728x90
반응형

org.apache.catalina.core.ContainerBase startInternal
심각: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 6 more
Caused by: java.lang.NoClassDefFoundError: Lorg/apache/ibatis/session/SqlSessionFactory;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2436)
at java.lang.Class.getDeclaredFields(Class.java:1806)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:263)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:142)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: java.lang.ClassNotFoundException: org.apache.ibatis.session.SqlSessionFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
... 20 more

12월 01, 2014 10:03:28 오전 org.apache.catalina.core.ContainerBase startInternal
심각: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.startup.Catalina.start(Catalina.java:691)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more



tomcat7 lib 폴더에 있는 servlet-api.jar 파일을
사용하고 있는 jdk 설치 폴더(C:\Program Files\Java\jdk1.7.0_65\lib)
에 붙여넣기 해서 해결했습니다.
에러가 나는 원인은 JDK의 lib 폴더에 위치한 servlet-api.jar 파일이 6.0버전에 맞는 구 버전이기 때문이랍니다.

728x90
반응형

'Web Programming > server' 카테고리의 다른 글

Tomcat JNDI 설정  (0) 2018.09.04
톰캣 404  (0) 2018.09.04
728x90
반응형


-- 에러메시지

exception

org.apache.jasper.JasperException: For input string: ""
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NumberFormatException: For input string: ""
	java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	java.lang.Integer.parseInt(Integer.java:489)
	java.lang.Integer.parseInt(Integer.java:518)
	org.apache.jsp.bulletin.poll.poll_005flist_jsp._jspService(poll_005flist_jsp.java:108)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.



String 변수에 숫자형태가 아닌 null 이나 "" 값이 할당 되어있어서 그런거 같습니다.
그부분을 예방하는 차원에서
다음과 같은 차원의 소스코드를 추가하세요.


String str = request.getParameter("str");
if(str == null || str.trim().equals("")){
str = "0";
}

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

클래스 정보 가져오기 - 리플렉션  (0) 2018.09.04
JSTL에서 LIST Size  (0) 2018.09.04
Jsoup parser 크롤링  (0) 2018.08.30
java 경력 기술 면접 질문 리스트  (0) 2018.08.29
java 기술 면접 질문 리스트  (1) 2018.08.29
728x90
반응형

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 



변수명이나 클래스명은 잘못쳤을 경우 컴파일때 에러가 발생합니다..


로칼 변수와 전역 변수명이 같을 경우엔 컴파일때 문제도 없고 버그가 생길수 있겠지만..


코딩할때 로칼 변수명과 전역 변수명을 같이 주면 안되는 식..


XML의 경우에는 컴파일때 발견 못하고 실행할때 발견하게 되지만 설사 에러 메시지에 나옴

728x90
반응형
728x90
반응형

* SharedPreference 정의


1. 저장


> SharedPreference 를 선언한다.


public final String PREFERENCE = "com.studio572.samplesharepreference";

SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);

// SharedPreferences 의 데이터를 저장/편집 하기위해 Editor 변수를 선언한다.
SharedPreferences.Editor editor = pref.edit();

// key값에 value값을 저장한다.
// String, boolean, int, float, long 값 모두 저장가능하다.
editor.putString(key, value);

// 메모리에 있는 데이터를 저장장치에 저장한다.
editor.commit();


SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);

첫번째 매개변수(PREFERENCE) : 저장/불러오기 하기 위한 key이다.

이 고유키로 앱의 할당된 저장소(data/data/[패키지 이름]/shared_prefs) 에 "com.studio572.samplesharepreference.xml" 로 저장된다.

이 때 xml 파일명은 사용자 정의가 가능하다.


> 두번째 매개변수(MODE_PRIVATE) : 프리퍼런스의 저장 모드를 정의한다.


[MODE_PRIVATE : 이 앱안에서 데이터 공유]

[MODE_WORLD_READABLE : 다른 앱과 데이터 읽기 공유]

[MODE_WORLD_WRITEABLE : 다른 앱과 데이터 쓰기 공유]




2. 불러오기


// SharedPreference 를 선언한다.
// 저장했을때와 같은 key로 xml에 접근한다.
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);

// key에 해당한 value를 불러온다.
// 두번째 매개변수는 , key에 해당하는 value값이 없을 때에는 이 값으로 대체한다.
String result = pref.getString(key, "");




아래는 SharedPreference를 사용한 예제 소스.


특별한 코드는 없으니 한번 쓰윽 훑어보시면 될 듯 합니다.


위 유튜브 동영상의 구현 소스이다.



* MainActivity.java

package com.studio572.samplesharepreference;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

public final String PREFERENCE = "com.studio572.samplesharepreference";
public final String key01 = "key01";
public final String key02 = "key02";
public final String key03 = "key03";
public final String key04 = "key04";
public final String key05 = "key05";
private boolean isBoolean;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final TextView result = (TextView) findViewById(R.id.result);

final EditText inputString = (EditText) findViewById(R.id.edit01);
final Button inputBooleanTrue = (Button) findViewById(R.id.edit02_1);
final Button inputBooleanFalse = (Button) findViewById(R.id.edit02_2);
final EditText inputInt = (EditText) findViewById(R.id.edit03);
final EditText inputFlaot = (EditText) findViewById(R.id.edit04);
final EditText inputLong = (EditText) findViewById(R.id.edit05);

Button saveString = (Button) findViewById(R.id.save01);
Button saveBoolean = (Button) findViewById(R.id.save02);
Button saveInt = (Button) findViewById(R.id.save03);
Button saveFloat = (Button) findViewById(R.id.save04);
Button saveLong = (Button) findViewById(R.id.save05);

Button loadString = (Button) findViewById(R.id.load01);
Button loadBoolean = (Button) findViewById(R.id.load02);
Button loadInt = (Button) findViewById(R.id.load03);
Button loadFloat = (Button) findViewById(R.id.load04);
Button loadLong = (Button) findViewById(R.id.load05);

Button clear = (Button) findViewById(R.id.clear);

inputBooleanTrue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isBoolean = true;
}
});
inputBooleanFalse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isBoolean = false;
}
});

saveString.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setPreference(key01, inputString.getText().toString());
}
});
saveBoolean.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setPreference(key02, isBoolean);
}
});
saveInt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setPreference(key03, Integer.parseInt(inputInt.getText().toString()));
}
});
saveFloat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setPreference(key04, Float.parseFloat(inputFlaot.getText().toString()));
}
});
saveLong.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setPreference(key05, Long.parseLong(inputLong.getText().toString()));
}
});

loadString.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result.setText("String: " + getPreferenceString(key01));
}
});
loadBoolean.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result.setText("Boolean: " + getPreferenceBoolean(key02));
}
});
loadInt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result.setText("Int: " + getPreferenceInt(key03));
}
});
loadFloat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result.setText("Float: " + getPreferenceFloat(key04));
}
});
loadLong.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result.setText("Long: " + getPreferenceLong(key05));
}
});

clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setPreferenceClear();
}
});
}
    

// 데이터 저장 함수
public void setPreference(String key, boolean value){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean(key, value);
editor.commit();
}
public void setPreference(String key, String value){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString(key, value);
editor.commit();
}
public void setPreference(String key, int value){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putInt(key, value);
editor.commit();
}
public void setPreference(String key, float value){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putFloat(key, value);
editor.commit();
}

public void setPreference(String key, long value){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putLong(key, value);
editor.commit();
}


// 데이터 불러오기 함수
public boolean getPreferenceBoolean(String key){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
return pref.getBoolean(key, false);
}
public String getPreferenceString(String key){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
return pref.getString(key, "");
}
public int getPreferenceInt(String key){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
return pref.getInt(key, 0);
}
public float getPreferenceFloat(String key){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
return pref.getFloat(key, 0f);
}
public long getPreferenceLong(String key){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
return pref.getLong(key, 0l);
}

// 데이터 한개씩 삭제하는 함수
public void setPreferenceRemove(String key){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.remove(key);
editor.commit();
}


// 모든 데이터 삭제
public void setPreferenceClear(){
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear();
editor.commit();
}

}



위 동영상에 나오는 UI대로 레이아웃을 코딩한다.

단순 레이아웃이므로 설명은 생략한다.,


* activity_main,xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:background="#88ff0000">

<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="1"
android:gravity="center"
android:paddingLeft="5dp"
android:text="결과 : "
android:textColor="#000000"/>
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="1"
android:paddingLeft="5dp"
android:gravity="center"
android:text=""
android:textColor="#000000"
android:background="#88cccccc"/>

</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:paddingLeft="5dp"
android:text="입력변수 자료형"
android:textColor="#000000"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="데이터 입력"
android:textColor="#000000"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:gravity="center"
android:text="저장"
android:textColor="#000000"
android:background="#cccccc"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:gravity="center"
android:text="불러오기"
android:textColor="#000000"
android:background="#cccccc"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="5dp"
android:text="String"
android:textColor="#000000"/>
<EditText
android:id="@+id/edit01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="#000000"/>
<Button
android:id="@+id/save01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:gravity="center"
android:text="저장"
android:textColor="#000000"
android:background="#cccccc"/>
<Button
android:id="@+id/load01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:gravity="center"
android:text="불러오기"
android:textColor="#000000"
android:background="#cccccc"/>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="5dp"
android:text="Boolean"
android:textColor="#000000"/>
<Button
android:id="@+id/edit02_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:text="ture"
android:textColor="#000000"/>
<Button
android:id="@+id/edit02_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:text="false"
android:textColor="#000000"/>
<Button
android:id="@+id/save02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:gravity="center"
android:text="저장"
android:textColor="#000000"
android:background="#cccccc"/>
<Button
android:id="@+id/load02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:gravity="center"
android:text="불러오기"
android:textColor="#000000"
android:background="#cccccc"/>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="5dp"
android:text="Int"
android:textColor="#000000"/>
<EditText
android:id="@+id/edit03"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:layout_weight="1"
android:textColor="#000000"/>
<Button
android:id="@+id/save03"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:text="저장"
android:textColor="#000000"
android:background="#cccccc"/>
<Button
android:id="@+id/load03"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:gravity="center"
android:text="불러오기"
android:textColor="#000000"
android:background="#cccccc"/>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="5dp"
android:text="Float"
android:textColor="#000000"/>
<EditText
android:id="@+id/edit04"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:layout_weight="1"
android:textColor="#000000"/>
<Button
android:id="@+id/save04"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:gravity="center"
android:text="저장"
android:textColor="#000000"
android:background="#cccccc"/>
<Button
android:id="@+id/load04"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:gravity="center"
android:text="불러오기"
android:textColor="#000000"
android:background="#cccccc"/>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="5dp"
android:text="Long"
android:textColor="#000000"/>
<EditText
android:id="@+id/edit05"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:layout_weight="1"
android:textColor="#000000"/>
<Button
android:id="@+id/save05"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:gravity="center"
android:text="저장"
android:textColor="#000000"
android:background="#cccccc"/>
<Button
android:id="@+id/load05"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:gravity="center"
android:text="불러오기"
android:textColor="#000000"
android:background="#cccccc"/>
</LinearLayout>
<Button
android:id="@+id/clear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="0"
android:gravity="center"
android:text="clear"
android:textColor="#000000"
android:background="#cccccc"/>

</LinearLayout>


728x90
반응형
728x90
반응형





 PHP - Include 란?





Include는 포함하다라는 의미를 갖고 있습니다

예를 들어 현재 실행시키려는 PHP 파일이 있으며, 현재 실행하고자하는 다른 PHP파일을 포함시킬때 사용하는 방법이 Include와 Require입니다


즉 PHP에서는 다른 PHP파일을 현재 PHP파일 코드안으로 불러와 사용할수 있습니다




또한 PHP에서는 include_once와 require_once라는 것이 있습니다

Include와 Require에 _once가 붙게된다면 파일을 불로올때 한번만불러오게 됩니다


예를 들어 동일한 파일을 include_once, require_once를 이용하여 2번 코드를 작성하게 되었다하여도 1번만 불러오게 됩니다


PHP에서 파일을 불러올때 4가지 형식


Include : 다른 PHP파일을 불러올때 사용

include_once : 파일을 불러올때 1번만 로드하게 됨

require :다른 PHP파일을 불러올때 사용

require_once : 파일을 불러올때 1번만 로드하게 됨






 PHP - Include와 Require 사용문법



먼저 include를 사용하는 문법을 알아보도록 하겠습니다



1
2
3
4
5
<?php
 
include '[불러올 파일명]';
 
?>


위 코드를 보시면 먼저 PHP상에서 사용하는 include라는 특별한 구문을 사용해서 불러올 파일명 안에 파일명을 입력하시면 파일을 불러오실수 있습니다




1
2
3
4
5
<?php
 
require '[불러올 파일명]';
 
?>


위 코드는 require 사용하여 파일을 불러오는 구문입니다 Include와 사용하는 방법은 동일합니다



1
2
3
4
5
<?php
 
include_once '[불러올 파일명]';
 
?>


1
2
3
4
5
<?php
 
require_once '[불러올 파일명]';
 
?>


include_once, require_once 문법은 include, require와 문법과 동일합니다







 PHP - Include 사용해보기


이제 Include를 사용해 보도록 하겠습니다




파일 : include.php


1
2
3
4
5
6
7
8
9
<?php
 
function server(){
 
  return 'server-talk';
 
}
 
?>


위 코드는 불러올 파일입니다



파일명 : get_include.php


1
2
3
4
5
6
7
<?php
 
include 'include.php';
 
echo server();
 
?>


위 코드는 include.php 파일을 불러와 불러온파일의 함수를 출력하는 코드입니다





출력내용을 확인하시면 불러온 파일의 함수의 리턴값이 출력되는것을 확인하실수 있습니다







 PHP - Include와 Require 차이점



이제 마지막으로 Include와 Require의 차이점을 알아보도록 하겠습니다

현재까지 사용한 바로는 기능상의 차이는 없었습니다


그러나 존재하지 않는 파일 등등의 경우 에러 표시가 다르게 출력됩니다



[ Include ERROR ]



위 에러내용은 Include를 잘못하였을경우에 대한 에러이며, Warning Error가 나오시는것을 확인 하실수 있습니다




[ Require ERROR ]



위 에러내용은 Require를 잘못하였을경우에 대한 에러이며, Fatal Error가 나오시는것을 확인 하실수 있습니다



Include와 Require의 에러내용으로 보았을때 Fatal 에러보다 Warning 에러보다 심각한 에러이기 때문에 Include 보다 Require가 더 엄격하게 처리한다고 볼수 있겠습니다.



728x90
반응형

'Web Programming > php' 카테고리의 다른 글

PHP 문자열 길이 (strlen, mb_strlen 함수)  (0) 2018.09.04
php data types  (0) 2018.09.04
php 배열  (0) 2018.09.03
php 함수 function  (0) 2018.09.03
php 반복문 for  (0) 2018.09.03

+ Recent posts