我想实现JSP一个页面内传递参数,页面分为上部分与下部分;
 下部分是A,B,C,D实物的小图,比如,当点A时,上部分会从ACCESS数据库中调用出A的详细信息(A,B,C小图也是由ACCESS中调用出来的,运行决报错,请多多指教。。程序如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<link href="16.css" rel="stylesheet" type="text/css" />
</head><body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //载入驱动程序类别
Connection con = DriverManager.getConnection("jdbc:odbc:jspdata"); //建立数据库链接,jspdata为ODBC数据源名称
//建立Statement对象
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("select * from watch"); //建立ResultSet(结果集)对象,并执行SQL语句
%>
<div id="container">
<div id="left">
<div id="logo"></div>
<div id="nav">
<div id="menu">
<ul>
<li><a href="#"><span class="a">Home</span></a></li>
<li><a href="#"><span class="a">Message grom CEO</span></a></li>
<li><a href="#"><span class="a">Background</span></a></li>
<li><a href="#"><span class="a">Brands</span></a></li>
<li><a href="#"><span class="a">Watch making &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expertise</span></a></li>
<li><a href="#"><span class="a">Values</span></a></li>
<li><a href="#"><span class="a">Store</span></a></li>
<li><a href="#"><span class="a">Contact</span></a></li>
</ul>
</div></div>
</div>
<div id="right">
<div id="right_top">
<div id="watch_logo"><img src="images/TRDC_new-logo-small.gif" width="316" height="65" /></div>
<%
 String picId ="";
 if(request.getParameters("nid") !=null)
 {
  picId = request.getParameters("nid"); 
 }
 
%> 
<div id="watch" ><img src="images/Fuego-orange21888-10-big.gif" width="109" height="250" /></div>
<div id="text">
  <p>Model No :<br />
   Size:<br />
   Case:<br />
   Dial:<br />
  Strap:<br />
   Movement:<br />
  </p>
  </div>
</div>
<div id="right_bottom">
<div id="line1"></div>
<div id="watch_list">
<%
while(rs.next())

%>
<a href="16.jsp?nid=<%= rs.getString("id") %>" ><img src="<%= rs.getString("small-img") %>"  width="44"  height="100" border="0" /></a>&nbsp;&nbsp;&nbsp;&nbsp;
<% 
}rs.close();
stmt.close(); 
con.close(); 
%></div>
<div id="line2"></div>
</div>
</div>
</div>
</div>
</body>
</html>

解决方案 »

  1.   

    org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 44 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:90: ';' expected
      picId = request.getParameters("nid") 
                                          ^
    An error occurred at line: 44 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:89: cannot resolve symbol
    symbol  : method getParameters (java.lang.String)
    location: interface javax.servlet.http.HttpServletRequest
     if(request.getParameters("nid")!=null){
               ^
    An error occurred at line: 44 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:90: cannot resolve symbol
    symbol  : method getParameters (java.lang.String)
    location: interface javax.servlet.http.HttpServletRequest
      picId = request.getParameters("nid") 
                     ^
    3 errors
      

  2.   

    错误在 16.jsp 这个文件里
      

  3.   

    picId = request.getParameters("nid") 中的参数只能是String类的,你是不是传个INT进去了
      

  4.   

    谢谢大家,那个问题解决了,但数据库方面出现了新的问题
    <%
     String picId ="";
     if(request.getParameter("nid")!=null){
      picId = request.getParameter("nid"); 
     }
     
     %>
     <%
    Objece object = connection.executeQuery("select * from watch where id = picId"); %>报错:
    org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 51 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:98: cannot resolve symbol
    symbol  : class Objece 
    location: class org.apache.jsp.web2._16_jsp
    Objece object = connection.executeQuery("select * from watch where id = picId");
    ^
    An error occurred at line: 51 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:98: cannot resolve symbol
    symbol  : variable connection 
    location: class org.apache.jsp.web2._16_jsp
    Objece object = connection.executeQuery("select * from watch where id = picId");
                    ^
    2 errors
      

  5.   

    "select * from watch where id = " + picId
      

  6.   

    org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 45 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:95: cannot resolve symbol
    symbol  : class Objece 
    location: class org.apache.jsp.web2._16_jsp
    Objece object = connection.executeQuery("select * from table where id = " +picId); 
    ^
    An error occurred at line: 45 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:95: cannot resolve symbol
    symbol  : variable connection 
    location: class org.apache.jsp.web2._16_jsp
    Objece object = connection.executeQuery("select * from table where id = " +picId); 
                    ^
    2 errors
      

  7.   

    <body>
    <%
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //载入驱动程序类别
    Connection con = DriverManager.getConnection("jdbc:odbc:jspdata"); //建立数据库链接,jspdata为ODBC数据源名称
    //建立Statement对象
    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_READ_ONLY);%>
    <div id="container">
    <div id="left">
    <div id="logo"></div>
    <div id="nav">
    <div id="menu">
    <ul>
    <li><a href="#"><span class="a">Home</span></a></li>
    <li><a href="#"><span class="a">Message grom CEO</span></a></li>
    <li><a href="#"><span class="a">Background</span></a></li>
    <li><a href="#"><span class="a">Brands</span></a></li>
    <li><a href="#"><span class="a">Watch making &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expertise</span></a></li>
    <li><a href="#"><span class="a">Values</span></a></li>
    <li><a href="#"><span class="a">Store</span></a></li>
    <li><a href="#"><span class="a">Contact</span></a></li>
    </ul>
    </div></div>
    </div>
    <div id="right">
    <div id="right_top">
    <div id="watch_logo"><img src="images/TRDC_new-logo-small.gif" width="316" height="65" /></div>
    <%
     String picId ="";
     if(request.getParameter("nid")!=null){
      picId = request.getParameter("nid"); 
     }
     
     
    ResultSet tt = stmt.executeQuery("select * from watch where id ="+picId); 
    tt.close();
     
     %>
    <div id="watch" ><img src="images/Fuego-orange21888-10-big.gif" width="109" height="250" /></div>
    <div id="text">
      <p>Model No :<br />
       Size:<br />
       Case:<br />
       Dial:<br />
      Strap:<br />
       Movement:<br />
      </p>
      </div>
    </div>
    <div id="right_bottom">
    <div id="line1"></div>
    <div id="watch_list"><%
    ResultSet rs = stmt.executeQuery("select * from watch"); //建立ResultSet(结果集)对象,并执行SQL语句
    while(rs.next())

    %>
    <a href="16.jsp?nid=<%= rs.getString("id") %>" ><img src="<%= rs.getString("small-img") %>"  width="44"  height="100" border="0" /></a>&nbsp;&nbsp;&nbsp;&nbsp;
    <% 
    }rs.close();
    stmt.close(); 
    con.close(); 
    %></div>
    <div id="line2"></div>
    </div>
    </div>
    </div>
    </div>
    </body>报错:
    message description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'id =' 中。
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.web2._16_jsp._jspService(_16_jsp.java:154)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    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)
    root cause java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'id =' 中。
    sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
    sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
    sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3065)
    sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    org.apache.jsp.web2._16_jsp._jspService(_16_jsp.java:95)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    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.
      

  8.   

    你数据库里  , sql语句的 " id="是关键字,换一个别的名字在式一式
      

  9.   

    换了还是不行哦,
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'wid =' 中。
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.web2._16_jsp._jspService(_16_jsp.java:154)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    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)
    root cause java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'wid =' 中。
    sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
    sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
    sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3065)
    sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    org.apache.jsp.web2._16_jsp._jspService(_16_jsp.java:95)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    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.
      

  10.   

    你的 "wid="是数据库里是int 还是varchar,
    要是varchar , sql语句是("select * from watch where wid ='"+picId+"'"); 
    要是int ,  把 picId 转成int类行
     
      

  11.   

    改了:
    <%
     int picId =0;
     if(request.Parameter(nid)!=null){
      picId = request.Parameter(nid); 
     }
     
     
    ResultSet tt = stmt.executeQuery("select * from table where id = " +picId); 还不行,
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 45 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:90: cannot resolve symbol
    symbol  : variable nid 
    location: class org.apache.jsp.web2._16_jsp
     if(request.Parameter(nid)!=null){
                          ^
    An error occurred at line: 45 in the jsp file: /web2/16.jsp
    Generated servlet error:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\web2\_16_jsp.java:91: cannot resolve symbol
    symbol  : variable nid 
    location: class org.apache.jsp.web2._16_jsp
      picId = request.Parameter(nid); 
                                ^
    2 errors
     
     %>
      

  12.   

    byp_002() ( ) 信誉:100    Blog  2007-02-08 12:40:53  得分: 0  
     
     
       你的 "wid="是数据库里是int 还是varchar,
    要是varchar , sql语句是("select * from watch where wid ='"+picId+"'"); 
    要是int ,  --- 
    单引号加了吗?
      另:
    symbol  : variable nid 
    nid未定义
     
      

  13.   

    靠,你这是从那里搞来的垃圾代码,这么多拼写错误。
    Objece object
    这里应该是Object
    Object object = connection.executeQuery("select * from watch where id = picId");
    应该改为
    Object object = stmt.executeQuery("select * from watch where id = picId");
    又或者你在输入代码时心里面在想着晚上该用什么招式和MM过招。