分页查看留言——JSP

本文介绍了使用JSP编写页面,实现留言和分页查看留言功能的详细过程。开发工具为MyEclipse 2018.8.0,涉及JavaEE 6-Web 3.0和Java 1.6。先创建数据库和表,再编写JavaBean实现留言插入,设计留言和分页显示页面,还给出了相关CSS样式代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:编写JSP页面,实现留言和分页查看留言的功能

开发工具:MyEclipse 2018.8.0

Java EE version:JavaEE 6-Web 3.0

Java version:1.6

数据库驱动:mysql-connector-java-5.1.37

实现过程:

  • 第一步:思考留言中需要涉及到的字段,创建数据库mobileshop,根据需求在数据库中创建表messlist,在这里我用到了姓名、留言标题、留言内容三个字段,表的结构如下:

                           

  • 第二步:在src目录下新建Class,Package设置为mybean.data,Name设置为AddMess,实现留言功能
    • 声明属性,包括mysql的用户名和密码、数据库名称、表的名字、提交的姓名、留言标题、留言内容并添加相应的get和set方法
    • 将数据库驱动mysql-connector-java-5.1.37添加到WEB-INF目录下的lib文件夹下
    • 连接数据库并判断属性值是否为空,满足要求时执行插入操作

AddMess.java文件的代码如下:

package mybean.data;

import java.sql.*;

public class AddMess {
    String name="",messTitle="",messDetail="";   //提交的姓名、留言标题、留言内容
    String backNews="";
    String databaseName="";             //数据库名称
    String tableName="";                //表的名字
    String user=""       ;             //用户
    String password="" ;               //密码
    public AddMess(){
        try{ Class.forName("com.mysql.jdbc.Driver"); 
        }
        catch(Exception e){} 
     }
    
    public String handleString(String s) {
        try {
            byte bb[]=s.getBytes("ISO8859-1");
            s=new String(bb,"UTF-8");
        }catch(Exception e){}
        return s;
    }
    
    public void insertMess(){
        String uri="jdbc:mysql://127.0.0.1/"+databaseName+"?useUnicode=true&characterEncoding=utf-8";
        boolean boo=name.length()>0&&messTitle.length()>0&&messDetail.length()>0;
        PreparedStatement sql;
        Connection con;
        name = name.trim();
        messTitle = messTitle.trim();
        messDetail = messDetail.trim();
        try{  
            con = DriverManager.getConnection(uri,user,password);
            //String insertCondition = "INSERT INTO messList(name,mess_title,mess_detail) VALUES(?,?,?)";
            String insertCondition;
           
            if(boo) {
                insertCondition ="INSERT INTO messList(name,mess_title,mess_detail) VALUES('"+handleString(name)+"','"+handleString(messTitle)+"','"+handleString(messDetail)+"')";
                sql=con.prepareStatement(insertCondition); 
//                sql.setString(1, handleString(name));
//                sql.setString(2, handleString(messTitle));
//                sql.setString(3, handleString(messDetail));
        
                int m=sql.executeUpdate(insertCondition);   
                
                if(m!=0) {
                    backNews="插入成功";      
                }else {
                    backNews="插入失败";
                }
                
            }else {
                backNews="请将信息填写完整";
            }
            con.close();
        }
        catch(Exception exp){backNews=exp.toString();}
     }
   
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    public void setBackNews(String back) {
        this.backNews = back;
    }
    
    public String getBackNews() {
        return backNews;
    }

    public String getMessTitle() {
        return messTitle;
    }

    public void setMessTitle(String messTitle) {
        this.messTitle = messTitle;
    }

    public String getMessDetail() {
        return messDetail;
    }

    public void setMessDetail(String messDetail) {
        this.messDetail = messDetail;
    }
    
    public void setDatabaseName(String s){
          databaseName=s.trim();
   }
    
   public String getDatabaseName(){
      return databaseName;
   }
   
   public void setTableName(String s){
      tableName=s.trim();
   }
   
   public String getTableName(){
      return tableName;
   }
   
   public void setPassword(String s){
      password=s.trim();;
   }
   
   public void setUser(String s){
      user=s.trim();
   }
}

  • 第三步:设计留言页面inputMess.jsp
    • 在WEB-INF目录下创建JSP文件inputMess.jsp,在页面中设置三个输入框和一个提交按钮
    • 调用JavaBean,将用户输入的内容设置为对应的属性值
    • 调用insertMess(),将获取到的内容插入到messlist表中
    • 编写inputMess.css,改变页面的样式

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="mybean.data.AddMess" %>
<jsp:useBean id="add" class="mybean.data.AddMess" scope="session"/>
<jsp:setProperty name="add" property="databaseName" value="mobileshop"/>
<jsp:setProperty name="add" property="tableName" value="messList"/>
<jsp:setProperty name="add" property="user" value="root"/>
<jsp:setProperty name="add" property="password" value=""/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'showMess.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" type="text/css" href="assets/css/inputMess.css">
  </head>
  <body>
     <FORM action="" Method="post" name="form" class="formCss">
         输入你的名字:<BR><input type="text" name="user" class="inputCss">
          <BR> 输入你留言的标题:<BR><input type="text" name="messTitle" class="inputCss">
        <BR>输入你的留言:<BR><TEXTAREA name="mess" Rows="10" COLS="36" class="textareaCss"></TEXTAREA>
        <br><Input type="submit" name="ok" value="提交" id="submBtn"/>
        <a href="showMess.jsp">查看留言</a>
        <jsp:setProperty name="add" property="name" param="user"/>
        <jsp:setProperty name="add" property="messTitle" param="messTitle"/>
        <jsp:setProperty name="add" property="messDetail" param="mess"/>
             <%add.insertMess();%>
       <br>TIP:<jsp:getProperty name="add" property="backNews"/>
    </FORM>
  </body>
</html>

 inputMess.css代码如下:

html,body{
     background: #EBEBEB;
 }
 }

a{
    outline: none;
    text-decoration: none;
}

a:hover,a:focus{
    outline: none;
    text-decoration: none;
}

.textareaCss{
     wrap="physical"
}

.formCss{
    width:33.33%;
    margin:0 auto; margin-top:100px;
    padding:20px;
    background:rgba(217,255,255,0.7);
    font-size:14px;
}

.inputCss{
    margin-bottom:10px;
}

#submBtn{
    margin-top:10px;
    margin-bottom:10px;
    background:rgba(217,255,255,0.7);
    border-radius: 5px;
}

——留言页效果截图

  •  第四步:在src目录下新建Class,Package设置为mybean.data,Name设置为MessBoard,实现分页查看留言功能
    • 同上一个bean文件,先声明基本的三个属性,包括mysql的用户名和密码、数据库名称、表的名字;然后设置每页显示的记录数、分页后的总页数以及当前页的默认值
    • 除此上述还需要声明两个对象分别用于显示当前页内容和存储ResultSet对象,因为我的包中不含有 CachedRowSetImpl类,所以需要去下载一个com.sun.rowset.jar包,将这个jar包放到WEB-INF目录下的lib文件夹下
    • 创建setPageSize方法,用于查询表messList的内容并存放到ResultSet对象中
    • 创建show方法,将ResultSet对象中的内容按页数和每页显示的记录数插入到表格中,返回插入数据后的表格字符串,并在getPresentPageResult方法中调用,达到按页数显示留言内容的效果

 

package mybean.data;

import java.sql.*;
import com.sun.rowset.*;
public class MessBoard {
   int pageSize=10;                      //每页显示的记录数
   int pageAllCount=0;                   //分页后的总页数
   int showPage=1   ;                   //当前显示页 
   StringBuffer presentPageResult;      //显示当前页内容
   CachedRowSetImpl rowSet;            //用于存储ResultSet对象
   String databaseName="";             //数据库名称
   String tableName="";                //表的名字
   String user=""       ;             //用户
   String password="" ;               //密码 
   String 字段[]=new String[100] ;
   int 字段个数=0;
   public MessBoard(){
      presentPageResult=new StringBuffer();
      try{ Class.forName("com.mysql.jdbc.Driver"); 
      }
      catch(Exception e){} 
   }
   public void setPageSize(int size){
      pageSize=size;
      字段个数=0;
      String uri="jdbc:mysql://127.0.0.1/"+databaseName;
      try{  Connection con=DriverManager.getConnection(uri,user,password);
            DatabaseMetaData metadata=con.getMetaData();
            ResultSet rs1=metadata.getColumns(null,null,tableName,null);
            int k=0;
            while(rs1.next()){
               字段个数++;
               字段[k]=rs1.getString(4); //获取字段的名字
               k++;
            }
            Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                          ResultSet.CONCUR_READ_ONLY);
            ResultSet rs=sql.executeQuery("SELECT * FROM "+tableName);
            rowSet=new CachedRowSetImpl();  //创建行集对象
            rowSet.populate(rs);
            con.close();                    //关闭连接 
            rowSet.last();
            int m=rowSet.getRow();          //总行数
            int n=pageSize;
            pageAllCount=((m%n)==0)?(m/n):(m/n+1);
      }
      catch(Exception exp){}
   }
   public int getPageSize(){
      return pageSize;
   } 
   public int getPageAllCount(){
      return pageAllCount;
   } 
   public void setShowPage(int n){
      showPage=n;
   }
   public int getShowPage(){
      return showPage;
   }
   
   public StringBuffer getPresentPageResult(){
      if(showPage>pageAllCount)
          showPage=1;
       if(showPage<=0)
          showPage=pageAllCount;
       presentPageResult=show(showPage);
       return presentPageResult; 
   }
   public StringBuffer show(int page){
       StringBuffer str=new StringBuffer();
       str.append("<table border=1 class='tableCss'>");
       str.append("<tr>");
       for(int i=0;i<字段个数;i++)
          str.append("<th>"+字段[i]+"</th>");
       str.append("</tr>");
       try{  rowSet.absolute((page-1)*pageSize+1);
             boolean boo=true;
             for(int i=1;i<=pageSize&&boo;i++){
                str.append("<tr>");
                for(int k=1;k<=字段个数;k++)
                    str.append("<td>"+rowSet.getString(k)+"</td>");
                str.append("</tr>");
                boo=rowSet.next();
             }
       }
       catch(SQLException exp){}
       str.append("</table>");   
       return str;
   }
   public void setDatabaseName(String s){
      databaseName=s.trim();
   }
   public String getDatabaseName(){
      return databaseName;
   }
   public void setTableName(String s){
      tableName=s.trim();
   }
   public String getTableName(){
      return tableName;
   }
   public void setPassword(String s){
      password=s.trim();;
   }
   public void setUser(String s){
      user=s.trim();
   }
   public String getUser(){
      return user;
   } 
}

  • 第五步: 设计分页显示留言的页面showMess.jsp
    • 调用对应javabean,设置和获取属性值,将留言内容显示出来
    • 设计翻页按钮,翻页时设置当前页的属性值并刷新页面,显示对应留言内容
    • 编写showMess.css,改变页面的样式

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="mybean.data.MessBoard" %>
<jsp:useBean id="look" class="mybean.data.MessBoard" scope="session"/>
<jsp:setProperty name="look" property="databaseName" value="mobileshop"/>
<jsp:setProperty name="look" property="tableName" value="messList"/>
<jsp:setProperty name="look" property="user" value="root"/>
<jsp:setProperty name="look" property="password" value=""/>
<jsp:setProperty name="look" property="pageSize" value="3"/>
<HTML>
<head>
    <title>My JSP 'showMess.jsp' starting page</title>
    <link rel="stylesheet" type="text/css" href="assets/css/inputMess.css">
    <link rel="stylesheet" type="text/css" href="assets/css/showMess.css">
  </head>
<BODY>
<p>
       数据库
  <jsp:getProperty  name= "look" property="databaseName"/>中
  <jsp:getProperty  name= "look" property="tableName"/>表的记录将被分页显示。
  <br>共有 <jsp:getProperty name="look" property="pageAllCount"/> 页,
     每页最多显示<jsp:getProperty  name="look"  property="pageSize" />条记录。
</p>
  <jsp:setProperty  name= "look"  property="showPage"  />
  <jsp:getProperty  name= "look"  property="presentPageResult" />
  <BR>单击“前一页”或“后一页”按纽查看记录(当前显示第
  <jsp:getProperty  name= "look"  property="showPage" /> 页)。
 <Table class="tableCss">
  <tr><td><FORM action="">
        <Input type=hidden name="showPage" value="<%=look.getShowPage()-1 %>" >
        <Input type=submit name="g" value="前一页">
        </FORM>
      </td>
      <td><FORM action="">
        <Input type=hidden name="showPage" value="<%=look.getShowPage()+1 %>" >
        <Input type=submit name="g" value="后一页">
        </Form>
      </td>
      <td> <FORM action="">
              输入页码:<Input type=text name="showPage" size=5 >
           <Input type=submit name="g" value="提交">
           <a href="inputMess.jsp">去留言</a>
           </FORM>
      </td>
      <td></td>
      <td></td>
  </tr>
  </Table>
</BODY></HTML>

  inputMess.css代码如下:

 .tableCss{
     width:33.33%;
    margin:0 auto;
    padding:20px;
    background:rgba(217,255,255,0.7);
    font-size:14px;
 }
 
 body{
     text-align:center;
 }
 
 p{
 margin-top:100px;
 }

 ——分页查看留言页的效果

 

一、设计目的 留言系统目前在各类网站中被广泛使用。通过综合运用JSP、Servlet、JavaBean、JDBC、MySQL和MVC + DAO等技术与方法,设计与实现一个留言管理系统,进一步理解和掌握Java Web编程开发的基本技术和方法,熟练使用开发工具。 二、课程设计内容 设计留言管理系统的目的是提供对留言的增加、删除、修改和显示的功能。 系统分前台和后台两个模块。 1)前台留言模块主要针对普通用户,按功能又分为以下模块。 (1) 发表留言(即添加留言) 普通用户可以在留言管理系统中随意留言,如果留言的字数太少如低于10个字符,系统将给出提示。 (2) 查看留言 可以浏览留言(即查看留言列表)、查看详细留言(即查看某条留言内容)、搜索留言(即查看符合条件的留言列表)、查看友情链接(即导航到别的网站)。 2)后台模块(管理模块)针对管理员提供操作,按功能又分为以下模块。 (1) 登录管理:需要输入管理员账号、口令和验证码,系统将验证、口令和验证码是否正确,如果验证成功,则进入管理员界面;否则,系统提示账号或密码错误的信息。 另外,登录后的管理员可以选择退出登录,进而退出管理界面。(实现提示:将退出请求提交给处理退出的Servlet,在该Servlet中将session失效,再将页面重定向到登录页面。) (2) 留言管理:可以查看所有的留言,可以增加留言(即回复留言)、修改留言、删除留言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值