它到底告诉我????(JSP调试) 怎么学习jsp,能不能告诉我流程和节进啊~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是耿祥议的书中第7章P248“网络交友”例子, COPY下来验证JAVABEEN ,联调通不过,拿出来单独调原码下载http://www.tupwq.net/download.htm 找到《JSP 实用教程》点击即可下载JSP原码:========<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><%@ page import="tom.jiafei.Login" %><%@ page import="tom.jiafei.PageNumber" %><%@ page import="java.io.*" %><jsp:useBean id="handlePage" class="tom.jiafei.PageNumber" scope="session" ></jsp:useBean><jsp:useBean id="login" class="tom.jiafei.Login" scope="session" ></jsp:useBean><% //如果客户直接进入该页面将被转向登录页面。 if(session.isNew()) {response.sendRedirect("login.jsp"); } //如果没有成功登录将被转向登录页面 String success=login.getSuccess(); if(success==null) {success=""; } if(!(success.equals("ok"))) {response.sendRedirect("login.jsp"); }%><HTML><BODY ><Font size=1><%@ include file="head.txt" %><P> 会员列表: <%! //声明一个共享的连接对象: Connection con=null; //显示数据库记录的方法: public void showList(ResultSet rs,javax.servlet.jsp.JspWriter out,int n,String find) {try { out.print("<Table Border>"); out.print("<TR>"); out.print("<TH width=50>"+"<Font size=1>"+"会员名"+"</FONT>"); out.print("<TH width=70>"+"<Font size=1>"+"性别"+"</FONT>"); out.print("<TH width=70>"+"<Font size=1>"+"email"+"</FONT>"); out.print("<TH width=70>"+"<Font size=1>"+"浏览详细信息"+"</FONT>"); out.print("</TR>"); for(int i=1;i<=n;i++) { String logname=rs.getString("logname"); String email=rs.getString("email"); out.print("<TR>"); out.print("<TD >"+logname+"</TD>"); out.print("<TD >"+rs.getString("sex")+"</TD>"); out.print("<TD >"+email+"</TD>"); //在每个会员的后面显示一个表单,该表单将内容提交到find.jsp, //以便查看该会员的详细信息: String s1="<Form action="+find+" method=get>"; String s2="<input type=hidden name=logname value="+logname+">"; String s3="<input type=submit value=详细信息></FORM> "; String s=s1+s2+s3; out.print("<TD >"+s+"</TD>"); out.print("</TR>") ; rs.next(); } out.print("</Table>"); } catch(Exception e1) {} } %> <% Statement sql=null; ResultSet rs=null; int rowCount=0; //总的记录数。 String logname=""; //第一个客户负责建立连接对象: if(con==null) { try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e) {out.print(e); } try {con=DriverManager.getConnection("jdbc:odbc:friend","",""); sql= con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。 rs.last(); //将游标移动到最后一行。 int number=rs.getRow();//获取最后一行的行号。 rowCount=number; //获取记录数。 handlePage.setPageSize(3); //设置每页显示的记录数。 handlePage.setShowPage(1); //设置欲显示的页码数。 handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。 out.print("共有"+handlePage.getPageCount()+"页,"); out.print("每页显示"+ handlePage.getPageSize()+"条记录"); } catch(SQLException e) {out.print(e); } } //其它客户通过同步块使用这个连接: else { synchronized(con) { try { sql= con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。 rs.last(); //将游标移动到最后一行。 int number=rs.getRow(); //获取最后一行的行号。 rowCount=number; //获取记录数。 handlePage.setPageSize(3); //设置每页显示的记录数。 handlePage.setShowPage(1); //设置欲显示的页码数。 handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。 out.print("共有"+handlePage.getPageCount()+"页,"); out.print("每页显示"+ handlePage.getPageSize()+"条记录"); } catch(SQLException e) {out.print(e); } } } %> <%--选择显示某页的表单 --%><%String str=response.encodeURL("showMember.jsp"); String find=response.encodeURL("find.jsp");%> <Form action="<%=str%>" method="post" > 输入欲要显示的页<Input type="text" name="ok" value="1"> <Input type="submit" value="submit"> </FORM> <% //获取表单提交的信息: String s=request.getParameter("ok"); if(s==null) {s="1"; } int m=Integer.parseInt(s); handlePage.setShowPage(m); out.print("目前显示第"+handlePage.getShowPage()+"页"); int n=handlePage.getShowPage(); //将游标移到: rs.absolute((n-1)*handlePage.getPageSize()+1); showList(rs,out,handlePage.getPageSize(),find); //显示该页的内容。 %></FONt></BODY></HTML> BEEN原码:Login.java :============package tom.jiafei;import java.sql.*;public class Login{ String logname, password, success="false", message=""; //用来返回登录是否成功的消息。 Connection con; Statement sql; ResultSet rs; public Login() { //加载桥接器: try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){} } //设置属性值、获取属性值的方法: public void setLogname(String name) { logname=name; } public String getLogname() {return logname; } public void setPassword(String pw) { password=pw; } public String getPassword() {return password; } public String getSuccess() {return success; } //查询数据库的member表: public String getMessage() {try{ con=DriverManager.getConnection("jdbc:odbc:friend","",""); sql=con.createStatement(); String condition= "SELECT * FROM member WHERE logname = "+"'"+logname+"'"; rs=sql.executeQuery(condition); int rowcount=0; String ps=null; while(rs.next()) { rowcount++; logname=rs.getString("logname"); ps=rs.getString("password"); } if((rowcount==1)&&(password.equals(ps))) { message="ok"; success="ok"; } else {message="输入的用户名或密码不正确"; success="false"; } con.close(); return message; } catch(SQLException e) { message="输入的用户名或密码不正确"; success="false"; return message; } }}===========PagaNumber.java :package tom.jiafei;public class PageNumber{ int rowCount=1, //总的记录数。 pageSize=1, //每页显示的记录数。 showPage=1, //设置欲显示的页码数。 pageCount=1; //分页之后的总页数。 public void setRowCount(int n) { rowCount=n; } public int getRowCount() { return rowCount; } public void setPageCount(int r,int p) { rowCount=r; pageSize=p; int n=(rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1) ; pageCount=n; } public int getPageCount() {return pageCount; } public void setShowPage(int n) {showPage=n; } public int getShowPage() { return showPage; } public void setPageSize(int n) { pageSize=n; } public int getPageSize() { return pageSize; }}===========HandleMessage.java :package tom.jiafei;import java.io.*;public class HandleMessage{ String content=null; public void setContent(String s) {content=s; } //获取属性content的值,为了能显示HTML或JSP源文件,需进行流的处理技术: public String getContent() { try{ StringReader in=new StringReader(content) ;//指向字符串的字符流。 PushbackReader push=new PushbackReader(in); StringBuffer stringbuffer=new StringBuffer(); int c; char b[]=new char[1]; while ( (c=push.read(b,0,1))!=-1)//读取1个字符放入字符数组b。 { String s=new String(b); if(s.equals("<")) //回压的条件 { push.unread('&'); push.read(b,0,1); //push读出被回压的字符字节,放入数组b. stringbuffer.append(new String(b)); push.unread('L'); push.read(b,0,1); //push读出被回压的字符字节,放入数组b. stringbuffer.append(new String(b)); push.unread('T'); push.read(b,0,1); //push读出被回压的字符字节,放入数组b. stringbuffer.append(new String(b)); } else if(s.equals(">")) //回压的条件 { push.unread('&'); push.read(b,0,1); //push读出被回压的字符字节,放入数组b. stringbuffer.append(new String(b)); push.unread('G'); push.read(b,0,1); //push读出被回压的字符字节,放入数组b. stringbuffer.append(new String(b)); push.unread('T'); push.read(b,0,1); //push读出被回压的字符字节,放入数组b. stringbuffer.append(new String(b)); } else if(s.equals("\n")) { stringbuffer.append("<BR>"); } else { stringbuffer.append(s); } } push.close(); in.close(); return content=new String(stringbuffer); } catch(IOException e) {return content=new String("不能读取内容"); } }} 谢谢大家这么热心!!!!上面的 JSP原码: ======== 处 应为ShowMember.jsp原码: 如何把一个CLASS编译文件打包成ActiveX控件 谁帮我看下这个网址(表单提交的问题) 关于tomcat数据库连接池重连的问题 求教:javabean与access数据库连接方法 帖子去哪了????????????? vista如何配置jdk 有关servlet中的web.xml的配置问题. 关于编写Servlet的初级问题 JDBC,TOMCAT,SQL2000的连接配置问题 在线等!!!!!! ajax 总是success,修改url也没用 求教:jsp的传参语名书写问题? update table set pa='123' where pb='456'数据库为什么不报错?
原码下载http://www.tupwq.net/download.htm 找到《JSP 实用教程》点击即可下载
JSP原码:
========
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="tom.jiafei.Login" %>
<%@ page import="tom.jiafei.PageNumber" %>
<%@ page import="java.io.*" %>
<jsp:useBean id="handlePage" class="tom.jiafei.PageNumber" scope="session" >
</jsp:useBean>
<jsp:useBean id="login" class="tom.jiafei.Login" scope="session" >
</jsp:useBean>
<% //如果客户直接进入该页面将被转向登录页面。
if(session.isNew())
{response.sendRedirect("login.jsp");
}
//如果没有成功登录将被转向登录页面
String success=login.getSuccess();
if(success==null)
{success="";
}
if(!(success.equals("ok")))
{response.sendRedirect("login.jsp");
}
%>
<HTML>
<BODY ><Font size=1>
<%@ include file="head.txt" %>
<P> 会员列表:
<%! //声明一个共享的连接对象:
Connection con=null;
//显示数据库记录的方法:
public void showList(ResultSet rs,javax.servlet.jsp.JspWriter out,int n,String find)
{try
{
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=50>"+"<Font size=1>"+"会员名"+"</FONT>");
out.print("<TH width=70>"+"<Font size=1>"+"性别"+"</FONT>");
out.print("<TH width=70>"+"<Font size=1>"+"email"+"</FONT>");
out.print("<TH width=70>"+"<Font size=1>"+"浏览详细信息"+"</FONT>");
out.print("</TR>");
for(int i=1;i<=n;i++)
{
String logname=rs.getString("logname");
String email=rs.getString("email");
out.print("<TR>");
out.print("<TD >"+logname+"</TD>");
out.print("<TD >"+rs.getString("sex")+"</TD>");
out.print("<TD >"+email+"</TD>");
//在每个会员的后面显示一个表单,该表单将内容提交到find.jsp,
//以便查看该会员的详细信息:
String s1="<Form action="+find+" method=get>";
String s2="<input type=hidden name=logname value="+logname+">";
String s3="<input type=submit value=详细信息></FORM> ";
String s=s1+s2+s3;
out.print("<TD >"+s+"</TD>");
out.print("</TR>") ;
rs.next();
}
out.print("</Table>");
}
catch(Exception e1) {}
}
%>
<%
Statement sql=null;
ResultSet rs=null;
int rowCount=0; //总的记录数。
String logname="";
//第一个客户负责建立连接对象:
if(con==null)
{ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{out.print(e);
}
try
{con=DriverManager.getConnection("jdbc:odbc:friend","","");
sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。
rs.last(); //将游标移动到最后一行。
int number=rs.getRow();//获取最后一行的行号。
rowCount=number; //获取记录数。
handlePage.setPageSize(3); //设置每页显示的记录数。
handlePage.setShowPage(1); //设置欲显示的页码数。
handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。
out.print("共有"+handlePage.getPageCount()+"页,");
out.print("每页显示"+ handlePage.getPageSize()+"条记录");
}
catch(SQLException e)
{out.print(e);
}
}
//其它客户通过同步块使用这个连接:
else
{ synchronized(con)
{ try { sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。
rs.last(); //将游标移动到最后一行。
int number=rs.getRow(); //获取最后一行的行号。
rowCount=number; //获取记录数。
handlePage.setPageSize(3); //设置每页显示的记录数。
handlePage.setShowPage(1); //设置欲显示的页码数。
handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。
out.print("共有"+handlePage.getPageCount()+"页,");
out.print("每页显示"+ handlePage.getPageSize()+"条记录");
}
catch(SQLException e)
{out.print(e);
}
}
}
%>
<%--选择显示某页的表单 --%>
<%String str=response.encodeURL("showMember.jsp");
String find=response.encodeURL("find.jsp");
%>
<Form action="<%=str%>" method="post" >
输入欲要显示的页<Input type="text" name="ok" value="1">
<Input type="submit" value="submit">
</FORM>
<% //获取表单提交的信息:
String s=request.getParameter("ok");
if(s==null)
{s="1";
}
int m=Integer.parseInt(s);
handlePage.setShowPage(m);
out.print("目前显示第"+handlePage.getShowPage()+"页");
int n=handlePage.getShowPage();
//将游标移到:
rs.absolute((n-1)*handlePage.getPageSize()+1);
showList(rs,out,handlePage.getPageSize(),find); //显示该页的内容。
%>
</FONt>
</BODY>
</HTML>
Login.java :
============
package tom.jiafei;
import java.sql.*;
public class Login
{ String logname,
password,
success="false",
message=""; //用来返回登录是否成功的消息。
Connection con;
Statement sql;
ResultSet rs;
public Login()
{ //加载桥接器:
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
}
//设置属性值、获取属性值的方法:
public void setLogname(String name)
{ logname=name;
}
public String getLogname()
{return logname;
}
public void setPassword(String pw)
{ password=pw;
}
public String getPassword()
{return password;
}
public String getSuccess()
{return success;
}
//查询数据库的member表:
public String getMessage()
{try{
con=DriverManager.getConnection("jdbc:odbc:friend","","");
sql=con.createStatement();
String condition=
"SELECT * FROM member WHERE logname = "+"'"+logname+"'";
rs=sql.executeQuery(condition);
int rowcount=0;
String ps=null;
while(rs.next())
{ rowcount++;
logname=rs.getString("logname");
ps=rs.getString("password");
}
if((rowcount==1)&&(password.equals(ps)))
{ message="ok";
success="ok";
}
else
{message="输入的用户名或密码不正确";
success="false";
}
con.close();
return message;
}
catch(SQLException e)
{ message="输入的用户名或密码不正确";
success="false";
return message;
}
}
}
===========
PagaNumber.java :
package tom.jiafei;
public class PageNumber
{ int rowCount=1, //总的记录数。
pageSize=1, //每页显示的记录数。
showPage=1, //设置欲显示的页码数。
pageCount=1; //分页之后的总页数。
public void setRowCount(int n)
{ rowCount=n;
}
public int getRowCount()
{ return rowCount;
}
public void setPageCount(int r,int p)
{ rowCount=r;
pageSize=p;
int n=(rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1) ;
pageCount=n;
}
public int getPageCount()
{return pageCount;
}
public void setShowPage(int n)
{showPage=n;
}
public int getShowPage()
{ return showPage;
}
public void setPageSize(int n)
{ pageSize=n;
}
public int getPageSize()
{ return pageSize;
}
}
===========
HandleMessage.java :
package tom.jiafei;
import java.io.*;
public class HandleMessage
{ String content=null;
public void setContent(String s)
{content=s;
}
//获取属性content的值,为了能显示HTML或JSP源文件,需进行流的处理技术:
public String getContent()
{ try{ StringReader in=new StringReader(content) ;//指向字符串的字符流。
PushbackReader push=new PushbackReader(in);
StringBuffer stringbuffer=new StringBuffer();
int c;
char b[]=new char[1];
while ( (c=push.read(b,0,1))!=-1)//读取1个字符放入字符数组b。
{ String s=new String(b);
if(s.equals("<")) //回压的条件
{ push.unread('&');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('L');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
}
else if(s.equals(">")) //回压的条件
{ push.unread('&');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('G');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
stringbuffer.append(new String(b));
}
else if(s.equals("\n"))
{ stringbuffer.append("<BR>");
}
else
{ stringbuffer.append(s);
}
}
push.close();
in.close();
return content=new String(stringbuffer);
}
catch(IOException e)
{return content=new String("不能读取内容");
}
}
}
谢谢大家这么热心!!!!
上面的 JSP原码:
======== 处
应为ShowMember.jsp原码: