亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP實現添加功能和分頁顯示實例分析

2020-07-27 21:31:03
字體:
來源:轉載
供稿:網友

本文實例講述了JSP實現添加功能和分頁顯示的方法。分享給大家供大家參考。具體如下:

學習目標:

① 進一步掌握MVC設計模式;
② 掌握添加功能的實現;
③ 掌握分頁顯示功能的實現。

主要內容:

① 通過用戶信息添加功能進一步介紹MVC模式;
② 通過用戶信息的分頁顯示介紹分頁顯示功能的原理和實現。

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

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

然后考慮功能如何實現:需要在User類中添加一個方法,完成用戶信息的添加。
最后考慮控制器:獲取信息;調用JavaBean;傳值;選擇界面響應。

2、添加用戶的界面

實際應用中的信息項比較多,并且需要對用戶輸入信息進行驗證。這里重點強調添加過程,所以對問題進行簡化??梢栽诘卿浗缑娴幕A上修改,參考代碼如下:

<%@ 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(index<begin){        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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频中文字幕| 尤物九九久久国产精品的特点| 日韩av有码在线| 精品中文字幕在线| 91精品国产色综合久久不卡98口| 成人午夜激情免费视频| 欧洲s码亚洲m码精品一区| 国产成人97精品免费看片| 午夜精品蜜臀一区二区三区免费| 欧美激情精品久久久久久黑人| 亚洲美女黄色片| 久久久精品在线| 欧美激情亚洲一区| 国产中文字幕亚洲| 98精品国产自产在线观看| 在线观看日韩视频| 国产亚洲一级高清| 亚洲欧美另类自拍| 久久亚洲欧美日韩精品专区| 久久网福利资源网站| 亚洲黄色免费三级| 免费91麻豆精品国产自产在线观看| 中日韩美女免费视频网址在线观看| 午夜精品久久久久久久白皮肤| 国内精品在线一区| 亚洲精品中文字幕有码专区| 久久久精品一区二区三区| 中文字幕av一区二区三区谷原希美| 欧美富婆性猛交| 成人在线观看视频网站| 91在线观看免费| 亚洲欧美日韩精品久久奇米色影视| 尤物yw午夜国产精品视频明星| 日韩美女av在线免费观看| 亚洲欧美日韩视频一区| 日韩av三级在线观看| 成人激情视频在线播放| 亚洲成人在线视频播放| 国产视频欧美视频| 日韩成人在线电影网| 777777777亚洲妇女| 日本国产一区二区三区| 日韩av在线精品| 亚洲激情在线视频| 日韩电影第一页| 日韩亚洲欧美成人| 91sao在线观看国产| 亚洲成人精品在线| 欧美丰满片xxx777| 亚洲www永久成人夜色| 18一19gay欧美视频网站| 日本在线精品视频| 国产在线精品成人一区二区三区| 蜜臀久久99精品久久久无需会员| 亚洲精品丝袜日韩| 久久网福利资源网站| 欧美视频精品一区| 欧美日韩中文字幕综合视频| 亚洲精美色品网站| 精品高清一区二区三区| 夜夜嗨av一区二区三区四区| 亚洲xxxx18| 在线观看欧美视频| 欧美激情亚洲一区| 久久成人精品电影| 国产精品久久久久久超碰| 少妇高潮久久77777| 日本欧美精品在线| 日韩最新av在线| 欧美在线视频免费| 色久欧美在线视频观看| 成人中文字幕在线观看| 久久久久国色av免费观看性色| 国产精品亚洲第一区| 色阁综合伊人av| 欧美性理论片在线观看片免费| 欧美一级片在线播放| 欧美限制级电影在线观看| 国产精品中文字幕在线观看| 欧美日韩一二三四五区| 久久久久久久999精品视频| 欧美性猛交xxxx黑人猛交| 日韩激情av在线播放| 91久久中文字幕| 午夜剧场成人观在线视频免费观看| 毛片精品免费在线观看| 欧美高清在线观看| 美女国内精品自产拍在线播放| 狠狠色香婷婷久久亚洲精品| 欧美日韩国产999| 久久99久久久久久久噜噜| 免费不卡欧美自拍视频| 青草青草久热精品视频在线网站| 国产精品一区二区久久久久| 国产最新精品视频| 国产一区香蕉久久| 亚洲社区在线观看| 中文字幕在线看视频国产欧美在线看完整| 国产va免费精品高清在线观看| 欧美性猛交xxxx乱大交蜜桃| 538国产精品一区二区在线| 自拍偷拍免费精品| 欧美日韩中文字幕在线视频| 一区三区二区视频| 性欧美办公室18xxxxhd| 亚洲美女在线看| 亚洲午夜色婷婷在线| 日韩在线视频网站| 国产亚洲一区二区在线| 成人有码在线视频| 欧美精品福利在线| 国产精品无av码在线观看| 日韩国产中文字幕| 国产精品99久久久久久白浆小说| 伊人成人开心激情综合网| 国产日韩中文字幕在线| 日韩精品在线影院| 久久噜噜噜精品国产亚洲综合| 日本电影亚洲天堂| 欧美成人性色生活仑片| 57pao成人国产永久免费| 2019最新中文字幕| 亚洲精品视频久久| 国产一区二区激情| 精品香蕉在线观看视频一| 亚洲黄色在线观看| 国产精品丝袜久久久久久高清| 欧美黑人又粗大| 欧美激情xxxx性bbbb| 亚洲激情视频在线播放| 国产精品福利久久久| 亚洲最大在线视频| 欧美成人手机在线| 国产成人av网址| 日韩精品久久久久久久玫瑰园| 一级做a爰片久久毛片美女图片| 欧美日韩国产精品一区二区三区四区| 黑人巨大精品欧美一区二区一视频| 欧美精品18videos性欧| 91久久精品视频| 欧美午夜久久久| 欧美在线激情网| 国模精品视频一区二区| 2019国产精品自在线拍国产不卡| 成人a免费视频| 国产精品爽爽ⅴa在线观看| 国产精品中文字幕在线| 91夜夜揉人人捏人人添红杏| 亚洲第一精品福利| 色狠狠av一区二区三区香蕉蜜桃| 久久99久久久久久久噜噜| 78m国产成人精品视频| 亚洲国产精品久久久久久| 久久在线免费视频| 亚洲专区在线视频| 欧美视频国产精品| 国产精品99久久久久久人| 久久久女人电视剧免费播放下载| 久久这里只有精品99| 热久久美女精品天天吊色| 久久激情视频免费观看| 国产成人91久久精品| 在线性视频日韩欧美| 国产精品成人久久久久|