JSP 한글 텍스트 깨질때


안녕하세요.
고코더 입니다.


 1. 이전 시간에는 el태그로 전달된 한글이 깨지지 않게 하는 방법을 알아보았습니다.
-> Spring - 스프링 한글 처리 encodingFilter 추가 / web.xml


 2. 이번엔 JSP에서 디자인 요소로 미리 입력해놓은 한글이 이상하게 깨지는 현상이 있습니다.


 3. 이부분은 상단에 인코딩을 설정할 수 있는 태그를 선언해야 합니다.


 4. 상단위에 아래 코드를 심어놓으면 해결 됩니다.
1
<%@ page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" language="java" %>
cs

 5. 웹페이지에서도 기존에 입력해놓은 한글 텍스트가 정상적으로 입력 되는걸 확인할 수 있습니다. 


java에서는 web.xml에 인코딩 필터를
프론트에서는 JSTL로 선언을 해야 한글이 정상적으로 보입니다.


마무리



매번 귀찮네요.



Tag java, jsp, 한글

댓글을 달아 주세요


DispatcherServlet이 컨트롤러를 가져오는 방법


안녕하세요.
고코더 입니다.


오늘은 스프링에 핵심이자 특별한 존재인 DispatcherServlet을 좀 더 자세히 알아보겠습니다.
이전 스프링 구조도에서 중앙에서 모든걸 처리하는 역할을 했습니다.
-> Spring - 스프링 MVC 구조도 / 이해하기 쉬운



DispatcherServlet은 기존에 Web.xml이 담당했던 servlet 맵핑을 대신합니다. 그 덕에
복잡한 XML작성에서 해방 되었습니다. MVC를 가능하게 해준 이 서블릿에 대해
소스를 위주로 알아보겠습니다.
이전에 함께 만든 프로젝트 파일 기준으로 살펴봅니다. 

 1. web.xml 


 1-1. 패키지에서 src->main->webapp->WEB-INF->web.xml을 열어봅니다.


 1-2. 그 다음 XML에서 정의된 내용들을 함께 살펴 봅니다. 

20번 라인
- DispatcherServlet 기능을 참조하여
19번 라인
- appServlet 으로 네임을 지정 합니다.
29번 라인
- appServlet은 URL 패턴을 맵핑 합니다.
30번 라인
- 모든 URL에 대한 맵핑을 담당 합니다. 즉 모든 프론트 접속을 담당 합니다.

결론은 web.xml에 서블릿 맵핑을 DispatcherServlet 위임한 내용을 확인 가능합니다.



 2. 디스패처서블릿 소스 / spring-webmvc-3.1.1.RELEASE.jar


DispatcherServlet은 스프링 프레임워크에 기능입니다. 

 2-1. 해당 디스패처서블릿 기능은 스프링 spring-webmvc-3.1.1.RELEASE.jar 존재합니다.
해당 jar를 열어보세요.


 2-1. 해당 jar안에 DispatcherServlet.calss 로 정의 되어 있고 오픈 소스라 공개는 되어 있지만 해석하기 어렵지만 해당 jar에 class로 만들어져 있다는걸 눈으로 확인해보는 것도 도움이 됩니다.



 3. 컨트롤러에 어노테이션 / Controller


 3-1. 스프링에서 컨트롤러 파일을 열어보겠습니다.
기본으로 만들어져 있는 HomeController.java를 소스를 열어보세요.


 3-2. 보시면 컨트롤러가 어노테이션으로 선언되어 있습니다. 
이 어노테이션으로 해당 소스가 컨트롤러라고 선언하고 
서블릿 프로젝트 처럼 web.xml에 컨트롤러를 매번 선언하지 않고도 자동으로
스프링이 스캔하여 컨트롤러 기능을 실행하게 합니다. 




 4. 컨트롤러 스캔 / context:component-scan


해당 컨트롤러에 어노테이션들이 자동으로
스프링에 컨트롤러 역할을 만들어주는건 해당 컨트롤러를
찾는 스캔을 하기 때문입니다.

 4-1. servlet-context.xml 을 열어봅니다.


 4-2. 해당 라인에서 context:component-scan에서 hello 팩키지가 설정되어 있습니다.
이 명령어를 통해서 패키지안에 java소스들을 풀스캔합니다.
그리고 어노테이션을 발견하면 해당 컨트롤러들을 참조하여 사용하게 만들어 줍니다. 



마무리


스프링 DispatcherServlet가 컨트롤러를 찾는 방법을 소개했습니다. 원리를 모르고 개발할수도 있지만 한번 눈으로 직접 원리를 알아보고 이해하며 개발하는건 큰 차이가 있습니다. 



댓글을 달아 주세요


eclipse spring JSP/JSTL 코어가 없음?


안녕하세요.
고코더 입니다. 

이클립스로 자바를 개발하면
빨간 엑스 오류표시가 친근합니다.
특히 프로젝트 초반에 import 된 소스는
빨간 라인 천지인데요.

오늘 다뤄볼 오류 메세지는 

▼ JSTL CORE가 없다는 내용입니다.
Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"



말 그대로 JSTL을 사용중인데
코어가 추가가 되지 않았으니

▼ Pom.xml 에 아래 dependency를 추가해주세요.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

그런데 사실 pom 문제보다는 아마도
메이븐이 해당 파일의 의존성을 주입하는데 실패한게 아닐까 싶습니다.

위에 방법이 실패했다면 아래 URL로 메이븐을 다시 다운받아 보세요.


마무리


빨간 라인이 보일때는 침착하게
하나씩 해결해보세요.
그것만으로도 레벨업 입니다. 



Tag core, jsp, jstl

댓글을 달아 주세요


자바 무료 호스팅 hongsnet.net



안녕하세요.

이전에 홍스넷에 대해 잠깐 글을 남겼었는데
홍스넷 운영자님이 댓글을 달아주셔서 곧 다시
회원가입을 받으신다고 말씀 해주셨습니다. 
(감짝 놀랐네요. 감사합니다)


PHP 무료 호스팅은 많고 많습니다.
제 블로그의 무료 호스팅을 소개하는 몇개의 글들이 있습니다.

그런데 비용적인 측면인지 
인프라 문제인지 이유는 모르겠지만
JSP 무료 호스팅은 잘 없습니다.


그런데 개인이 만든 홍스넷은 
특정한 자격 없이 자바 호스팅을
제공해주고 있습니다.

▼ 제공 서비스는 아래와 같습니다.
디스크 용량 : 500mb
트래픽 : 1G
Tomcat : 7.0
JAVA : 1.7
MySql : 5.6



스펙을 보니 학습용으로 아니면 홈페이지나 
포트폴리오 사이트로
사용하기에 전혀 무리가 없습니다.

그래서 저도 가입을 하고 JSP 호스팅 신청을 하였습니다.


개인적은 직장으로도 바쁘신데 
이런 서비스까지 운영하는게 참 대단합니다.
그리고 이걸 모두 혼자 만드신 열정도 대단합니다.

다음주에 셋팅이 완료되고 
호스팅을 돌려보고 다시 한번 리뷰를 남기려고 합니다.



마무리


홍스넷님 감사합니다.



댓글을 달아 주세요


홍스넷 가입불가 


안녕하세요.
고코더 입니다.

무료 호스팅은 대부분 PHP인 경우가 많습니다.
비교적 저렴한 서버에 설정이 쉽기 때문이겠죠.

그런데 홍스넷이라고 불리는 이곳은
JSP 호스팅이 가능했던거 같습니다.

오래전부터 JSP 무료 서버인 홍스넷을 가입하려고 했지만
SMS 문자 오류로 가입이 되지 않고 있습니다

▼발송 되었다고는 하는데 문자가 안오고 오류 메세지가 보이네요


▼오랜만에 공지사항을 보니
신규회원을 받는 다는 공지는 있었지만
해당 기간에 회원가입이 되지 않았네요.



▼구글에 홍스넷을 찾아보니
한 대학교 커뮤니티에 자신이 만든 서비스를 홍보한적이 있네요.
개인적으로 호스팅 인프라를 혼자 구축했다는면에서 참 대단한거 같네요.


아마도 개인적인 일과 생활 때문에
운영이 힘들거 같긴 한데
무료 학습용 JSP 호스팅을 갖고 싶은 저에게는 조금 아쉽네요.

저도 블로그와 홈페이지 운영을 해보니
이거조차 힘들텐데
인프라 관리는 얼마나 힘들까요.


마무리


다시 홍스넷이 부활하길 기대해 봅니다.


댓글을 달아 주세요


아파치 서버 디스크 용량이 꽉 찼을때 일어나는 현상 


안녕하세요. 고코더 입니다.


자바 서버에 JSP를 고치고 업로드를 하는 과정에서
신기한 경험을 했습니다.

▼업로드한 JSP에 접근하면 낫파운드(404)가 뜹니다.
혹은 JSP를 수정하면 해당 파일 접근시 역시 접속이 불가 합니다.


코딩적으론 문제가 없어보여
서버 쪽에 들어가 확인을 해보았습니다.

▼ 이런 서버가 돌고 있는 드라이브의 용량이 0바이트 남았네요.
디스크 용량이 꽉차서 JSP를 업로드시 was 상에 파일을 못읽는거 같습니다.



▼ 보통 이런 경우는 서버 운영이 오래동안 이루어져 아파치 LOG 파일 같은 각종
로그 파일들이 기가바이트 단위로 쌓여 있기 때문입니다.
오래된 LOG는 필요없고 백업해놓으면 될 문제입니다.
제 서버의 아파치의 LOG 폴더로 이동해서 큰 파일들을 지우기 시작했습니다. 


▼열심히 지우다 보니 이제 용량이 확보 되었네요.
LOG 파일이 30기가 될줄 이야 



아파치 서버의 업로드시 해당 파일이 읽히지 않는다면 
디스크 용량이 꽉찬 상태를 의심해 보세요.


마무리


당장의 장애가 스트레스였지만
좋은 경험이 하나 늘었네요



Tag 404, jsp, WAS, 서버

댓글을 달아 주세요


자바 JSP 에서 년,월,일 시간 출력하기


안녕하세요. 고코더 입니다.

JSP상에서 JSTL을 이용해 날짜를 찍어 보는 방법을 알아겠습니다.
.java에서 생성해 view로 보내주면 가장 좋겠지만
일회성 페이지나 간단하게 작성할때를 위해
간단하게 작성해보겠습니다.



아래 자바빈을 선언합니다. 
그리거 ID는 now로 지정했습니다.
<jsp:useBean id="now" class="java.util.Date" />

그 다음 해당 날짜 형식 포맷을 지정합니다.
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" var="today" />

vlaue : 포맷을 변경 하고 싶은 값을 입력합니다. 
pattern : 시간 표시 형식을 나타냅니다. y년, m월, d일 h시간, m분, s초
var : 변수를 선업합니다. 해당 선언된 값으로 사욘하게 됩니다. 

해당 값을 사용하는 방법입니다.
<c:out value="${today}"/>


▼ 전체코드를 합해보면 아래처럼 됩니다.
1
2
3
4
<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" var="today" />
오늘 날짜 : <c:out value="${today}"/>
cs

▼웹상에 표시되는 화면입니다. 



마무리


 jstl 쉽고 간편하죠?


댓글을 달아 주세요



Eclipse HTML 수정 즉시 반영 


안녕하세요.
고코더 입니다.



이클립스로 개발 시에
퍼블리싱 페이지를 수정 할 경우가 있습니다.

컴파일 언어라 그런지
간단한 디자인 페이지 수정시에 
즉시 반영되지 않습니다. 

서버를 재시작하거나
새로 고침을 몇번하면 이제야 변경된 페이지를 확인 할 수 있습니다.

그런데 이 버튼을 보셨을 겁니다. 

▼publish to the server (단축키 : Ctrl + Alt + P)



이 버튼을 누르면
현재 수정된 페이지를

바로 확인 할 수 있게 해주는 기능입니다.
서버에 올라간 파일로 파일을 대체 해줍니다.

이클립스로 개발시에 html 수정이 
즉시 반영 되지 않으면 

이 버튼을 눌러 주세요


마무리


이클립스 편리 하네요!


댓글을 달아 주세요

  • peropero502321@gmail.com 2020.01.16 18:10  댓글주소  수정/삭제  댓글쓰기

    진짜 정말로 완전 감사합니다 사는동안 복많이 받으시고 항상 건강하시고 하시는일마다 돈이 따르시기를 빕니다



header referer 정보 


오늘은 referer를 이용해서 이전 URL을 알아 낼 수 있는 방법을 알아보고자 합니다.

▼우선 아무 페이지에서 해당 a태그를 걸어봅시다. 
1
2
3
<a href="이동 URL" >
    header.referer 테스트
</a>
cs

▼ 그리고 웹에서 해당 버튼을 클릭해 자신의 was에 jsp 페이지로 이동시켜 봅시다.



▼ 그리고 JSTL로 header.referer를 referURL 변수에 담아서 화면에 출력해보았습니다.
1
2
<c:set var="referURL" value="${header.referer}" />
이전 페이지 URL은 : ${referURL}
cs

▼ 네 A태그로 타고왔던 이전 페이지가 노출됩니다.


▼이전페이지를 컨트롤 하는 방법은  
보통 URL에 특정 파라미터에 이전 URL을 담아서 그 정보를 보고 
이전 페이지 정보를 얻는 방법으로 개발합니다.

꼭 링크로 타고 온 이전 페이지로 가야 할 이유는 없습니다.
검색 엔진을 타고 게시판 상세글을 본 사용자를 다시 Google로 보내는건 잘못된 방법이기 때문이죠




마무리


잘 안쓰는 추세인거 같습니다.
그래도 꼭 필요한 기능인건 변함 없겠네요







댓글을 달아 주세요



EL 문법을 이용하여 URL 알아내기 


안녕하세요. 고코더입니다.

URL은 현업에서 가장 중요한 정보입니다.
유효성 체크,  접속 분기등 다양한 이유에서 개발을 하기 때문입니다.

그래서 JSP에서 간단한 방법으로 현재 URL을 알아내는 방법을 알아보려고 합니다.

▼ 우선 pageContext 객체를 알아봅시다. 자주 쓰는 객체이므로 외워두면 될거 같습니다.
pageContext : 페이지에 대한 정보
request : 사용자가 요청한 HTTP데이터를 알 수 있는 객체
requestURL : HTTP데이터에서 URL의 정보를 가져온다.
requestURI : HTTP데이터에서 URI의 정보를 가져온다.



▼ 아래 소스를 JSP에서 실행시켜 봅시다.

<%@ page language="java" contentType="text/html; charset=euc-kr" pageEncoding="euc-kr"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<c:set var="URL" value="${pageContext.request.requestURL}" />
JSP에서 현재 URL 가져오기 : ${URL}
<br/>
<c:set var="URI" value="${pageContext.request.requestURI}" />
JSP에서 현재 URI 가져오기 : ${URI}

▼ 웹에서 확인한 모습입니다. 




마무리

상당히 자주 사용하는 부분입니다.




댓글을 달아 주세요