[JSP] 자바빈즈 사용 문제 입니다 ㅡ,ㅡ
마음새
책을 보면서 예제를 따라하고 있는데..
전혀 안됩니다.ㅡ,.ㅜ
다음과 같은 에러가 납니다.
HTTP Status 500 - type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception org.apache.jasper.JasperException: /helloBean.jsp(3,0) The value for the useBean class attribute hello.HelloBean is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1227)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3272)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
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.28 logs.
여기 저기 알아보니까 .class 파일을 못찾아서 생긴 에러라고 하더군요..
WEB-INF/classes/* 안에 .class 파일 넣었구요..
구체적인 소스를 올립니다.
helloBean.jsp 파일
%@ page language=java import=hello.HelloBean%
jsp:useBean id=mybean class=hello.HelloBean scope=page /HTML
HEAD
TITLE New Document /TITLE
/HEAD
BODY
%= mybean.getName() %
/BODY
/HTMLHelloBean.java 파일
package hello;
public class HelloBean
{
private String name = HelloWorld!!!;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
javac -d . HelloBean.java 해서
hello 디렉토리 모두를
WEB-INF/classes/hello/HelloBean.class 를 넣었습니다.
제 생각으로는...
제가 root 경로를 바꿨습니다. 즉
톰캣 설치시.. 기본 경로가 아닌 수정을 통해서 다른 경로로 홈디렉토리를 정하게 되었는데요..
이것 때문에 .class 파일을 못찾는게 아닐까 싶습니다.
도움 부탁드립니다.
ps. jsp는 정말이지 설치부터해서.. 너무 힘든거 같네요 ㅜㅜ
-
참
클래스 파일 수정후 reload 했을때 수정후 내용이 적용이 안되더라구요 이리저리 해보니까 path=\/\ 이렇게 되어 있던걸 path=\\ 이렇게 바꾸니까 수정후 내용이 적용이 되더라구요.. \/\했을때는 아예 톰캣을 재시작해야 했고.. 없을때는 그냥 익스플로러에서 리로드하니까 적용이 되네요.. ^^ 혹시 이것의 차이는?? 질문이 끝이 없는거 같네요.. 죄송합니다. ㅎㅎ 그리고 답변 감사드리요..
-
분홍색진주
음 저도 대략적으로 아는 부분이라서 맞는지는 모르겠습니다. 제가 아는 대로 설명을 드리자면요
웹컨테이너에게 내가 만든 웹서비스의 위치를 알려주어야 합니다.. 그게 위에 쓴부분이고요.
그리고 해당 웹서비스에 들어있는 web.xml은 해당 웹서비스에 관련된 설정들입니다.
( 웹서비스라고 하면 맞는 말인지는 잘 모르겠네요... ) -
내담
gamiwar 님 저거 수정하니까 되네요.. 감사합니다~!!! 근데 server.xml 되도록이면 수정안한다던데.. 각 경로에 있는 web.xml 이랑 어떤 차이죠?
-
연하늘
해보니깐 되는데요.. 아무래도.. 님이 말하신것처럼 경로가 잘못 된듯 싶네요..
톰켓이면.. server.xml 이걸 수정해줘야 하는데요.. ( 이건 아마도 톰켓\\conf? 에 있을겁니다)
\t젤 마지막줄근처에 /Host 바루위에 추가하기
\tContext path=\\ docBase=\\ /
\tpath : \\ 안에 아무것도 안넣으면 현재 디렉토리를 의미(URL에 넣을 패스이름)
\tdocBase : 실제 파일경로
이부분을 하셨는지.. 음. 하