[jsp] java클래스 파일과 연동하는 부분입니다. 에러..

gyxor의 이미지

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
JCastle의 이미지

js.java 에 package 문을 써서 해보세요.

package test;

public class js
{

....

}

안녕하세요 ^^

fender의 이미지

원래 그런식의 에러라면 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, 위키, 갤러리 등등...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.