簡易圖書管理系統(主要是jsp+servlet的練習):https://blog.csdn.net/Biexiansheng/article/details/70240413
免費提供源碼,有償提供服務,支持項目定制。
為了方便理解和說明,這里簡單介紹一些執行的流程,方便理解。插入操作的執行流程和說明:
1:插入操作的執行流程如下
1.1:首先登錄頁面,設置默認的打開頁面是login.jsp。
<!-- 默認模仿的是登錄界面login.jsp頁面 -->
<welcome-file>login.jsp</welcome-file>
1.2:點擊后台登錄,根據action到index.jsp頁面。
<form action="view/system/main/index.jsp" method="post" onsubmit="return check()"></form>
1.3:點擊用戶管理,這里href的地址已經由到.jsp修改為servlet3.0的注解url。因為點擊用戶管理之后就需要從數據庫查詢出來用戶信息
<a href="system/userinfoselect" target="mainframe">
<i class="icon-double-angle-right"></i> 用戶管理
</a>
1.4:點擊添加用戶,就到了userinfo_add.jsp這個頁面。這里全部使用絕對路徑,避免出錯。
<a href="view/system/userinfo/userinfo_add.jsp" class="btn btn-success">添加用戶</a>
1.5:當填好頁面的信息的時候,提交到這個路徑system/userinfoinsert的servlet3.0的后台處理。
<form action="system/userinfoinsert" class="form-horizontal" method="post"></form>
1.6:RequestBeanUtils這個是使用了這個工具,可以省去寫很多request.getParameter()的代碼,需要注意的是表單name屬性和實體類必須一致,且需要導包,上面的連接有代碼和詳細注釋說明,然后就是調用service層的業務邏輯層。調用insertUser方法。
UserInfo user=RequestBeanUtils.requestToSimpleBean(request, UserInfo.class);
UserInfoService service=new UserInfoServiceImpl();
boolean mark=service.insertUser(user);
1.7:因為添加和修改可以提出公共的方法,作為工具類,所以這里直接調用工具類,省去了dao層()數據處理層。
int count=DbUtils.addAndUpdate(sql.toString(), list.toArray());
1.8:公共類DbUtils類addAndUpdate()返回返回整形執行的條數。
return ps.executeUpdate();
1.9:service業務邏輯層UserInfoServiceImpl類的 insertUser()方法返回布爾類型true或者false;
2.0: servlet層返回的用戶插入成功或者失敗, 轉發到user_info.jsp這個頁面。
boolean mark=service.insertUser(user);
//返回提示信息到頁面
if(mark){
request.setAttribute("info", "用戶信息添加成功!!!");
}else{
request.setAttribute("info", "用戶信息添加失敗!!!");
}
//轉發到頁面(重定向)user_info.jsp提示信息,成功或者失敗
request.getRequestDispatcher("/view/system/userinfo/user_info.jsp").forward(request, response);
2.1:最后轉發到user_info.jsp這個頁面之后又由js的window轉到userinfo_list.jsp這個顯示用戶信息的頁面。
window.location="view/system/userinfo/userinfo_list.jsp";
至此插入操作執行完畢
上面的插入操作的執行流程對應上一篇博客的插入操作。
由於代碼的不斷增加和修改,這里只寫改變的頁面和重要的代碼,但是詳細的代碼和注釋在上面的連接,里面都包含了,所需的jar包里面也有。
1:查詢操作的執行流程如下:
1.1:查詢頁面,選擇好查詢條件點擊查詢。跳轉到system/userinfoselect這個路徑的servlet3.0頁面
<form action="system/userinfoselect" class="form-inline" method="post"></form>
1.2:這里是post提交,但是需要注意的是要寫doSet()方法,然后this.doPost(request, response);到doPost頁面
//將表單提交的數據封裝到javabean的實體類中
UserInfo user=RequestBeanUtils.requestToSimpleBean(request, UserInfo.class);
//調用service業務邏輯層的代碼
UserInfoService service=new UserInfoServiceImpl();
//調用業務邏輯層的查詢方法selectUser,將返回的集合接受
List<UserInfo> list=service.selectUser(user);
1.3:servlet3.0調用了service業務邏輯層的selectUser查詢方法,之后service業務邏輯層的查詢方法,返回到dao層
return dao.selectUser(sql.toString(), list.toArray());
1.4:dao層返回集合return list;返回到service業務邏輯層。
1.5:然后service業務邏輯層將集合返回到servlet層。然后servlet層
1.6:servlet3.0層轉發到 userinfo_list.jsp這個頁面,就將查詢的結果顯示在這個頁面。
request.getRequestDispatcher("/view/system/userinfo/userinfo_list.jsp").forward(request, response);
至此查詢就查詢成功了,當然這只是簡答把流程介紹了一下,詳細的可以看上面連接的完整代碼。有時間將使用的一些小技術介紹一下。
查詢操作由於提取公共的方法不是很方便,所以先從dao層開始寫數據訪問層:
1:查詢操作的數據訪問層dao層,需要注意的是這里dao層和service層都是先寫接口,后寫實現接口,由於接口就幾個方法,所以這里省去。
1 package com.bie.system.dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.util.ArrayList; 7 import java.util.List; 8 9 import com.bie.po.UserInfo; 10 import com.bie.system.dao.UserInfoDao; 11 import com.bie.utils.DbUtils; 12 13 /*** 14 * 2.2:實現查詢的接口 15 * @author biehongli 16 * 17 */ 18 public class UserInfoDaoImpl implements UserInfoDao{ 19 20 @Override 21 public List<UserInfo> selectUser(String sql, Object[] arr) { 22 Connection con=null; 23 PreparedStatement ps=null; 24 ResultSet rs=null; 25 List<UserInfo> list=null; 26 try{ 27 con=DbUtils.getCon();//連接數據庫 28 ps=con.prepareStatement(sql);//預編譯 29 //為查詢條件設置值,如為第一個設置為什么,為第二個設置為什么 30 if(arr!=null && arr.length>0){ 31 for(int i=0;i<arr.length;i++){ 32 ps.setObject(i+1, arr[i]); 33 } 34 } 35 //執行sql語句 36 rs=ps.executeQuery(); 37 list=new ArrayList<UserInfo>(); 38 //根據查詢條件,從數據庫匹配適合的條件,然后設置這個條件的全部信息 39 while(rs.next()){ 40 UserInfo user=new UserInfo(); 41 user.setUserId(rs.getInt("user_id")); 42 user.setUserAccount(rs.getString("user_account")); 43 user.setUserPw(rs.getString("user_pw")); 44 user.setUserNumber(rs.getString("user_number")); 45 user.setUserName(rs.getString("user_name")); 46 user.setUserAge(rs.getInt("user_age")); 47 user.setUserSex(rs.getString("user_sex")); 48 //user.setUserMark(rs.getString("user_mark")); 49 //根據判斷看是否是管理員或者普通會員 50 if("0".equals(rs.getString("user_mark"))){ 51 user.setUserMark("普通會員"); 52 } 53 if("1".equals(rs.getString("user_mark"))){ 54 user.setUserMark("管理員"); 55 } 56 //將user對象封裝到集合中 57 list.add(user); 58 } 59 //將封裝到集合中的查詢條件返回 60 return list; 61 }catch(Exception e){ 62 e.printStackTrace(); 63 }finally{ 64 //關閉資源,避免出現問題 65 DbUtils.getClose(con, ps, rs); 66 } 67 return null; 68 } 69 70 71 }
2:查詢操作的service業務邏輯層,這個是在插入操作的基礎上加了一個查詢方法。
1 package com.bie.system.service.impl; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.bie.po.UserInfo; 7 import com.bie.system.dao.UserInfoDao; 8 import com.bie.system.dao.impl.UserInfoDaoImpl; 9 import com.bie.system.service.UserInfoService; 10 import com.bie.utils.DbUtils; 11 import com.bie.utils.MarkUtils; 12 /*** 13 * 1.4:這是業務邏輯層的實現類,實現用戶信息的接口 14 * 15 * 切忌新手寫好service業務邏輯層需要test測試(junit) 16 * @author biehongli 17 * 18 */ 19 public class UserInfoServiceImpl implements UserInfoService{ 20 21 private UserInfoDao dao=new UserInfoDaoImpl(); 22 @Override 23 public boolean insertUser(UserInfo user) { 24 try{ 25 //System.out.println(user);//測試傳來的UserInfo里面是否夠存在用戶信息 26 if(user!=null && user.getUserAccount()!=null){ 27 String sql="INSERT INTO user_info(user_account,user_pw," 28 + "user_number,user_name,user_age,user_sex,user_mark)" 29 + " VALUES(?,?,?,?,?,?,?)"; 30 List<Object> list=new ArrayList<Object>(); 31 //可以理解位將實體類中get到的信息放到數據庫中,因為set設置的信息就是為了查到數據庫中 32 list.add(user.getUserAccount());//將設置好的賬號信息保存到集合中 33 list.add(user.getUserPw());//將設置好的賬號信息保存到集合中 34 list.add(user.getUserNumber());//將設置好的密碼信息保存到集合中 35 list.add(user.getUserName());//將設置好的姓名信息保存到集合中 36 list.add(user.getUserAge());//將設置好的年齡信息保存到集合中 37 list.add(user.getUserSex());//將設置好的性別信息保存到集合中 38 //list.add(user.getUserMark());//將設置好的標識信息保存到集合中 39 //后台只可以添加管理員 40 user.setUserMark(MarkUtils.USER_MARK_MANAGER); 41 //將設置為默認的管理員添加到數據庫 42 list.add(user.getUserMark()); 43 44 //將封裝到集合list中的信息和sql語句傳遞到DbUtils封裝好的 方法中 45 //這里sql轉化位String語句,list轉化位數組類型 46 int count=DbUtils.addAndUpdate(sql.toString(), list.toArray()); 47 //System.out.println(count);//測試返回值是0還是1 48 if(count>0){ 49 return true;//成功返回true 50 }else{ 51 return false;//失敗返回false 52 } 53 } 54 }catch(Exception e){ 55 e.printStackTrace(); 56 } 57 return false; 58 } 59 60 @Override 61 public List<UserInfo> selectUser(UserInfo user) { 62 //使用StringBuffer進行字符串的拼接,不使用String 63 //StringBuffer sql=new StringBuffer("select * from user_info where 1=1 "); 64 StringBuffer sql=new StringBuffer("select * from user_info where 1=1 "); 65 //設置集合,用戶存放用戶信息設置值的時候使用 66 List<Object> list=null; 67 //判斷用戶的信息不為空的時候 68 if(user!=null){ 69 list=new ArrayList<Object>(); 70 //按照賬號查詢,如果賬號不為null且不為空 71 if(user.getUserAccount()!=null && !user.getUserAccount().equals("")){ 72 sql.append(" and user_account=?"); 73 list.add(user.getUserAccount()); 74 } 75 //按照姓名查詢,如果姓名不為null且不為空 76 if(user.getUserName()!=null && !user.getUserName().equals("")){ 77 sql.append(" and user_name like ?"); 78 //模糊查詢這樣拼接字符串 79 list.add("%"+user.getUserName()+"%"); 80 } 81 //按照標識查詢,如果標識不為null且不為空 82 if(user.getUserMark()!=null && !user.getUserMark().equals("")){ 83 sql.append(" and user_mark=?"); 84 list.add(user.getUserMark()); 85 } 86 } 87 88 sql.append(" order by user_id desc"); 89 //返回的參數,sql語句是字符類型,集合轉化為數組類型 90 return dao.selectUser(sql.toString(), list.toArray()); 91 } 92 93 94 }
3:查詢操作的servlet層
1 package com.bie.system.servlet; 2 3 import java.io.IOException; 4 import java.util.List; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.annotation.WebServlet; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 import com.bie.po.UserInfo; 13 import com.bie.system.service.UserInfoService; 14 import com.bie.system.service.impl.UserInfoServiceImpl; 15 import com.my.web.servlet.RequestBeanUtils; 16 /*** 17 * 2.3:點擊用戶管理,先調轉到這個servlet,查詢出數據庫的信息,並且顯示在頁面上面 18 * @author biehongli 19 * 20 */ 21 @WebServlet("/system/userinfoselect") 22 public class UserInfoSelectServlet extends HttpServlet{ 23 24 private static final long serialVersionUID = 1L; 25 26 @Override 27 protected void doGet(HttpServletRequest request, HttpServletResponse response) 28 throws ServletException, IOException { 29 this.doPost(request, response); 30 } 31 32 @Override 33 protected void doPost(HttpServletRequest request, HttpServletResponse response) 34 throws ServletException, IOException { 35 //將表單提交的數據封裝到javabean的實體類中 36 UserInfo user=RequestBeanUtils.requestToSimpleBean(request, UserInfo.class); 37 //調用service業務邏輯層的代碼 38 UserInfoService service=new UserInfoServiceImpl(); 39 //調用業務邏輯層的查詢方法selectUser,將返回的集合接受 40 List<UserInfo> list=service.selectUser(user); 41 //將上面的集合和user對象設置在域中,方便userinfo_list.jsp調用 42 request.setAttribute("list", list); 43 request.setAttribute("user", user); 44 //將轉發到userinfo_list.jsp這個頁面 45 request.getRequestDispatcher("/view/system/userinfo/userinfo_list.jsp").forward(request, response); 46 } 47 48 49 }
4:開始寫了后台處理,現在寫前台頁面的代碼和詳細實現。
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <% 4 //獲取絕對路徑路徑 5 String path = request.getContextPath(); 6 String basePath = request.getScheme() + "://" 7 + request.getServerName() + ":" + request.getServerPort() 8 + path + "/"; 9 %> 10 <%@ taglib prefix="d" uri="http://displaytag.sf.net"%> 11 <!DOCTYPE html> 12 <html> 13 <head> 14 <base href="<%=basePath %>" /> 15 <meta charset="UTF-8"> 16 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 17 <title>用戶管理-用戶查詢</title> 18 <link href="resource/css/bootstrap.min.css" rel="stylesheet" /> 19 <script type="text/javascript" src="resource/js/jquery.min.js"></script> 20 <script type="text/javascript" 21 src="resource/js/bootstrap.min.js"></script> 22 </head> 23 <body> 24 <div> 25 <ul class="breadcrumb" style="margin: 0px;"> 26 <li>系統管理</li> 27 <li>用戶管理</li> 28 <li>用戶查詢</li> 29 </ul> 30 </div> 31 <form action="system/userinfoselect" class="form-inline" method="post"> 32 <div class="row alert alert-info" style="margin: 0px; padding: 5px;"> 33 <div class="form-group"> 34 <label>賬號:</label> 35 <input type="text" name="userAccount" value="${user.userAccount }" class="form-control" placeholder="請輸入查詢賬號" /> 36 <label>姓名:</label> 37 <input type="text" name="userName" value="${user.userName }" class="form-control" placeholder="請輸入查詢姓名" /> 38 <select class="form-control" name="userMark"> 39 <option value="">全部</option> 40 <option value="0" ${user.userMark=='0'?'selected':'' }>普通會員</option> 41 <option value="1" ${user.userMark=='1'?'selected':'' }>管理員</option> 42 </select> 43 </div> 44 <input type="submit" class="btn btn-danger" value="查詢"> <a 45 href="view/system/userinfo/userinfo_add.jsp" class="btn btn-success">添加用戶</a> 46 </div> 47 <div class="row" style="padding: 15px;"> 48 <d:table name="list" pagesize="5" requestURI="system/userinfoselect" class="table table-hover table-condensed"> 49 <d:column property="userId" title="用戶編號"></d:column> 50 <d:column property="userAccount" title="用戶賬號"></d:column> 51 <d:column property="userPw" title="用戶密碼"></d:column> 52 <d:column property="userNumber" title="用戶學號"></d:column> 53 <d:column property="userName" title="用戶姓名"></d:column> 54 <d:column property="userAge" title="用戶年齡"></d:column> 55 <d:column property="userSex" title="用戶性別"></d:column> 56 <d:column property="userMark" title="用戶標識"></d:column> 57 58 </d:table> 59 <!-- <table class="table table-hover table-condensed"> 60 <tr> 61 <th>用戶編號</th> 62 <th>用戶賬號</th> 63 <th>用戶密碼</th> 64 <th>用戶姓名</th> 65 <th>用戶性別</th> 66 <th>用戶年齡</th> 67 <td>操作</td> 68 </tr> 69 <tr> 70 <td>1001</td> 71 <td>admin123</td> 72 <td>123456</td> 73 <td>高富帥</td> 74 <td>男</td> 75 <td>20</td> 76 <td><a href="view/system/userinfo/userinfo_update.jsp">修改</a> 刪除</td> 77 </tr> 78 </table> --> 79 </div> 80 </form> 81 </body> 82 </html>
5:點擊添加用戶操作就可以看到下面這個頁面了;
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <% 4 //獲取絕對路徑路徑 5 String path = request.getContextPath(); 6 String basePath = request.getScheme() + "://" 7 + request.getServerName() + ":" + request.getServerPort() 8 + path + "/"; 9 %> 10 <!DOCTYPE html> 11 <html> 12 <head> 13 <base href="<%=basePath %>" /> 14 <meta charset="UTF-8"> 15 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 16 <title>用戶管理-用戶添加</title> 17 <link href="resource/css/bootstrap.min.css" rel="stylesheet" /> 18 <script type="text/javascript" src="resource/js/jquery.min.js"></script> 19 <script type="text/javascript" 20 src="resource/js/bootstrap.min.js"></script> 21 </head> 22 <body> 23 <div> 24 <ul class="breadcrumb" style="margin: 0px;"> 25 <li>系統管理</li> 26 <li>用戶管理</li> 27 <li>用戶添加</li> 28 </ul> 29 </div> 30 <form action="system/userinfoinsert" class="form-horizontal" method="post"> 31 <h5 class="page-header alert-info" 32 style="margin: 0px; padding: 10px; margin-bottom: 10px;">基本信息</h5> 33 <!-- 開始1 --> 34 <div class="row"> 35 <div class="col-xs-5"> 36 <div class="form-group "> 37 <label class="col-xs-3 control-label">用戶學號</label> 38 <div class="col-xs-9 "> 39 <input type="text" name="userNumber" class="form-control" placeholder="請輸入用戶學號" /> 40 </div> 41 </div> 42 </div> 43 <div class="col-xs-5"> 44 <div class="form-group "> 45 <label class="col-xs-3 control-label">用戶姓名</label> 46 <div class="col-xs-9 "> 47 <input type="text" name="userName" class="form-control" placeholder="請輸入用戶姓名" /> 48 </div> 49 </div> 50 </div> 51 </div> 52 <!--結束1 --> 53 <!-- 開始2 --> 54 <div class="row"> 55 <div class="col-xs-5"> 56 <div class="form-group "> 57 <label class="col-xs-3 control-label">用戶年齡</label> 58 <div class="col-xs-9 "> 59 <input type="text" name="userAge" class="form-control" placeholder="請輸入用戶年齡" /> 60 </div> 61 </div> 62 </div> 63 <div class="col-xs-5"> 64 <div class="form-group "> 65 <label class="col-xs-3 control-label">用戶性別</label> 66 <div class="col-xs-3 "> 67 <select class="form-control" name="userSex"> 68 <option>保密</option> 69 <option>男</option> 70 <option>女</option> 71 </select> 72 </div> 73 </div> 74 </div> 75 76 </div> 77 <!--結束2 --> 78 79 80 <h5 class="page-header alert-info" 81 style="margin: 0px; padding: 10px; margin-bottom: 10px;">賬號信息</h5> 82 <!-- 開始5 --> 83 <div class="row"> 84 <div class="col-xs-5"> 85 <div class="form-group "> 86 <label class="col-xs-3 control-label">用戶賬號</label> 87 <div class="col-xs-9"> 88 <input type="text" name="userAccount" class="form-control" placeholder="請輸入用戶賬號" /> 89 </div> 90 </div> 91 </div> 92 <div class="col-xs-5"> 93 <div class="form-group "> 94 <label class="col-xs-3 control-label">用戶密碼</label> 95 <div class="col-xs-9 "> 96 <input type="text" name="userPw" class="form-control" placeholder="請輸入用戶密碼" /> 97 </div> 98 </div> 99 </div> 100 </div> 101 <!--結束5 --> 102 103 <div class="row"> 104 <div class="col-xs-3 col-xs-offset-4"> 105 <input type="submit" class="btn btn-success" value="保存用戶" /> <input 106 type="reset" class="btn btn-danger" value="重置信息" /> 107 </div> 108 109 </div> 110 111 </form> 112 </body> 113 </html>
6:這個是提示信息的頁面;
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <% 4 //獲取絕對路徑路徑 5 String path = request.getContextPath(); 6 String basePath = request.getScheme() + "://" 7 + request.getServerName() + ":" + request.getServerPort() 8 + path + "/"; 9 %> 10 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 11 <html> 12 <head> 13 <base href="<%=basePath %>" /> 14 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 15 <title>Insert title here</title> 16 </head> 17 <body> 18 <script type="text/javascript"> 19 //此頁面用來提示添加,修改,刪除信息的成功或者失敗的信息 20 alert('${info}');//提示信息,錯誤or成功 21 //跳轉到user_info.jsp查詢頁面,后面會修改為servlet 22 //window.location="view/system/userinfo/userinfo_list.jsp"; 23 //這句話的作用是當插入成功 的時候就可以顯示在頁面下 24 window.location="system/userinfoselect"; 25 </script> 26 </body> 27 </html>
7:額外說一下這個代碼是為了使使用分頁工具顯示中文的作用,詳細的上面連接給的代碼里面有詳細的說明;
1 basic.empty.showtable=true 2 basic.show.header=true 3 4 # page | list 5 sort.amount=list 6 7 export.amount=list 8 export.decorated=true 9 10 paging.banner.group_size=8 11 paging.banner.placement=bottom 12 13 14 css.tr.even=even 15 css.tr.odd=odd 16 css.th.sorted=sorted 17 css.th.ascending=order1 18 css.th.descending=order2 19 css.table= 20 css.th.sortable=sortable 21 22 # factory classes for extensions 23 factory.requestHelper=org.displaytag.util.DefaultRequestHelperFactory 24 25 # factory class for decorators 26 factory.decorator=org.displaytag.decorator.DefaultDecoratorFactory 27 28 # locale provider (Jstl provider by default) 29 locale.provider=org.displaytag.localization.I18nJstlAdapter 30 31 # locale.resolver (nothing by default, simply use locale from request) 32 #locale.resolver= 33 34 export.types=csv excel xml pdf 35 36 export.csv.class=org.displaytag.export.CsvView 37 export.excel.class=org.displaytag.export.ExcelView 38 export.xml.class=org.displaytag.export.XmlView 39 export.pdf.class=org.displaytag.export.PdfView 40 41 export.csv=false 42 export.csv.label=<span class="export csv">CSV </span> 43 export.csv.include_header=false 44 export.csv.filename= 45 46 export.excel=true 47 export.excel.label=<span class="export excel">Excel </span> 48 export.excel.include_header=true 49 export.excel.filename= 50 51 export.xml=false 52 export.xml.label=<span class="export xml">XML </span> 53 export.xml.filename= 54 55 export.pdf=false 56 export.pdf.label=<span class="export pdf">PDF </span> 57 export.pdf.include_header=true 58 export.pdf.filename= 59 60 export.rtf=false 61 export.rtf.label=<span class="export rtf">RTF </span> 62 export.rtf.include_header=true 63 export.rtf.filename= 64 65 # messages 66 67 basic.msg.empty_list=\u6ca1\u6709\u53ef\u4ee5\u663e\u793a\u7684\u6570\u636e. 68 basic.msg.empty_list_row=<tr class="empty"><td colspan="{0}">\u6ca1\u6709\u53ef\u4ee5\u663e\u793a\u7684\u6570\u636e.</td></tr> 69 error.msg.invalid_page=\u975e\u6cd5\u9875\u9762 70 71 export.banner=<div class="exportlinks">\u8f93\u51fa\u683c\u5f0f: {0}</div> 72 export.banner.sepchar= | 73 74 paging.banner.item_name= 75 paging.banner.items_name= 76 77 paging.banner.no_items_found=<span class="pagebanner">\u6ca1\u6709\u603b\u5171\u8bb0\u5f55.</span> 78 paging.banner.one_item_found=<span class="pagebanner">\u603b\u5171\u4e00\u6761\u8bb0\u5f55.</span> 79 paging.banner.all_items_found=<span class="pagebanner">\u603b\u5171{0}{1}\u6761\u8bb0\u5f55.</span> 80 paging.banner.some_items_found=<span class="pagebanner">\u603b\u5171{0}{1}\u6761\u6570\u636e</span> 81 82 paging.banner.full=<span class="pagelinks"><a href="{1}">\u9996\u9875</a> <a href="{2}">\u4e0a\u4e00\u9875</a> <a href="{3}">\u4e0b\u4e00\u9875</a> <a href="{4}">\u5c3e\u9875</a> <select class="pagelinks" name="page" onchange="location=page.value">{0}</select></span> 83 paging.banner.first=<span class="pagelinks">\u9996\u9875 \u4e0a\u4e00\u9875 <a href="{3}">\u4e0b\u4e00\u9875</a> <a href="{4}">\u5c3e\u9875</a> <select class="pagelinks" name="page" onchange="location=page.value">{0}</select></span> 84 paging.banner.last=<span class="pagelinks"><a href="{1}">\u9996\u9875</a> <a href="{2}">\u4e0a\u4e00\u9875</a> \u4e0b\u4e00\u9875 \u5c3e\u9875 <select class="pagelinks" name="page" onchange="location=page.value">{0}</select></span> 85 paging.banner.onepage=<span class="pagelinks">\u5171\u4e00\u9875</span> 86 87 paging.banner.page.selected=<option value="#" selected>{0}</option> 88 #<strong>{0}</strong> 89 paging.banner.page.link=<option value="{1}">{0}</option> 90 # <input size='2'> <input type='button' value='Go'> 91 #<a href="{1}" title="Go to page {0}">{0}</a> 92 paging.banner.page.separator= 93 #, \ 94 95 # external sort and pagination 96 pagination.sort.param=sort 97 pagination.sortdirection.param=dir 98 pagination.pagenumber.param=page 99 pagination.searchid.param=searchid 100 pagination.sort.asc.value=asc 101 pagination.sort.desc.value=desc 102 pagination.sort.skippagenumber=true 103 104 # unused 105 save.excel.banner=<a href="{0}" rel="external">save ({1} bytes)</a> 106 save.excel.filename=export.xls
下面演示一個執行的效果:打開index.jsp就是這個效果:
點擊系統管理的用戶管理就是這個效果:
點擊添加用戶可以添加用戶,顯示頁面如下所示:
保存信息之后就顯示在頁面上了,並且是最后插入的信息保存在最上面:
這個是查詢操作的演示,演示如下: