以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  [求助]表单调用servlet,servlet调用jsp,调试通不过!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=93725)


--  作者:dorothyle
--  发布时间:8/7/2011 6:27:00 PM

--  [求助]表单调用servlet,servlet调用jsp,调试通不过!
该工程实现用户登录界面。check.html提供用户输入用户帐号,如果输入错误,则重新输入,如果正确则显示帐户余额。现在的情况是如果帐号不正确,可以链接到指定的页面进行重新输入;如果帐户输入正确,则提示类属性值无效。整个工程包括四个文件:

    1. check.html:表单调用servlet,并将用户输入的accountNo值传递给servlet;

    2. GetAccount:这是一个servlet,接受表单的post请求,如果用户输入的帐号不正确,则调用check.html表单,提示用户重新输入帐号;如果用户输入的帐号正确,则调用showBalance.jsp,显示帐户姓名,以及余额。但这步总是提示:

org.apache.jasper.JasperException: /showBalance.jsp(9,0) The value for the useBean class attribute chapter41.account is invalid.
     3. 类account文件:我将这个类编绎以后的类文件放在Tomcat 6.0\webapps\root\WEB-INF\classes\文件夹下,将GetAccount的类文件也放置在上述目录下。
    如果大家谁有时间,谁有条件,能否在自己的机器上配置一下,帮我看一下是哪里的问题?万分感谢!
check.html源代码:
<html>
 <head><title>JSP+Servlet+JavaBean实例</title></head>
  <h2>帐户查询</h2>
  <h3>请输入帐户编号</h3>      
  <body>
    <form action="servlet/chapter41.GetAccount" method="POST">
        帐户编号:<input type="text" name="accountNo" size="20" maxlength="20"><br><br>      
             <input type="submit" name="submit" value="查询">
    </form>
  </body>
</html>

GetAccount源代码:
package chapter41;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetAccount extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  String accountNum = (String)request.getParameter("accountNo");

      /*模拟数据库,通过姓名查找帐户信息对象*/
      account oneAccount = (account)account.getAccountInfo(accountNum);
      
      if (oneAccount == null){
         /*如果找不到相应帐户信息,则创建该帐户信息*/
         /*没有输入帐户号或帐号在数据库中不存在,则转入初始页面*/
        response.sendRedirect("../check.html");
        return;
      }
      
      /*把客户信息放在request请求对象中*/
      request.setAttribute("account",oneAccount);
      
      /*显示客户信息的jsp*/
      response.sendRedirect("../showBalance.jsp");

 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  this.doGet(request, response);
 }
}
account类文件:
package chapter41;
import java.util.*;

public class account{
    protected String accountNum="";
    protected String name="";
    protected double balance=0;

    /*构造函数*/
    public account(String accountNum, String name, double balance){
         this.accountNum = accountNum;
         this.name = name;
         this.balance = balance;
    }
    
    /*模拟数据库建立几个帐户信息对象以供查找*/
   protected static account firstAccount=new account("1110812006","dorothyle",3000.0);
   protected static account secAccount=new account("86477456239","Michael",5000000.0);
   protected static account trdAccount=new account("48961856232","John",66800.0);       
   
    /*通过帐号查找客户余额等信息*/
    public static account getAccountInfo(String accountNum){
       if (accountNum == null||accountNum.equals("")){
           return null; 
       }else if (firstAccount.getAccountNum().equals(accountNum)){
              return firstAccount;
       }else if (secAccount.getAccountNum().equals(accountNum)){
              return secAccount;
       }else if (trdAccount.getAccountNum().equals(accountNum)){
              return trdAccount;
       }else{
              return null; 
       }         
    }
    /*get() 方法*/
    public String getAccountNum(){
      return accountNum; 
    }
    
    public String getName(){
     return name;
    }
    
    public double getBalance(){
     return balance;
    }
}
showBalance.jsp源代码:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<HEAD>
  <title>JSP+Servlet+JavaBean实例</title>
</HEAD>
   <H2>帐户信息显示</H2>
<BODY>

<jsp:useBean id="account" scope="request" class="chapter41.account" />
<H3>欢迎您,<jsp:getProperty name="account" property="name" /> </H3>
<H4> 下面是您帐户的最新信息:</H4>
    帐户编号:<jsp:getProperty name="account" property="accountNum"/>
  <BR>帐户余额:<jsp:getProperty name="account" property="balance"/>
</BODY>
</HTML>

web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>GetAccount</servlet-name>
    <servlet-class>chapter41.GetAccount</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>GetAccount</servlet-name>
    <url-pattern>/servlet/GetAccount</url-pattern>
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>



--  作者:dorothyle
--  发布时间:8/7/2011 8:37:00 PM

--  
大家帮忙给看看吧,书中后面的许多例子都需要用到servlet调用javaBean的,否则有点难往下走啊
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms