主頁(yè) > 知識(shí)庫(kù) > JSP實(shí)現(xiàn)添加功能和分頁(yè)顯示實(shí)例分析

JSP實(shí)現(xiàn)添加功能和分頁(yè)顯示實(shí)例分析

熱門標(biāo)簽:杭州ai語(yǔ)音電銷機(jī)器人功能 電銷機(jī)器人好賣么 電銷機(jī)器人是有一些什么技術(shù) 地圖標(biāo)注線上教程 四川保險(xiǎn)智能外呼系統(tǒng)商家 北票市地圖標(biāo)注 商洛電銷 杭州語(yǔ)音電銷機(jī)器人軟件 高德地圖標(biāo)注樣式

本文實(shí)例講述了JSP實(shí)現(xiàn)添加功能和分頁(yè)顯示的方法。分享給大家供大家參考。具體如下:

學(xué)習(xí)目標(biāo):

① 進(jìn)一步掌握MVC設(shè)計(jì)模式;
② 掌握添加功能的實(shí)現(xiàn);
③ 掌握分頁(yè)顯示功能的實(shí)現(xiàn)。

主要內(nèi)容:

① 通過用戶信息添加功能進(jìn)一步介紹MVC模式;
② 通過用戶信息的分頁(yè)顯示介紹分頁(yè)顯示功能的原理和實(shí)現(xiàn)。

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

首先考慮與人如何交互:應(yīng)該有一個(gè)輸入用戶信息的界面,包含用戶名和口令,另外需要一反饋的界面。

然后考慮功能如何實(shí)現(xiàn):需要在User類中添加一個(gè)方法,完成用戶信息的添加。
最后考慮控制器:獲取信息;調(diào)用JavaBean;傳值;選擇界面響應(yīng)。

2、添加用戶的界面

實(shí)際應(yīng)用中的信息項(xiàng)比較多,并且需要對(duì)用戶輸入信息進(jìn)行驗(yàn)證。這里重點(diǎn)強(qiáng)調(diào)添加過程,所以對(duì)問題進(jìn)行簡(jiǎn)化??梢栽诘卿浗缑娴幕A(chǔ)上修改,參考代碼如下:

%@ 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{
     // 指出連接數(shù)據(jù)庫(kù)所需要的驅(qū)動(dòng)程序
     Class.forName("oracle.jdbc.driver.OracleDriver");
    // 建立與數(shù)據(jù)庫(kù)之間的連接
// 需要把myserver修改為自己的數(shù)據(jù)庫(kù)服務(wù)器的IP地址
// 把mydb修改成自己的數(shù)據(jù)庫(kù))
    con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");
    // 編寫查詢數(shù)據(jù)庫(kù)信息的SQL語(yǔ)句
    String sql="insert into usertable(username,userpass) values('"+username+"','"+userpass+"')";
    // 創(chuàng)建語(yǔ)句對(duì)象,用于執(zhí)行SQL語(yǔ)句
    stmt = con.createStatement();
    // 執(zhí)行沒有結(jié)果集返回的語(yǔ)句,返回的是影響數(shù)據(jù)庫(kù)表中記錄的個(gè)數(shù)
    int n = stmt.executeUpdate(sql);   
    if(n>0)
      b = true;
    else
      b = false;
   }catch(Exception e){
     b = false;
   }
   finally{
    // 關(guān)閉相關(guān)對(duì)象
    if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}
    if(con!=null) try{ con.close(); }catch(Exception ee){}
   }   
   return b;
}

4、使用Servlet進(jìn)行控制

參考代碼如下:

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");
   // 第二步:調(diào)用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);
   // 第四步:選擇一個(gè)界面對(duì)用戶進(jìn)行響應(yīng)
   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);
  }
}

此處添加完成之后跳轉(zhuǎn)到userlist.jsp文件處理,但是在顯示之前需要獲取數(shù)據(jù),所以需要先執(zhí)行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代碼如下,紅色部分為增加的內(nèi)容:

%@ 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、運(yùn)行測(cè)試

輸入正確的用戶名和口令測(cè)試;
輸出已經(jīng)存在的用戶名進(jìn)行測(cè)試。

8、 添加分頁(yè)顯示

經(jīng)過不斷的添加,數(shù)據(jù)庫(kù)表中已經(jīng)有大量的記錄。當(dāng)記錄比較多的時(shí)候就應(yīng)該進(jìn)行分頁(yè)顯示。分頁(yè)顯示可以采用多種方式:

① 在SQL中進(jìn)行控制,只查詢需要的記錄;
② 在遍歷結(jié)果集的時(shí)候,只封裝相關(guān)的記錄;
③ 在顯示的時(shí)候進(jìn)行控制。

第一種方式對(duì)開發(fā)人員的SQL水平要求比較高,第三種方式傳遞的數(shù)據(jù)量比較大,所以我們介紹第二種。

要完成分頁(yè)顯示,需要做3個(gè)方面的修改:

① 界面上增加分頁(yè)顯示的超鏈接;
② 修改User.java,在遍歷結(jié)果集的時(shí)候進(jìn)行控制,另外需要增加獲取頁(yè)碼數(shù)的方法;
③ 在控制器中傳遞需要的頁(yè)碼和總頁(yè)碼。

9、 在界面上增加分頁(yè)顯示功能

%@ 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">第一頁(yè)/a>
 a href="getAllUser?pageNo=${pageNo-1}">上一頁(yè)/a>
 a href="getAllUser?pageNo=${pageNo+1}">下一頁(yè)/a>
 a href="getAllUser?pageNo=${pageCount}">最后一頁(yè)/a>
br>
c:forEach var="user" items="${users}">
  用戶名:${user.username} 口令:${user.userpass} br>
/c:forEach>

其中,pageNo表示當(dāng)前頁(yè)碼,pageCount表示總頁(yè)數(shù)。

10、在User.java中增加獲取總頁(yè)碼的方法

public int getPageCount()
{
   Connection con = null;
   Statement stmt = null;
   ResultSet rs = null;
   try{
     // 指出連接數(shù)據(jù)庫(kù)所需要的驅(qū)動(dòng)程序
     Class.forName("oracle.jdbc.driver.OracleDriver");
    // 建立與數(shù)據(jù)庫(kù)之間的連接
    con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");
    // 編寫查詢數(shù)據(jù)庫(kù)信息的SQL語(yǔ)句
    String sql="select count(*) from usertable";
    // 創(chuàng)建語(yǔ)句對(duì)象,用于執(zhí)行SQL語(yǔ)句
    stmt = con.createStatement();
    // 執(zhí)行SQL語(yǔ)句得到結(jié)果集
    rs = stmt.executeQuery(sql);   
    rs.next();
    // 得到總的記錄數(shù)
    int number = rs.getInt(1);
    return (number-1)/10+1; 
   }catch(Exception e){
     return 0;
   }
   finally{
    // 關(guān)閉相關(guān)對(duì)象
    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、增加按照頁(yè)碼獲取信息的方法

public ArrayList getUserByPage(int pageNo)
{
   int number=10;
   // 每一頁(yè)顯示的記錄數(shù)
   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{
     // 指出連接數(shù)據(jù)庫(kù)所需要的驅(qū)動(dòng)程序
     Class.forName("oracle.jdbc.driver.OracleDriver");
    // 建立與數(shù)據(jù)庫(kù)之間的連接
    con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.170:1521:fhdn","scott","tiger");
    // 編寫查詢數(shù)據(jù)庫(kù)信息的SQL語(yǔ)句
    String sql="select * from usertable";
    // 創(chuàng)建語(yǔ)句對(duì)象,用于執(zhí)行SQL語(yǔ)句
    stmt = con.createStatement();
    // 執(zhí)行SQL語(yǔ)句得到結(jié)果集
    rs = stmt.executeQuery(sql);   
    // 遍歷結(jié)果集
    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{
    // 關(guān)閉相關(guān)對(duì)象
    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);
   }
   // 第二步:調(diào)用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));
   // 第四步:選擇一個(gè)界面對(duì)用戶進(jìn)行響應(yīng)
   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、之后再進(jìn)行測(cè)試運(yùn)行

14、增加對(duì)第一頁(yè)和最后一頁(yè)的控制

如果已經(jīng)在第一頁(yè),就不能再點(diǎn)擊第一頁(yè)或者首頁(yè)。如果已經(jīng)在最后一頁(yè),就不能再點(diǎn)擊最后一頁(yè)或者下一頁(yè)。修改userlist.jsp中代碼如下(部分代碼):

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

這里設(shè)置為不顯示,也可以設(shè)置為不添加超鏈接。

15、增加對(duì)異常的處理

如果用戶按照這樣的方式訪問:http://127.0.0.1:8080/ch8/getAllUser?pageNo=aaa,將產(chǎn)生異常。因?yàn)轫?yè)碼不是數(shù)字,所以需要進(jìn)行異常處理。修改:

復(fù)制代碼 代碼如下:
iPageNo = Integer.parseInt(pageNo);

為:
復(fù)制代碼 代碼如下:
try{ iPageNo = Integer.parseInt(pageNo); }catch(Exception e){}

希望本文所述對(duì)大家的JSP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • JSP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)示例
  • JSP+EXt2.0實(shí)現(xiàn)分頁(yè)的方法
  • jsp分頁(yè)顯示完整實(shí)例
  • JSP自定義分頁(yè)標(biāo)簽TAG全過程
  • jsp分頁(yè)顯示的實(shí)現(xiàn)代碼
  • json實(shí)現(xiàn)jsp分頁(yè)實(shí)例介紹(附效果圖)
  • JSP分頁(yè)顯示的實(shí)例代碼
  • jsp讀取數(shù)據(jù)庫(kù)實(shí)現(xiàn)分頁(yè)技術(shù)簡(jiǎn)析
  • 一個(gè)通用的jsp分頁(yè)P(yáng)ageBean
  • jsp hibernate的分頁(yè)代碼
  • 一個(gè)實(shí)用的JSP分頁(yè)代碼
  • JSP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)顯示效果代碼

標(biāo)簽:西藏 紅河 丹東 云浮 貴州 青島 江西 宿州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JSP實(shí)現(xiàn)添加功能和分頁(yè)顯示實(shí)例分析》,本文關(guān)鍵詞  JSP,實(shí)現(xiàn),添加,功能和,分頁(yè),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP實(shí)現(xiàn)添加功能和分頁(yè)顯示實(shí)例分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于JSP實(shí)現(xiàn)添加功能和分頁(yè)顯示實(shí)例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章