이게 무엇인 아시는분?
모델1방식의 게시판을 만드는소스의
게시물 리스트에서 제목에 해당하는 한줄 소스다.
차라리 board.getSeq() 의 값을 변수에 넣어놓고 글번호에도 쓰고 저기도 쓰고 하면 좋을것 같은데..
자바를 배웠다가 다시 php를 배웠다가 다시 자바를 공부하는 중에 느끼는게
jsp 예제들 대부분 jsp 페이지 내에서 테이블의 요소요소 들의 크기를 페이지 내에서 정의한다
그것도 딱 100 150 100 200 이런식으로
css파일을 만들고 적용하는것까지 하면 좋을것같은데 그럼 분량이 어마어마해지려나
아니면 관련 css파일은 따로 업로드 해두었으니 적용하시는게 좋을거요 라고 협박을 하는것도 좋을것같은데 ㅎㅎ
근데 저 소스를 다시봐도 어지럽다 저런소스를 '잘못된부분이 있으니 유지보수 하시오 '
이런 미션이 떨어지면 정말 난감할듯 ㅋㅋ
그런데 정말 일어났습니다.
java.lang.NumberFormatException: For input string: " 24"
자세히보면 24 앞에 공백문자가 하나 들어가 있습니다.
변경전
<a href="getBoard.jsp?seq= <%=board.getSeq() %>"><%=board.getTitle() %></a></td
변경후
<a href="getBoard.jsp?seq=<%=board.getSeq()%>"><%=board.getTitle()%></a>
파라미터에 공백문자 스페이스 하나가 들어가 있어서
vo.setSeq(Integer.parseInt(seq)); 라인의
java.lang.NumberFormatException: For input string: " 24" 예외가 계속 발생합니다
널과 관련될 경우가 크다고 합니다. 제경우엔 파라미터에 공백이 섞여 들어가서 발생했습니다.
참고로 위의 파라미터의 공백은 trim()으로도 제거안되며
str.replaceAll(
"(^\\p{Z}+|\\p{Z}+$)"
,
""
);
으로도 제거 안됩니다.그냥 파라미터에 공백이 들어가지 않게 만전을 기하십시오
3일차 약간 쉬엄쉬엄했지만 모델2 페이지 284까지 읽고 실습했다.
하루하루 따라가는 기분이 좋다. 이책의 장점은 하루 읽고 실습하는양이 정해져있어
농땡이 피우기가 힘들다
만족
public class HandlerMapping {
private Map<String, Controller> mappings;
public HandlerMapping(){
mappings = new HashMap<String, Controller>();
mappings.put("/login.do", new LoginController());
}
여기 mappings라는 변수는 맵으로 선언되어있는데
해쉬맵을 생성해서 mappings라는 변수에 넣으려하니까
type mismatch라고 에러가난다. 형변환을 해주든지 아니면 선언을 해쉬맵으로 하라고 이클립스는 해결방법을 제시한다.
일단 형변환으로 해본다.
해결)
import java.util.Map
import java.util.hashMap
임포트를 안해서 발생한 오류
페이지 310
javax.el.PropertyNotFoundException: Property 'seq' not found on type java.lang.String
org.apache.jasper.JasperException: An exception occurred processing JSP page /getBoardList.jsp at line 48 45: 46: <c:forEach items="${boardList} " var="board"> 47: <tr> 48: <td>${board.seq }</td> 49: <td align="left"> <a href="getBoard.do?seq=${board.seq }">${board.title}</a></td> 50: <td>${board.writer }</td> 51: <td>${board.regDate }</td>
48번라인의 board.seq를 자바.랭.스트링 에서 찾을수 없다 라고 말한다.
해결)
문제는 상단에
<c:forEach items="${boardList} " var="board"> 여기 있다.
boardList} 공백 "
공백이 제일 무섭다. 공백이 척결대상 1호다.
321페이지
메시지확인
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'action': initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'action-servlet': startup date [Thu Aug 11 15:32:03 KST 2016]; root of context hierarchy
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/config/presentation-layer.xml]
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'action': initialization completed in 216 ms
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/BoardWeb/login.do] in DispatcherServlet with name 'action'
이전에 DispatcherServlet을 직접 구현하여 사용했을때와
스프링 프레임워크의 mvc 의 DispatcherServlet을 사용하기위해 세팅을 한것을 비교
DispatcherServlet은 클라이언트의 요청처리에필요한 HandlerMapping, Controller, viewResolver객체들을 생성하기위해 스프링 컨테이너
XMLWebApplicationContext컨테이너를 구동한다.
상기한 3개의 객체들을 생성하기위해 스프링 컨테이너를 구동하는데 세팅을
WEB-INF/config/presentation-layer.xml에 넣어놓고 서버를 재시작 후에 로그인하면
위의 메시지 스프링 설정파일이 로딩된것을 확인할수있다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<filter>
<filter-name>characterEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC-KR</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/presentation-layer.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
인코딩 필터 *.do로 들어오는것은 다 euc-kr로 한글 인코딩 처리가 자동으로 된다
325페이지에서 com.springbook.view.controller 패키지를 삭제하라는데
왜이렇게 힘드냐
책보고 배낀 소스라할지라도 이렇게 손이 떨리는데 내가 직접만든 소스 백업도 안하고
그냥 삭제하라고하면 못할거같다.
댓글 없음:
댓글 쓰기