<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>JSP+JDBC 留言管理程序</title>
</head>
<body>
<center>
<h1>留言管理范例</h1>
<hr>
<br>
<%
// 编码转换
request.setCharacterEncoding("GB2312") ;
if(session.getAttribute("uname")!=null)
{
// 用户已登陆
%>
<%!
String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";//定义数据库驱动
String DBURL = "jdbc:odbc:mldn";//定义数据库地址
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
%>
<%
// 如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示
int i = 0 ;
String sql = null; 
String keyword = request.getParameter("keyword") ;
// out.println(keyword) ;
if(keyword==null)
{
// 没有任何查询条件
sql = "SELECT id,title,author,content FROM note" ;
}
else
{
// 有查询条件
sql = "SELECT id,title,author,content FROM note WHERE title like ? or author like ? or content like ?" ;
}

try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL);
pstmt = conn.prepareStatement(sql) ; // 如果存在查询内容,则需要设置查询条件
if(keyword!=null)
{
// 存在查询条件
pstmt.setString(1,"%"+keyword+"%") ;
pstmt.setString(2,"%"+keyword+"%") ;
pstmt.setString(3,"%"+keyword+"%") ;
} rs = pstmt.executeQuery() ;
%>
<form action="list_notes.jsp" method="POST">
请输入查询内容:<input type="text" name="keyword">
<input type="submit" value="查询">
</form>
</h3><a href="insert.jsp">添加新留言</a></h3>
<table width="80%" border="1">
<tr>
<td>留言ID</td>
<td>标题</td>
<td>作者</td>
<td>内容</td>
<td>删除</td>
</tr>
<%
while(rs.next())
{
i++ ;
// 进行循环打印,打印出所有的内容,以表格形式
// 从数据库中取出内容
int id = rs.getInt(1) ;
String title = rs.getString(2) ;
String author = rs.getString(3) ;
String content = rs.getString(4) ; if(keyword!=null)
{
// 需要将数据返红
title = title.replaceAll(keyword,"<font color=\"red\">"+keyword+"</font>") ;
author = author.replaceAll(keyword,"<font color=\"red\">"+keyword+"</font>") ;
content = content.replaceAll(keyword,"<font color=\"red\">"+keyword+"</font>") ;
}
%>
<tr>
<td><%=id%></td>
<td><a href="update.jsp?id=<%=id%>"><%=title%></a></td>
<td><%=author%></td>
<td><%=content%></td>
<td><a href="delete_do.jsp?id=<%=id%>">删除</a></td>
</tr>
<%
}
// 判断i的值是否改变,如果改变,则表示有内容,反之,无内容
if(i==0)
{
// 进行提示
%>
<tr>
<td colspan="5">没有任何内容!!!</td>
</tr>
<%
}
%>
</table>
<%
rs.close() ;
pstmt.close() ;
conn.close() ;
}
catch(Exception e)
{}
%>
<%
}
else
{
// 用户未登陆,提示用户登陆,并跳转
response.setHeader("refresh","2;URL=login.jsp") ;
%>
您还未登陆,请先登陆!!!<br>
两秒后自动跳转到登陆窗口!!!<br>
如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
<%
}
%>
</center>
</body>
</html>
页面上只显示留言管理范例和下划线,当然,前面的几个页面都正确的

解决方案 »

  1.   

    这是登陆页面
    <%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <head>
    <title>朱雪珂的留言板</title>
    </head>
    <body>
    <h1 style="font-family:Arial, Helvetica, sans-serif; text-align:center; color:#FF00FF">朱雪珂的留言板</h1>
            <hr style="color:#0033FF">
            <br>
           <%
        //判断时候有错误信息,如果有则打印
    //如果没有此段代码,则显示时会直接打印NULL
    if(request.getAttribute("err")!=null)
    {
    %>
             <h2><%=request.getAttribute("err")%></h2>
            <%
    }
       %>
           <form action="login_conf.jsp" method="post">
             <table border="1" width="80%" align="center">
              <tr>
                 <td colspan="2"><div align="center">用户登陆</div></td>
                </tr>
                <tr>
                 <td><div align="center">用户名:</div></td>
                    <td><div align="center">
                      <input type="text" name="id">
                  </div></td>
                </tr>
                 <tr>
                 <td><div align="center">密&nbsp;&nbsp;码:</div></td>
                    <td><div align="center">
                      <input type="password" name="password">
                    </div></td>
                </tr>
                 <tr>
                 <td colspan="2">
                     <div align="center">
                       <input type="submit" value="登陆">
                       <input type="reset" value="重置">                
                     </div></td>
               </tr>
             </table>
           </form>
    </body>
    </html>
      

  2.   

    这是登陆验证
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <html>
    <head>
    <title>朱雪珂的留言板</title>
    </head>
    <body>
    <h1 style="font-family:Arial, Helvetica, sans-serif; text-align:center; color:#FF00FF">朱雪珂的留言板</h1>
            <hr style="color:#0033FF">
            <br>
            <%!
    String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";//定义数据库驱动
    String DBURL = "jdbc:odbc:mldn";//定义数据库地址
    Connection conn = null;
    PreparedStatement pstmt = null;
    String sql = null;
    ResultSet rs = null;

    %>
             <%
     //声明一个boolean,用于保存用户时候合法状态
    boolean flag = false;
      //接受参数
    String id = request.getParameter("id");
    String password = request.getParameter("password");
     %>
            <%
    sql="select name from person where id=? and password=?";
    try
    {
    Class.forName(DBDRIVER);
    conn = DriverManager.getConnection(DBURL);
    pstmt = conn.prepareStatement(sql);
    pstmt.setString(1,id);
    pstmt.setString(2,password);
    rs = pstmt.executeQuery();
    if(rs.next())
    {
    //用户合法
    flag=true;
    //将用户保存到session之中
    session.setAttribute("uname",rs.getString(1));
    }
    else
    {
    //保存错误信息
    request.setAttribute("err","错误的用户名和密码");
    }
    rs.close();
    pstmt.close();
    conn.close();
    }
    catch(Exception e)
    {

    }

    %>
         <%
    if(flag)
    {
    //用户合法
    %>
                <jsp:forward page="login_success.jsp"/>        
            <%
    }
    else
    {
    %>
             <jsp:forward page="login.jsp"/>
            <%
    }
    %>
    </body>
    </html>
      

  3.   

    这是登陆成功页面
    <%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <head>
    <title>朱雪珂的留言板</title>
    </head>
    <body>
    <h1 style="font-family:Arial, Helvetica, sans-serif; text-align:center; color:#FF00FF">朱雪珂的留言板</h1>
            <hr style="color:#0033FF">
            <br>
            <%
    if(session.getAttribute("uname")!=null)
    {
    //用户已经登陆
    %>
             <h2>登陆成功</h2>
                <h2>欢迎<span style="color:#000099; font-size:18px"><%=session.getAttribute("uname")%></span>登陆朱雪珂留言系统</h2>
                <h3><a href="list_notes.jsp">进入留言管理页面</a></h3>
            <%
    }
    else
    {
    //用户未登陆,提示用户登陆,并跳转
    response.setHeader("refresh","2;URL=login.jsp");
    %>
                    您还未登陆,请先登陆!!!<br/>
                    两秒后自动跳转到登陆窗口!!!<br/>
                    如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
                    
                    <%
    }
    %>
    </body>
    </html>
      

  4.   

    汗,用的ODBC连接。而且是J2EE开发的model1,用servlet+JDBC开发不是方便多了么
      

  5.   

    我怎么也找不出错在哪~会不会是我的配置有问题?jdk1.7+tomcat6.08
      

  6.   

    把异常这儿的异常处理去掉或输出异常信息:
    try 

    Class.forName(DBDRIVER); 
    conn = DriverManager.getConnection(DBURL); 
    pstmt = conn.prepareStatement(sql); 
    pstmt.setString(1,id); 
    pstmt.setString(2,password); 
    rs = pstmt.executeQuery(); 
    if(rs.next()) 

    //用户合法 
    flag=true; 
    //将用户保存到session之中 
    session.setAttribute("uname",rs.getString(1)); 

    else 

    //保存错误信息 
    request.setAttribute("err","错误的用户名和密码"); 

    rs.close(); 
    pstmt.close(); 
    conn.close(); 

    catch(Exception e) 
    { } 
    看看异常信息
      

  7.   

    找到异常了~~~
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /copy/list_notes.jsp at line 4845: 
    46:  Class.forName(DBDRIVER) ;
    47:  conn = DriverManager.getConnection(DBURL);
    48:  pstmt = conn.prepareStatement(sql) ;
    49: 
    50:  // 如果存在查询内容,则需要设置查询条件
    51:  if(keyword!=null)
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] FROM 子句语法错误。
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    org.apache.jsp.copy.list_005fnotes_jsp._jspService(list_005fnotes_jsp.java:228)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] FROM 子句语法错误。
    sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    sun.jdbc.odbc.JdbcOdbc.SQLPrepare(Unknown Source)
    sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(Unknown Source)
    sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(Unknown Source)
    org.apache.jsp.copy.list_005fnotes_jsp._jspService(list_005fnotes_jsp.java:108)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
      

  8.   

    感觉我的sql语句并没有写错哦
      

  9.   

    select查询好像没有问题,那换个表名看看