怎么学习jsp,能不能告诉我流程和节进啊~

解决方案 »

  1.   

    是耿祥议的书中第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>
      

  2.   

    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("不能读取内容");
          }   
     }
    }
      

  3.   


    谢谢大家这么热心!!!!
    上面的            JSP原码:
                      ========     处   
                                        应为ShowMember.jsp原码: