⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第7章(2).txt

📁 《JSP 实用教程》源代码,内含各章实例代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
负责公共留言的beans
PublicWord.java:
package tom.jiafei;
import java.sql.*;
public class PublicWord
{String  logname="",
         message="";
    String backNews;//用来留言是否成功。
    Connection con;
    Statement sql; 
    ResultSet rs;
    public PublicWord()
    {  //加载桥接器:
       try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          }
       catch(ClassNotFoundException e){}
    }
  //设置属性值、获取属性值的方法:
   public void setLogname(String name)
    {  logname=name;
    }
   public String getLogname()
    {return logname;
    }
   public String getMessage()
    {return message;
    } 
   public void setMessage(String m)
    { message=m;
    } 
   public String getBackNews()
    {return backNews;
    }
   public void setBackNews(String s)
    {backNews=s;
    } 
   //添加记录到数据库的wordpad表:
   public void addItem()
    {try{
        con=DriverManager.getConnection("jdbc:odbc:friend","","");
        sql=con.createStatement();
        String s="'"+logname+"'"+","+"'"+message+"'";
        String condition="INSERT INTO wordpad VALUES"+"("+s+")";
        sql.executeUpdate(condition);
        backNews="添加成功了";
        con.close();
       }
     catch(SQLException e)
      {//由于表wordpad和member表通过字段logname做了关联,所以如果输入的logname
        //不对,就会出现异常
        backNews="你没有登录,不能留言";
       }
    }
}

负责私人留言的 beans
SecretWord.java:
package tom.jiafei;
import java.sql.*;
public class SecretWord
{String  logname="",
         time="",      //留言时间。
         message="";
    String backNews;//返回留言是否成功的信息。
    Connection con;
    Statement sql; 
    ResultSet rs;
    public SecretWord()
    {  //加载桥接器:
       try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          }
       catch(ClassNotFoundException e){}
    }
  //设置属性值、获取属性值的方法:
   public void setLogname(String name)
    {  logname=name;
    }
   public String getLogname()
    {return logname;
    }
   public String getMessage()
    {return message;
    } 
   public void setMessage(String m)
    { message=m;
    } 
   public String getBackNews()
    {return backNews;
    }
   public void setBackNews(String s)
    {backNews=s;
    } 
   public void setTime(String t)
    {time=t;
    }
   public String getTime()
    {return time;
    }
   //添加记录到数据库的wordpad表:
   //我们要求留言的时间是唯一的,所以下面的方法声明为synchronized
   public synchronized void addItem()
    {try{
        con=DriverManager.getConnection("jdbc:odbc:friend","","");
        sql=con.createStatement();
        String s="'"+logname+"'"+","+"'"+message+"'"+","+"'"+time+"'";
        String condition="INSERT INTO secretwordpad VALUES"+"("+s+")";
        sql.executeUpdate(condition);
        backNews="添加成功了";
        con.close();
       }
     catch(SQLException e)
       {//由于表wordpad和member表通过字段logname做了关联,所以如果输入对方的logname
        //不存在,就会出现异常
        backNews="该会员不存在,不能留言给他(她)";
       }
    }
}

留言板的主页面(效果如图7.11所示)
message.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="tom.jiafei.Login" %>
<jsp:useBean id="login" class="tom.jiafei.Login" scope="session" >
</jsp:useBean>
<%!//处理字符串的一个常用方法:
    public String getString(String s)
     { if(s==null) s="";
       try {byte a[]=s.getBytes("ISO-8859-1");
            s=new String(a);
           }
       catch(Exception e)
           {
           }
       return s;
     }
 %>
<% //如果客户直接进入该页面将被转向登录页面。
   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" %>
<CENTER>
你可以在这里实现公共留言、私人留言。
<%String str=response.encodeURL("leaveword.jsp");
%>
<FORM action="<%=str%>" method=post>
输入你的会员名字<BR><Input Type=text name=logname value=<%=login.getLogname()%>>
<BR>输入你的留言:
<BR><TextArea name="message" Rows="8" Cols="50">
    </TextArea>
<BR>公共留言(所有的会员都能查看到):
<BR><Input type=submit name="submit" value="提交为公共留言">
<BR>私人留言(输入他(她)的会员名)To:
<Input type =text name=person>
<BR><Input type=submit name="submit" value="提交为私人留言">
</FORM>
</CENTER>
</BODY>
</HTML>

进行留言操作的JSP页面
leaveword.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="login" class="tom.jiafei.Login" scope="session" >
</jsp:useBean>
<jsp:useBean id="publicbean" class="tom.jiafei.PublicWord" scope="page" >
</jsp:useBean>
<jsp:useBean id="secretbean" class="tom.jiafei.SecretWord" scope="page" >
</jsp:useBean>
<%!//处理字符串的一个常用方法:
    public String getString(String s)
     { if(s==null) s="";
       try {byte a[]=s.getBytes("ISO-8859-1");
            s=new String(a);
           }
       catch(Exception e)
           {  }
       return s;
     }
 %>
<HTML>
<BODY bgcolor=pink ><Font size=1>
<% //获取提交键的的串值:
    String s=request.getParameter("submit");
           s=getString(s);
     //根据s的不同情况分开处理:
    if(s.equals("提交为公共留言")) 
       { //获取提交的留言:
         String ms=request.getParameter("message");
         ms=getString(ms);
         publicbean.setLogname(login.getLogname());
         publicbean.setMessage(""+login.getLogname()+"的留言:"+ms);
        //留言:
         publicbean.addItem(); 
         out.print(publicbean.getBackNews()); 
       }
    else if(s.equals("提交为私人留言"))
       { //获取会员的名字:
         String name=request.getParameter("person");
           name=getString(name);
         String ms=request.getParameter("message");
         ms=getString(ms);
         if(name.equals(""))
            {out.print("您没有输入他(她)的名字,不能留言给人家");
            }
         else
            {  secretbean.setLogname(name);
               secretbean.setMessage(""+login.getLogname()+"留言给你:"+ms);
               //留言时间:
               long n=System.currentTimeMillis();
                String time=String.valueOf(n);
               secretbean.setTime(time);
               //留言:
               secretbean.addItem(); 
               out.print(secretbean.getBackNews()); 
            }
      } 
%>
</FONT>
</BODY>
</HTML>

查看公共留言页面(效果如图7.12所示)
publicMessage.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="tom.jiafei.Login" %>
<%@ page import="tom.jiafei.PageNumber" %>
<%@ page import="tom.jiafei.HandleMessage" %>
<jsp:useBean id="handlePage" class="tom.jiafei.PageNumber" scope="session" >
</jsp:useBean>
<jsp:useBean id="login" class="tom.jiafei.Login" scope="session" >
</jsp:useBean>
<jsp:useBean id="handle" class="tom.jiafei.HandleMessage" scope="page" >
</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,tom.jiafei.HandleMessage h)
     {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("</TR>");
       for(int i=1;i<=n;i++)
       {  
          String logname=rs.getString("logname"); 
          String message=rs.getString("public");  
         if(logname==null)
               {logname="";
               }
            if(message==null)
               {message="";
               }
          //为了能显示原始的HTML或JSP文件格式的信息,需对信息进行回压流处理:
           h.setContent(message);
           message=h.getContent();
           //将信息显示在表格中: 
           out.print("<TR>");
             out.print("<TD >"+logname+"</TD>"); 
             out.print("<TD >"+message+"</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 wordpad");  //返回可滚动的结果集。
            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 wordpad");  //返回可滚动的结果集。
            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);
          }
        }
      }
  %> 
  <%--选择显示某页的表单 --%>
 <Form action="" 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(),handle);  //显示该页的内容
 %>
</FONt>
</BODY>
</HTML>

查看私人留言页面(效果如图7.13所示)
secretMessage.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="tom.jiafei.Login" %>
<%@ page import="tom.jiafei.PageNumber" %>
<%@ page import="tom.jiafei.HandleMessage" %>
<jsp:useBean id="handlePage" class="tom.jiafei.PageNumber" scope="session" >
</jsp:useBean>
<jsp:useBean id="login" class="tom.jiafei.Login" scope="session" >
</jsp:useBean>
<jsp:useBean id="handle" class="tom.jiafei.HandleMessage" scope="page" >
</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;
    //显示数据库记录的方法:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -