[jsp] java클래스 파일과 연동하는 부분입니다. 에러..
글쓴이: gyxor / 작성시간: 수, 2003/09/10 - 11:51오전
test1.jsp 파일입니다.
<%@ page import="java.io.*" contentType="text/html;charset=euc-kr" %> <form action="test2.jsp" method="post"> <table border="2" width="400"> <td>이름</td> <td> <input type="text" name="name"> </td> <td><center> <input type="submit" value="전송"> </td> </table> </form>
test2.jsp 파일입니다.
<%@ page import="java.io.*" contentType="text/html;charset=euc-kr" %> <jsp:useBean id="test" scope="page" class="js" /> <jsp:setProperty name="test" property="*" /> <html> <%= request.getParameter("name") %>씨 안녕하세요. <jsp:getProperty name="test" property="name" /> 씨 안녕하세요. <%= test.getName() %>
이것은 js.java 파일인데.. javac로 컴파일해서 class로 만들었습니다.
그리고 책에서 본대로 tomcat root폴더에 있는 web-inf\classes 폴더에
저장을 했습니다.
public class js{ private String name; public js(){} public String getName(){ return name; } public void setName(String Na) { name = Na; } }
그런데도..
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: js at org.apache.jasper.compiler.BeanRepository.getBeanType(BeanRepository.java:183) at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:692) at org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:552) at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028) . . .
이런식으로 에러가 납니다. web-inf폴더가 대문자로 되어있어서 그런줄 알고
소문자로 바꿔도 봤습니다.
실제로 책에서는 root폴더가 아닌 examples 폴더에 test파일을 위치시켰고
또 examples/web-inf/classes 폴더에 js.class 파일이 위치하는것으로 되어있어서.. 저또한 그렇게 바꿔보았습니다.
그런데 root폴더가 디폴트 디렉토리로 되어있어서
root 폴더안에..
<% response.sendRedirect("../examples/test.jsp"); %>
이런식으로 넣어서 연결을 시켜보려고 했는데 이마저도 않되는군요..
jsp내용은 매우 간단함에도.. php와는 달리 에러메세지를 보고 무엇이
에러인지 도무지 알수 가 없네요..
localhost:8080 으로 접속했을때의 가상디렉토리의 root는 어디서 바꿔야
되나요? admin으로 로근인 해서 들어가도 가상디렉토리 변경하는곳이 없는데요..
tomcat4.1씁니다. ..
공부하기가 너무 어렵습니다.~
답변부탁드립니다.~~~ T.T
Forums:
버그인지는 몰라도...
js.java 에 package 문을 써서 해보세요.
package test;
public class js
{
....
}
안녕하세요 ^^
원래 그런식의 에러라면 Could not resolve symbol...
원래 그런식의 에러라면 Could not resolve symbol... 같은 에러가 나야 정상인데 무슨 이유에서인지 메시지가 명확하지 않군요. 한번 로그를 열어 전체 스택 트레이스를 보시는 것이 좋을 것 같습니다. 아니면 work 디렉토리 아래 생성된 서블릿 소스를 보시면 보다 정확하게 원인을 분석할 수 있습니다. 최악의 경우 그 서블릿 소스를 직접 컴파일해 보셔도 됩니다.
한번 import안에 Js 클래스를 선언해보는게 좋을 것 같기도 합니다. 참고로 test라는 패키지를 선언한다면 클래스 자체도 /WEB-INF/classes/test/Js.class에 위치해야 하고, 선언도 class="test.Js"가 되어야 합니다.
몇 가지 말씀드리고 싶은 것은, 우선 자바의 컨벤션 상 클래스 이름은 대문자로 시작해야 한다는 것이고 (소문자로 해도 안되지는 않습니다만...) php 등과는 달리 '웹 어플리케이션'이라는 개념이 있다는 점입니다. 따라서 '가상 호스트'를 웹어플리케이션 단위로 줄 수는 있어도 '가상 디렉토리'라는 개념은 존재하지 않습니다. WEB-INF는 대문자가 원칙이고 웹어플리케이션의 설정 파일들이나 라이브러리, 클래스 등등을 담고 있습니다. 경로 등의 설정은 server.xml에서 하시면 됩니다.
JSP/서블릿을 배우는데 '웹 어플리케이션' 개념과 MVC(Model 2)를 이해하는 건 매우 중요합니다. 실무에서도 이 부분이 '허접 코더'와 'J2EE 개발자'를 구분하는 기준이 됩니다 :)
그럼~
----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...
댓글 달기