JSTL 태그 - fn

Web/JSP 2016. 8. 9. 18:42 Posted by Request

fn:contains(string, sbustring) 

string이 substring을 포함하면 return True 


fn:containsIgnoreCase(string, sbustring) 

대소문자 관계없이 string이 substring을 포함하면 return True 


fn:endsWith(string, suffix) 

string이 suffix로 끝나면 return True 


fn:escapeXml(string) 

stting에 XML과 HTML에서 특별한 의미를 가진 문자들이 있으면,

XML엔티티 코드로 바꿔준뒤 문자열 반환 


fn:indexOf(string, sbustring)

 string에서 substring이 처음으로 나타나는 인덱스 반환 


fn:join(array, separator) 

array요소들을 separator를 구분자로 하여 연결해서 반환 


fn:length(item) 

item이 배열이나 컬렉션이면 요소의 객수를 문자열이면 문자의 객수를 반환 


fn:replace(string, before, after) 

string내에 있는 before 문자열을 after 문자열로 모두 변경해서 반환 


fn:split(string, separator) 

string내의 문자열 separetor에 따라 나누어서 배열로 구성해서 반환 


fn:startsWith(string, prefix) 

string이 prefix로 시작하면 return True 


fn:substring(string, begin, end) 

string에서 begin인덱스에서 시작해서 end인덱스에 끝나는 부분의 문자열 반환 


fn:substringAfter(string, sbustring) 

string에서 substring이 나타나는 이후의 문자열 반환 


fn:substringBefore(string, sbustring) 

string에서 substring이 나타나는 이전의 문자열 반환 


fn:toLowerCase(string) 

string을 모두 소문자로 바꿔 리턴 


fn:toUpperCase(string) 

string을 모두 대문자로 바꿔 리턴 

 

퍼옴 : http://thdnf1004.tistory.com/entry/JSTL-%ED%83%9C%EA%B7%B8-fn

Action 비지니스 처리

Web/JSP 2016. 1. 12. 13:50 Posted by Request

HttpSevletRequest req = getRequest();

 

req.setAttribute("searchList",dataService.getList(searchBean));

 

 

1.JSP 기본 객체의 속성 값 지정이 아직도 어색하다니..

setAttribute(String name, Object value) 이름이 name 속성의 값을 value 로 설정

getAttribute(String name) - 이름 name인 속성의 값을 가져온다.

getAttrubuteNames() - 속성의 이름 목록을 가져온다.

 

2.속성에 대한 범위 지정

pageContext - 하나의 페이지 내에서 공유 될 값 . 주로 custom tag 에서 새로운 변수 추가 할때 사용.

request - 한번 의 요청을 처리하는 되 사용되는 모든 페이지에서 공유될 값. 페이지 사이에서 정보 전달하기 위해 사용.

session - 한 사용자와 관련된 정보를 공유할 때 사용.

application - 모든 사용자 와 관련해서 공유할 정보를 저장.

 

 

http://woosa7.tistory.com/60

 

 

 

spring:eval 설정

Web/JSP 2015. 7. 15. 11:31 Posted by Request

출처 : http://shonm.tistory.com/376

 

Spring 에서는 SP EL 이라는 강력한 커스텀 태그가 있다.

그리고 자동으로 Properties 파일을 읽어서 JSP 파일이든 JAVA 파일이든

읽어 줄 수 있다. (spring 3.0 이상 버전 기준)

바로 사용 방법을 알아 보도록 하자.

1. properties 파일 작성 (config.properties)

css.path=/cms_developer_poc/css
js.path=/cms_developer_poc/js
root.path=/cms_developer_poc

2. dispacher-servlet.xml 에 properties 파일 설정

<!-- for config file load, using SpEL -->
< util:properties id="config" location="classpath:conf/spring/config.properties" />

3. JSP 파일에 사용

<script src="<spring:eval expression="@config['js.path']"/>/jquery-1.7.1.js" type="text/javascript"></script>

4. JAVA 파일 사용

 @Value("#{config['root.path']}")
 public String RootPath;


properties 에서 사용된 key 값으로 불러와 주기만 하면 되므로
상당히 간단하다.

여기서 문제는 한글이 지금 상태에서는 안된다는 것이다.

properties 파일은 기본적으로 아스키 값인데 한글은 유니코드로 입력이 되어야 하므로

입력이 안되는 문제가 발생하는 것인데

이클립스 에서라면 간단한 해결 방법이 있다.

1. 이클립스 상단의 Help 메뉴의 install New Software 항목으로 가자
2. http://propedit.sourceforge.jp/eclipse/updates/
    라는 properties edit 라는 플러그인 Update URL 을 등록 시킨다.
3. 위의 사이트에서 Properties edit 플러그인을 받아서 설치하면
    properties 파일들을 열어서 보여줄 때는 유니코드로 보여주고
    저장될 때는 아스키값으로 저장되는 magic  을 보여준다.
4. 정상적으로 잘 설치가 되었는지 확인 하기 위해
    상단 메뉴 Window >  Preferences >  General > Editors > File Associatios 에서
    *.properties 파일이 Properties Editor (default) 인지 확인 하면 된다.

 




위의 결과 한글로 잘 볼 수가 있게 된다.

 

web.xml 에 대한 구조 이해

Web/JSP 2012. 6. 20. 15:43 Posted by Request

web.xml은 xml파일이다. 따라서 xml 작성과 동일한 규칙이 적용된다.
환경설정은 <web-app>으로 시작하고 </web-app>로 끝난다. 그외 삽입되는 요소로는 다음과 같다.

.ServletContext Init Parameters
.Session Configuration
.Servlet/JSP Definitions
.Servlet/JSP Mappings
.Mime Type Mappings
.Welcom File list
.Error Pages

 

 

web.xml의 elements의 순서
각 element의 순서는 아래 순서에 따른다.

<icon?>,
<display-name?>,
<description?>,
<distributable?>,
<context-param*>,
<filter*>,
<filter-mapping*>,
<listener*>,
<servlet*>,
<servlet-mapping*>,
<session-config?>,
<mime-mapping*>,
<welcome-file-list?>,
<error-page*>,
<taglib*>,
<resource-env-ref*>,
<resource-ref*>,
<security-constraint*>,
<login-config?>,
<security-role*>,
<env-entry*>,
<ejb-ref*>,
<ejb-local-ref*>

 

 

 

<display-name>어플리케이션 이름</display-name>

<description>어플리케이션 설명</desciption>

 

<!--서블릿 매핑 클래스 설정-->

<servlet>

<servlet-name>BoardFrontController</servlet-name>    //클래스명

<servlet-class>kr.co.board.controller.BoardFrontController</servlet-class>  //클래스경로+클래스명

<load-on-startup>1</load-on-startup> //서블릿주기 init()메소드의 실행 시 서버스타트 우선권

//init()메소드는 한번 호출되면 차 후에는 destroy()될때까지 그안에 있는 로직이 메모리에 정적 저장

</servlet>

 

<!--서블릿 매핑 설정-->

<servlet-mapping>

<servlet-name>BoardFrontController</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

 

<!--JDBC 매핑-->

<resource-ref>

<description>Connection</description>

<res-ref-name>jdbc/OracleDB</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

 

<!--존재 하지 않는 경로(404) 에러 페이지 설정 -->

<error-page>

<error-code>404</error-code>

<location>/error.jsp</location>

</error-page>

 

<!-- 태그 라이브러리 설정 -->

<taglib>

<taglib-uri>taglibs</taglib-uri>

<taglib-location>/WEB-INF/taglibs-cacahe.tld</taglib-location>

</taglib>

 

출처 : http://blog.daum.net/revolo/3368937 내용 정리

setContentType

Web/JSP 2012. 6. 13. 15:25 Posted by Request

setContentType

 

1) 형식 : setContentType(문자 Type)

2) 설명 : HTTP 헤더 부분의 Content-Type을 정의합니다.

 

(1)type은 MIME-type을 의미합니다.

(2) Server에 있는 Ditto가 실행 결과를 브라우저로 Output할때, HTML 브라우저로 전송하는 정보를 다루기 위한 함수 입니다.

 

(3) 웹서버가 클라이언트에서 요청한 결과를 전송 할때 보내지는 정보는, 크게 우리의 눈에는 보이지 않는 Header 부분과 실제 브라우저를 통해 사용자에게 보여지게 될 Content 부분으로 나뉘어 집니다.

Header 부분에는 여러 가지 정보를 (Stauts, Content-Type, Location, Connection 등) 포함 되어 있는데, 이 중 Content-Type은 사용자가 보게 될 Content 부분의 종류가 무엇인지를 정의합니다.

마찬가지로 그 처리 결과를 브라우저로 내 보낼 때, TEXT로 보낼 것인지, HTML 형태로 보낼 것인지 아니면 GIF그림 파일로 보낼 것인지와 같은 Content-Type을 결정해 주어야 합니다.

 

HTML로 출력시 : setContentType("text/html");

일반 TEXT로 출력시 : setContentType("text/plain");

이미지 GIF로 출력시 : setContentType("image/gif");

이미지 JPG, JPEG로 출력시 : setContentType("image/jpeg");

 

 

출처 : http://blog.naver.com/PostList.nhn?from=postList&blogId=min_sub&categoryNo=20&currentPage=8

 

response.setContentType("text/html;charset=euc-kr");

PrintWriter out = response.getWriter();

....

 

respnse 변수에 대해 설명을 드리자면, Servlet의 doGet 혹은 doPost 함수의 파라미터로 response변수를 만들어 놓았을 것입니다.

response 변수에 실제 객체를 할당해주는 것은 servlet container가 알아서 해주기 때문에 개발자는 신경을 쓸 필요가 없습니다.

 

 보통 어떠한 Servlet으로 요청이 들어오게 되면, 그 요청을 파악을 해서 어떠한 응답을 클라이언트로 보내야하는지에 대한 분석이 이루어집니다.

 

흔히 클라이언트로부터 Servlet으로 요청이 들어오게 되면, 요청 파라미터라는 것이 같이 오게 되는데,

이것에 대한 분석은 request.getParameter("")이런한 식으로 파악을 하게 됩니다.

 

요청을 파악했으면, 클라이언트로 내보낼 응답을 작성해야 합니다.

대부분의 웹 프로그래밍은 응답을 텍스트로 작성하며, 이 텍스트는 대부분 HTML 페이지의 모양을 하고 있게 됩니다.

 

여기서 응답으로 텍스트를 기록해야하는데, 이때 스트림이라는 개념이 나옵니다.

그대로 데이터의 흐름이라고 보시면 됩니다.

 

Servlet에서는 클라이언트 쪽으로 보내는 데이터의 흐름을 건드려야 할 필요가 있습니다.

 

 위에서 언급했던 response 변수를 활용하면 응답과 관련된 많은 작업들을 수행 할수 있습니다.

응답 스트림에 텍스트를 기록하는 것도 가능하며, 이 작업을 하기 위해서 response.getWriter()를 호출해야 합니다.

 

보통 스트림에는 바이너리 기반의 스트림과 텍스트 기반의 스트림이 있습니다.

보통 바이너리 기반의 스트림은 InputStream(입력), OutputStrream(출력)이라는 것으로 끝나고,

텍스트 기반의 스트림은 reader(입력), Writer(출력)로 끝납니다.

 

언급했듯이 Servlet으로 들어온 요청은 대체로 텍스트(HTML)로 응답을 보내기 때문에,

 

PrintWriter out= response.getWriter(); 형식으로 응답으로 내보낼 출력 스트림을 얻어낸 후,

out.println("<script>"); 이런 식으로 스트림에 텍스트를 기록하게 됩니다.

 

출처 :

http://blog.naver.com/PostView.nhn?blogId=min_sub&logNo=80069919296&parentCategoryNo=20&viewDate=&currentPage=1&listtype=0

 

 

 

 

getParameter와 getAttribute의 차이점

Web/JSP 2012. 6. 12. 13:38 Posted by Request

getParameter와 getAttribute의 차이점이 궁금했다.

정확히 설명해주는 곳도 없어 네이버에게 물어보니

 

 

 

getParameter는 Servlet 또는 Jsp에서 파라미터로 넘어온 데이터를 가져다가 사용할때 사용한다.

 

그리고 getAttribute는 사용자가 임의적으로 추가해둔 데이터를 가져올 때 많이 사용된다.

 

set getAttribute는 Object 형식으로 넣을 수 있기 때문에 단순히 String형식이 아닌 기타 객체의 타입을 넣어서 역활을 합니다.

 

===================================================================================

딱히 어떨때 써야 할지 감이 오지 않는다.

 

 

 

JNDI 연결 시 문제

Web/JSP 2012. 5. 25. 15:14 Posted by Request

환경설정 :

톰캣 : 6.0

jdk : 1.6

oracle : 10g

-ojdbc5.jar

 

META-INF/context.xml Cannot create JDBC driver of class '' for connect URL 'null'

 

Connection Exception 발생..

책에 있는 내용 그대로~ 해봤지만 왜 안되나 구글링과 인맥을 통해서 얻은 결론은...

 

 

 

1)WEB-INF 에 Context.xml  생성

<Context>

<Resource name="jdbc/OracleDB"
    auth="Container"
    type="javax.sql.DataSource"
    username="scott"
    password="tiger"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
    removeAbandoned="true"
    removeAbandonedTimeout="60"
    logAbandoned="true"
    maxActive="500"
    maxIdle="100"/>

</Context>

2)WEB-INF 의 web.xml

<resource-ref>
<description>Connection</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

 

3)Servers의 톰캣 프로젝트에서 server.xml 설정

<GlobalNamingResources>

...

<Resouce  name="jdbc/OracleDB"
    auth="Container"
    type="javax.sql.DataSource"
    username="scott"
    password="tiger"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
    removeAbandoned="true"
    removeAbandonedTimeout="60"
    logAbandoned="true"
    maxActive="500"
    maxIdle="100"/>

</GlobalNamingResources>

 

 




4) $CATALINA_HOME\conf\context.xml

<Context>

...

<ResourceLink global="jdbc/OracleDB" name="jdbc/OracleDB" type="javax.sql.DataSource"/>

</Context>

5) $CATALINA_HOME\conf\web.xml

<web-app>

...

<resource-ref>

<description>DB Connection</description>

<res-ref-name>jdbc/OracleDB</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

</web-app>

=================================================

 

됐다가 다시 안된다... 간만에 하루치 삽질 중.....

(기초)servlet 설정하기

Web/JSP 2012. 5. 21. 18:09 Posted by Request

1.servlet-api.jar 파일 복사하기

 -톰캣 설치된 폴더에 servlet-api.jar 파일을 복사하여 개발되는 해당 프로젝트 lib폴더에 복사하든가, 프로젝트에 사용되는 java 빌드(Bulid)의 폴더 lib경로에 복사하여 추가한다.

 

ex)D:\apache-tomcat-6.0.35\apache-tomcat-6.0.35\lib

 

 

2.톰캣에서 Servlet 서블릿과 JSP 파일 동작 확인하기

이클립스 실행 > 다이나믹 웹 프로젝트 생성 > servlet 생성(new > servlet 선택) >

 

 

<servletTest.java>

response.setContentType("text/html");

response.setCharacterEncoding("euc-kr");

 

//Calendar 클래스 객체 선언

Calendar c= Calendar.getInstance();

 

 

int hour   = c.get(Calendar.HOUR_OF_DAY);

int minute = c.get(Calendar.MINUTE);

int second = c.get(Calendar.SECOND);

 

PrintWriter out= response.getWriter();

 

out.write("<HTML><HEAD><TITLE>ServletTest</TITLE>");

out.write("<BODY><H1>");

out.write("현재시각은");

out.write(Integer.toString(hour));

out.write("시");

out.write(Integer.toString(minute));

out.write("분");

out.write(Integer.toString(second));

out.write("초입니다.");

out.write("</H1></BODY></HTML>");

out.close();

 

 

<web.xml>

<servlet>

<servlet-name>ServletTest</servlet-name>

<servlet-class>kr.com.test.ServletTest</servlet-class> <!-- 해당 서블릿 생성한 경로를 적어준다.-->

</servlet>

 

<servlet-mapping>

<servlet-name>ServletTest</servlet-name>

<url-pattern>/ServletTest</url-pattern>

</servlet-mapping>

 

출처 : [ jsp 2.2&servlet3.0(오정원지음) 내용입니다. ]

 

 

 

 

executeQuery() 와 executeUpdate() 사용 정리

Web/JSP 2012. 5. 18. 16:11 Posted by Request

executeQuery() : 결과 값이 발생하여 값을 받아 와야 할때 사용한다.

-select

 

executeUpdate() : 결과 값을 받아 올 필요가 없을 때 사용한다.

-insert, update, delete