• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP实现添加功能和分页显示实例分析

    本文实例讲述了JSP实现添加功能和分页显示的方法。分享给大家供大家参考。具体如下:

    学习目标:

    ① 进一步掌握MVC设计模式;
    ② 掌握添加功能的实现;
    ③ 掌握分页显示功能的实现。

    主要内容:

    ① 通过用户信息添加功能进一步介绍MVC模式;
    ② 通过用户信息的分页显示介绍分页显示功能的原理和实现。

    1、如何采用MVC模式完成用户添加?

    首先考虑与人如何交互:应该有一个输入用户信息的界面,包含用户名和口令,另外需要一反馈的界面。

    然后考虑功能如何实现:需要在User类中添加一个方法,完成用户信息的添加。
    最后考虑控制器:获取信息;调用JavaBean;传值;选择界面响应。

    2、添加用户的界面

    实际应用中的信息项比较多,并且需要对用户输入信息进行验证。这里重点强调添加过程,所以对问题进行简化。可以在登录界面的基础上修改,参考代码如下:

    %@ page contentType="text/html;charset=gb2312"%>
    添加用户br>
    form name="form1" method="post" action="addUser">
      用户ID:input type="text" name="username">br>
      口令:input type="password" name="userpass">br>
        input type="submit" value="添加">input type="reset" value="重置">
    /form>
    %@ include file="contact.jsp"%>
    
    

    3、在User中增加方法

    public boolean addUser()
    {
       Connection con = null;
       Statement stmt = null;
       boolean b; // 表示添加成功与否
       try{
         // 指出连接数据库所需要的驱动程序
         Class.forName("oracle.jdbc.driver.OracleDriver");
        // 建立与数据库之间的连接
    // 需要把myserver修改为自己的数据库服务器的IP地址
    // 把mydb修改成自己的数据库)
        con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");
        // 编写查询数据库信息的SQL语句
        String sql="insert into usertable(username,userpass) values('"+username+"','"+userpass+"')";
        // 创建语句对象,用于执行SQL语句
        stmt = con.createStatement();
        // 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数
        int n = stmt.executeUpdate(sql);   
        if(n>0)
          b = true;
        else
          b = false;
       }catch(Exception e){
         b = false;
       }
       finally{
        // 关闭相关对象
        if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}
        if(con!=null) try{ con.close(); }catch(Exception ee){}
       }   
       return b;
    }
    
    

    4、使用Servlet进行控制

    参考代码如下:

    package servlet;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javabean.*;
    import java.util.*;
    public class AddUser extends HttpServlet
    {
      public void doGet(HttpServletRequest request,HttpServletResponse response)
       throws IOException,ServletException
      {
       request.setCharacterEncoding("gb2312");
       // 第一步:获取用户的输入信息
       String username = request.getParameter("username");
       String userpass = request.getParameter("userpass");
       // 第二步:调用JavaBean
       User user = new User();
       user.setUsername(username);
       user.setUserpass(userpass);
       boolean b = user.addUser();
       // 第三步:传值
       String info;
       if(b)
         info="添加成功!";
       else
         info="添加失败!";
       request.setAttribute("addinfo",info);
       // 第四步:选择一个界面对用户进行响应
       String forward="getAllUser";
       RequestDispatcher rd = request.getRequestDispatcher(forward);
       rd.forward(request,response);
      }
      public void doPost(HttpServletRequest request,HttpServletResponse response)
       throws IOException,ServletException
      {
       doGet(request,response);
      }
    }
    
    

    此处添加完成之后跳转到userlist.jsp文件处理,但是在显示之前需要获取数据,所以需要先执行Servlet,所以专向了getAllUser控制器。

    5、修改配置文件

      servlet>
       servlet-name>addUser/servlet-name>
       servlet-class>servlet.AddUser/servlet-class>
      /servlet>
      servlet-mapping>
       servlet-name>addUser/servlet-name>
       url-pattern>/addUser/url-pattern>
      /servlet-mapping>
    
    

    6、在列表界面显示提示信息

    修改userlist.jsp代码如下,红色部分为增加的内容:

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    font color="red">
      ${addinfo}
    /font>
    br>
    c:forEach var="user" items="${users}">
      用户名:${user.username} 口令:${user.userpass} br>
    /c:forEach>
    
    

    7、运行测试

    输入正确的用户名和口令测试;
    输出已经存在的用户名进行测试。

    8、 添加分页显示

    经过不断的添加,数据库表中已经有大量的记录。当记录比较多的时候就应该进行分页显示。分页显示可以采用多种方式:

    ① 在SQL中进行控制,只查询需要的记录;
    ② 在遍历结果集的时候,只封装相关的记录;
    ③ 在显示的时候进行控制。

    第一种方式对开发人员的SQL水平要求比较高,第三种方式传递的数据量比较大,所以我们介绍第二种。

    要完成分页显示,需要做3个方面的修改:

    ① 界面上增加分页显示的超链接;
    ② 修改User.java,在遍历结果集的时候进行控制,另外需要增加获取页码数的方法;
    ③ 在控制器中传递需要的页码和总页码。

    9、 在界面上增加分页显示功能

    %@ page contentType="text/html;charset=gb2312"%>
    %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    font color="red">
      ${addinfo}
    /font>
    br>
     a href="getAllUser?pageNo=1">第一页/a>
     a href="getAllUser?pageNo=${pageNo-1}">上一页/a>
     a href="getAllUser?pageNo=${pageNo+1}">下一页/a>
     a href="getAllUser?pageNo=${pageCount}">最后一页/a>
    br>
    c:forEach var="user" items="${users}">
      用户名:${user.username} 口令:${user.userpass} br>
    /c:forEach>
    

    其中,pageNo表示当前页码,pageCount表示总页数。

    10、在User.java中增加获取总页码的方法

    public int getPageCount()
    {
       Connection con = null;
       Statement stmt = null;
       ResultSet rs = null;
       try{
         // 指出连接数据库所需要的驱动程序
         Class.forName("oracle.jdbc.driver.OracleDriver");
        // 建立与数据库之间的连接
        con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");
        // 编写查询数据库信息的SQL语句
        String sql="select count(*) from usertable";
        // 创建语句对象,用于执行SQL语句
        stmt = con.createStatement();
        // 执行SQL语句得到结果集
        rs = stmt.executeQuery(sql);   
        rs.next();
        // 得到总的记录数
        int number = rs.getInt(1);
        return (number-1)/10+1; 
       }catch(Exception e){
         return 0;
       }
       finally{
        // 关闭相关对象
        if(rs!=null) try{ rs.close(); }catch(Exception ee){}
        if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}
        if(con!=null) try{ con.close(); }catch(Exception ee){}
       }   
    }
    
    

    11、增加按照页码获取信息的方法

    public ArrayList getUserByPage(int pageNo)
    {
       int number=10;
       // 每一页显示的记录数
       int begin = (pageNo * number) - 9;
       int end = pageNo * number;
       int index=1;
       Connection con = null;
       Statement stmt = null;
       ResultSet rs = null;
       ArrayList users = new ArrayList();
       try{
         // 指出连接数据库所需要的驱动程序
         Class.forName("oracle.jdbc.driver.OracleDriver");
        // 建立与数据库之间的连接
        con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.170:1521:fhdn","scott","tiger");
        // 编写查询数据库信息的SQL语句
        String sql="select * from usertable";
        // 创建语句对象,用于执行SQL语句
        stmt = con.createStatement();
        // 执行SQL语句得到结果集
        rs = stmt.executeQuery(sql);   
        // 遍历结果集
        while(rs.next())
        {
          // 在begin之前的记录是不显示的
          if(indexbegin){
            index++;
            continue;
          }
          // 在end之后的记录也不显示
          if(index>end)
            break;
          index++;
          String username = rs.getString(1);
          String userpass = rs.getString(2);
          // java.util.Date birthday = rs.getDate(3);
          // int age = rs.getInt(4);
          User user = new User();
          user.setUsername(username);
          user.setUserpass(userpass);
          users.add(user);
        }
       }catch(Exception e){
         System.out.println(e.getMessage());
       }
       finally{
        // 关闭相关对象
        if(rs!=null) try{ rs.close(); }catch(Exception ee){}
        if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}
        if(con!=null) try{ con.close(); }catch(Exception ee){}
       }   
       return users;
    }
    
    

    12、修改控制器

    package servlet;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javabean.*;
    import java.util.*;
    public class GetAllUser extends HttpServlet
    {
      public void doGet(HttpServletRequest request,HttpServletResponse response)
       throws IOException,ServletException
      {
       // 第一步:获取用户的输入信息
       String pageNo=request.getParameter("pageNo");
       int iPageNo=1;
       if(pageNo!=null)
       {
         iPageNo = Integer.parseInt(pageNo);
       }
       // 第二步:调用JavaBean
       User user = new User();
       ArrayList users=null;
       users = user.getUserByPage(iPageNo);
       int pageCount=user.getPageCount();
       // 第三步:传值
       request.setAttribute("users",users);
       request.setAttribute("pageNo",new Integer(iPageNo));
       request.setAttribute("pageCounter",new Integer(pageCount));
       // 第四步:选择一个界面对用户进行响应
       String forward="userlist.jsp";
       RequestDispatcher rd = request.getRequestDispatcher(forward);
       rd.forward(request,response);
      }
      public void doPost(HttpServletRequest request,HttpServletResponse response)
       throws IOException,ServletException
      {
       doGet(request,response);
      }
    }
    
    

    13、之后再进行测试运行

    14、增加对第一页和最后一页的控制

    如果已经在第一页,就不能再点击第一页或者首页。如果已经在最后一页,就不能再点击最后一页或者下一页。修改userlist.jsp中代码如下(部分代码):

    c:if test="${pageNo!=1}">
     a href="getAllUser?pageNo=1">第一页/a>
     a href="getAllUser?pageNo=${pageNo-1}">上一页/a>
    /c:if>
    c:if test="${pageNo!=pageCounter}">
     a href="getAllUser?pageNo=${pageNo+1}">下一页/a>
     a href="getAllUser?pageNo=${pageCounter}">最后一页/a>
    /c:if>
    
    

    这里设置为不显示,也可以设置为不添加超链接。

    15、增加对异常的处理

    如果用户按照这样的方式访问:http://127.0.0.1:8080/ch8/getAllUser?pageNo=aaa,将产生异常。因为页码不是数字,所以需要进行异常处理。修改:

    复制代码 代码如下:
    iPageNo = Integer.parseInt(pageNo);

    为:
    复制代码 代码如下:
    try{ iPageNo = Integer.parseInt(pageNo); }catch(Exception e){}

    希望本文所述对大家的JSP程序设计有所帮助。

    您可能感兴趣的文章:
    • JSP实现的简单分页示例
    • JSP+EXt2.0实现分页的方法
    • jsp分页显示完整实例
    • JSP自定义分页标签TAG全过程
    • jsp分页显示的实现代码
    • json实现jsp分页实例介绍(附效果图)
    • JSP分页显示的实例代码
    • jsp读取数据库实现分页技术简析
    • 一个通用的jsp分页PageBean
    • jsp hibernate的分页代码
    • 一个实用的JSP分页代码
    • JSP实现的简单分页显示效果代码
    上一篇:jsp中checkbox用法详解
    下一篇:JSP使用MVC模式完成删除和修改功能实例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP实现添加功能和分页显示实例分析 JSP,实现,添加,功能和,分页,