1. 程式人生 > >servlet的增刪改查

servlet的增刪改查

這是一個簡單的servlet增刪改查介面

t3.sql資料庫:

/*
SQLyog 企業版 - MySQL GUI v8.14 
MySQL - 5.5.25a : Database - test
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @
[email protected]
@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `test`; /*Table structure for table `t3` */ DROP TABLE IF EXISTS `t3`; CREATE TABLE `t3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `password` varchar(32) DEFAULT NULL, `userName` varchar(32) DEFAULT NULL, `sex` varchar(5) DEFAULT NULL, `age` int(2) DEFAULT NULL, `address` varchar(1024) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8; /*Data for the table `t3` */ insert into `t3`(`id`,`password`,`userName`,`sex`,`age`,`address`) values (1,'23','123','女',12,' '),(36,'5345423','李四','男',12,'沙河'),(37,'654321','admin','男',30,'中國北京'),(38,'123456','admin2','女',28,'中國北京'),(39,'654321','admin','男',29,'中國河北'),(40,'123456','admin3','男',29,'中國河北'),(41,'12345678','admin4','男',29,'中國河北'),(42,'123','張三','男',22,'中國'),(43,'12345','王五','男',32,'山東濟南'),(44,'123456','老劉','男',33,'中國河南'),(45,'654321','老劉','男',33,'中國河南'),(46,'123','老王','男',33,'中國河南'),(48,'12345678','老八','男',21,'234'),(49,'456123','admin','女',21,'123456'); /*!40101 SET
[email protected]
_SQL_MODE */; /*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */; /*!40014 SET [email protected]_UNIQUE_CHECKS */; /*!40111 SET [email protected]_SQL_NOTES */;


servletAction.java原始碼:

package com.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.service.stuInfoService;

@SuppressWarnings("serial")
public class servletAction extends HttpServlet {
	
	//匯入service服務包
	stuInfoService stuinfoService=new stuInfoService();
	
	//影響行數預設為-1,因為資料操作後的返回結果不為-1
	private int i=-1;
	
	//建立list陣列
	private List list=null;
	
	//設定初始狀態
	private boolean state=false;

	/*
	 * servlet action
	 * */
	public servletAction() {
		super();
	}

	/*
	 * servlet銷燬方法
	 * */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/*
	 * doGet方法
	 * */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		//如果是get方法,自動帶引數跳轉到post()方法
		doPost(request, response);
		
	}

	/*
	 * doPost()方法
	 * */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		//設定頁面編碼格式為utf-8
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		
		//獲取頁面路徑請求引數action
		String action=request.getParameter("action");
		
		//根據頁面路徑請求引數判斷應該跳轉的頁面
		if(action.equals("insert")){
			
			//跳轉到插入頁面
			insert(request,response);
			
		}else if(action.equals("delete")){
			
			//跳轉到刪除頁面
			delete(request,response);
			
		}else if(action.equals("update")){
			
			//跳轉到修改頁面
			update(request,response);
			
		}else if(action.equals("select")){
			
			//跳轉到查詢頁面
			select(request,response);
			
		}
		
	}

	/*
	 * 查詢方法
	 * */
	private void select(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException,ServletException, IOException {
		// TODO Auto-generated method stub
		
		//設定頁面編碼格式為utf-8
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		System.out.println("這裡是查詢方法!");
		
		//獲取頁面請求引數
		String userName=request.getParameter("userName");
		String password=request.getParameter("password");
		String sex=request.getParameter("sex");
		String age=request.getParameter("age");
		String address=request.getParameter("address");
		
		//判斷性別是否則”請選擇“,如果是則置空,因為性別中只有”男“,”女“,沒有”請選擇“
		if("請選擇".equals(sex)){
		
			sex="";	
			System.out.println("sex:"+sex);
			
		}
		
		//在控制檯打印出來頁面傳遞過來的引數
		System.out.println("userName:"+userName+"   password:"+password+"   sex:"+sex+"   age:"+age+"   address:"+address);
		
		//穿點String陣列,方便引數呼叫
		String[] keyOption=new String[]{"userName","password","sex","age","address"};
		String[] valOption=new String[]{userName,password,sex,age,address};
		
		//迴圈遍歷頁面引數
		for(int i=0;i<valOption.length;i++){
			
			//判斷頁面傳遞來的引數是否存在,如果不存在則置空
			if(null==valOption[i]){
				valOption[i]="";
			}
			
		}
		
		//查詢方法,獲取mysql資料庫的返回結果陣列
		list=stuinfoService.select(keyOption,valOption);
		
		//將servlet獲取的查詢結果列印到控制檯
		System.out.println("姓名"+"     密碼"+"     性別"+"     年齡"+"     地址");
		
		//判斷獲取的來自mysql資料庫的陣列是否存在
		if(list!=null){
			
			//判斷list陣列是否為空
			if(list.size()>0){
				
				//迴圈遍歷list陣列
				for(int i=0;i<list.size();i++){
					
					//建立Map陣列接受list傳遞來的每一行引數
					Map<String,String> map=(Map<String, String>) list.get(i);
					
					//在控制檯打印出每一行陣列
					System.out.println(map.get("userName")+"  "+map.get("password")+"  "+map.get("sex")+"  "+map.get("age")+"  "+map.get("address"));
					
				}
				
			}else{
				
				System.out.println("這裡是select()方法,list陣列為空!");
				
			}
			
		}else{
			
			System.out.println("這裡是select()方法,list陣列不存在!");
		
		}
		
		//將查詢結果列印到前臺介面
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>Select Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.println("<table>");
		
		//在servlet頁面打印出每一行的航標題
		out.println("<tr>  <th>姓名</th>  <th>密碼</th>  <th>性別</th>  <th>年齡</th>   <th>地址</th>  </tr>");
		
		//判斷list陣列是否存在
		if(list!=null){
			
			//判斷list陣列是否為空
			if(list.size()>0){
				
				//迴圈遍歷list陣列
				for(int i=0;i<list.size();i++){
					
					//建立Map容器接收list傳遞來的每一行引數
					Map<String,String> map=(Map<String, String>) list.get(i);
					
					//打印出每一行的結果
					
					out.println("<tr>");
					
					out.println("<th>");
					out.println(map.get("userName"));
					out.println("</th>");
					
					out.println("<th>");
					out.println(map.get("password"));
					out.println("</th>");
					
					out.println("<th>");
					out.println(map.get("sex"));
					out.println("</th>");
					
					out.println("<th>");
					out.println(map.get("age"));
					out.println("</th>");
					
					out.println("<th>");
					out.println(map.get("address"));
					out.println("</th>");
					
					out.println("</tr>");
					
				}
				
			}else{
				
				System.out.println("這裡是select()方法,list陣列為空!");
				
			}
			
		}else{
			
			System.out.println("這裡是select()方法,list陣列不存在!");
			
		}
		
		out.println("</table>");
		
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
		
	}

	/*
	 * 修改方法
	 * */
	private void update(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException,ServletException, IOException {
		// TODO Auto-generated method stub
		
		//設定頁面編碼格式為utf-8
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		
		System.out.println("這裡是update方法");
		
		//獲取頁面請求引數
		String userName=request.getParameter("userName");
		String upOption=request.getParameter("upOption");
		String upValue=request.getParameter("upValue");
		
		//在控制檯打印出獲取的頁面引數
		System.out.println("userName:"+userName+"   upOption:"+upOption+"   upValue:"+upValue);
		
		//判斷upOption是否為”請選擇“
		if("請選擇".equals(upOption)){
			
			//如果引數是”請選擇“,則認為沒有任何引數,所以說不進行任何操作,自動返回原始頁面
			response.sendRedirect("index.jsp");
			
		}else{
			
			//判斷upValue引數是否存在
			if(upValue!=null){
				
				//判斷upValue引數是否為空
				if("".equals(upValue)){
					
					//如果為空,不進行任何操作,直接返回原始頁面
					response.sendRedirect("index.jsp");
					
					System.out.println("upValue引數為空!");
					
				}else{
					
					//將獲取的下拉列表漢語資訊轉換成對應的字串
					if("姓名".equals(upOption)){
						upOption="userName";
					}else if("密碼".equals(upOption)){
						upOption="password";
					}else if("性別".equals(upOption)){
						upOption="sex";
					}else if("年齡".equals(upOption)){
						upOption="age";
					}else if("地址".equals(upOption)){
						upOption="address";
					}
					
					//在控制檯打印出轉換引數後的結果
					System.out.println("userName:"+userName+"   upOption:"+upOption+"   upValue:"+upValue);
					
					//執行修改資料庫操作,返回影響行數
					i=stuinfoService.update(userName,upOption,upValue);
					
					//根據返回的影響行數判斷資料是否插入成功
					if(i!=-1){
						System.out.println("這裡是update()方法,資料修改成功!");
					}else{
						System.out.println("這裡是update()方法,資料修改失敗!");
					}
					
					//修改後自動跳轉到查詢方法,方便自己檢視修改的引數結果
					response.sendRedirect("servletAction?action=select");
					
				}
				
			}else{
				
				//如果不存在,不進行任何操作,直接返回原始頁面
				response.sendRedirect("index.jsp");
				
				System.out.println("upValue引數並不存在!");
				
			}
			
		}
		
	}
	
	/*
	 * 資料刪除方法
	 * */
	private void delete(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException,ServletException, IOException {
		// TODO Auto-generated method stub
		
		System.out.println("這裡是刪除方法!");
		
		//這隻頁面編碼格式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		
		//獲取頁面請求引數
		String delOption=request.getParameter("delOption");
		String delValue=request.getParameter("delValue");
		
		//列印獲取的頁面請求引數
		System.out.println("delOption:"+delOption+"      delValue:"+delValue);
		
		//將jsp頁面傳來的引數轉換成與資料庫對應的引數
		if("id".equals(delOption)){
			delOption="id";
		}else if("姓名".equals(delOption)){
			delOption="userName";
		}else if("密碼".equals(delOption)){
			delOption="password";
		}else if("性別".equals(delOption)){
			delOption="sex";
		}else if("年齡".equals(delOption)){
			delOption="age";
		}else if("地址".equals(delOption)){
			delOption="address";
		}
		
		//其實以前我建立的是Object,但是後來為了方便對sql語句的拼接,所以就改成了String型別,所以說這裡用哪種都是一樣能用的
		String deleteOption=delOption;
		String deleteValue=delValue;
		
		//列印對應的Object或者是String
		System.out.println("deleteOption:"+deleteOption+"   deleteValue:"+deleteValue);
		
		//執行刪除方法,獲取影響行數
		i=stuinfoService.delete(deleteOption,deleteValue);
		
		//判斷資料是否刪除成功
		if(i!=-1){
			System.out.println("這裡是delete()方法,資料刪除成功!");
		}else{
			System.out.println("這裡是delete()方法,資料刪除失敗!");
		}
		
		//刪除後自動跳轉到查詢方法,方便對於刪除結果的檢視
		response.sendRedirect("servletAction?action=select");
		
	}

	/*
	 * 插入方法
	 * */
	private void insert(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException,ServletException, IOException,NullPointerException {
		// TODO Auto-generated method stub
		
		//設定頁面編碼格式為utf-8
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		
		System.out.println("這裡是插入介面!");
		
		//獲取頁面請求引數
		String userName=request.getParameter("userName");
		String password=request.getParameter("password");
		String sex=request.getParameter("sex");
		String age=request.getParameter("age");
		String address=request.getParameter("address");
		
		//判斷userName是否存在
		if(userName!=null){
			
			//判斷userName是否為空
			if("".equals(userName)){
				state=true;
			}
			
		}else{
			state=true;
		}
		
		//判斷password是否存在
        if(password!=null){
			
        	//判斷password是否為空
			if("".equals(password)){
				state=true;
			}
			
		}else{
			state=true;
		}
        
        //判斷sex是否存在
        if(sex!=null){
			
        	//判斷sex是否為空
			if("".equals(sex)){
				state=true;
			}
			
		}else{
			state=true;
		}
        
        //判斷age是否存在
        if(age!=null){
			
        	//判斷age是否為空
			if("".equals(age)){
				state=true;
			}
			
		}else{
			state=true;
		}
		
        //判斷address是否存在
        if(address!=null){
			
        	//判斷address是否為空
			if("".equals(address)){
				state=true;
			}
			
		}else{
			state=true;
		}
		
		/*//判斷插入的資料是否存在
		if((userName!=null)&&(password!=null)&&(sex!=null)&&(age!=null)&&(address!=null)){
			
			//判斷插入的資料是否為空
			if(("".equals(userName))&&("".equals(password))&&("".equals(sex))&&("".equals(age))&&("".equals(address))){
				
				//改變狀態
				state=true;
				
			}
			
		}else{
			
			//改變狀態
			state=true;
			
		}*/
        
        if("true".equals(state)){
        	
        	response.sendRedirect("index.jsp");
        	
        }else{
        	
        	//在控制檯列印頁面請求引數
    		System.out.println("userName:"+userName+"   password:"+password+"   sex:"+sex+"   age:"+age+"   address:"+address);
        	
        }
		
		//在控制檯列印頁面請求引數
		System.out.println("userName:"+userName+"   password:"+password+"   sex:"+sex+"   age:"+age+"   address:"+address);
		
		//建立String[]陣列,接受頁面傳遞的引數
		String[] object=new String[]{userName,password,sex,age,address};
		
		//判斷引數是否存在
		if(object!=null){
			
			//判斷引數是否為空
			if(object.length>0){
				
				/*//迴圈遍歷object中的每一個元素
				//目的就是將插入的不完善資訊篩選出來
				for(int i=0;i<object.length;i++){
					
					//判斷每一個元素是否存在
					if(object[i]!=null){
						
						//判斷每一個元素是否為空
						if("".equals(object[i])){
							
							//改變state狀態為true
							state=true;
							
						}
						
					}else{
						
						//改變state狀態為true
						state=true;
						
					}
					
				}*/
				
				if("true".equals(state)){
					
					//說明插入資訊不全,不進行任何操作,直接返回原始頁面
					response.sendRedirect("index.jsp");
					
				}else{
					
					//執行插入方法,返回影響行數
					i=stuinfoService.insert(object);
					
					//根據影響行數判斷資料是否插入成功
					if(i!=-1){
						System.out.println("這裡是insert()方法,資料插入成功!");
					}else{
						System.out.println("這裡是insert()方法,資料插入失敗!");
					}
					
					//刪除後自動跳轉到查詢方法,方便檢視刪除結果
					response.sendRedirect("servletAction?action=select");
					
				}
				
			}else{
				
				//不進行任何操作,直接返回原始頁面
				response.sendRedirect("index.jsp");
				
				System.out.println("這裡是insert()方法,object為空陣列!");
				
			}
			
		}else{
			
			//不進行任何操作,直接返回原始頁面
			response.sendRedirect("index.jsp");
			
			System.out.println("這裡是insert()方法,object陣列不存在!");
			
		}
		
	}

	//servlet的初始化
	public void init() throws ServletException {
		// Put your code here
	}

}

mySqlConnection.java原始碼:

package com.dbdao.mysql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

public class mySqlConnection {
	
	//建立資料庫驅動名稱
	private static String Driver_class="com.mysql.jdbc.Driver";
	
	//資料庫連結地址
	private String url="jdbc:mysql://localhost:3306/test";
	
	//資料庫使用者名稱
	private String user="root";
	
	//資料庫密碼
	private String password="11";
	
	//資料庫連結
	private Connection con=null;
	
	//準備宣告sql語句
	private PreparedStatement pstmt=null;
	
	//結果集
	private ResultSet rs=null;
	
	//影響行數
	private int i;
	
	/*
	 * 建立驅動
	 * */
	static{
		
		try {
			Class.forName(Driver_class);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/*
	 * 載入驅動
	 * */
	@Test
	public void getConnect() {
		// TODO Auto-generated method stub
		try {
			con=DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//判斷資料庫是否載入成功
		if(con!=null){
			
			System.out.println("資料庫載入成功!");
			
		}else{
			
			System.out.println("資料庫載入失敗!");
			
		}
		
	}
	
	/*
	 * 執行sql語句
	 * */
	public void doSql(String sql,Object[] object) {
		// TODO Auto-generated method stub
		
		//判斷sql語句是否存在
		if(sql!=null){
			
			//載入驅動
			getConnect();
			
			//判斷object陣列是否存在
			if(object==null){
				
				//如果不存在,建立一個,防止出現空指標異常
				object=new Object[0];
				
			}

			try {
				
				//宣告一條準備的sql語句
				pstmt=con.prepareStatement(sql);
				
				//為Object物件一一賦值
				for(int i=0;i<object.length;i++){
					
					pstmt.setObject(i+1, object[i]);
					
				}
				
				//執行宣告的sql語句
				pstmt.execute();
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}else{
			
			System.out.println("sql語句並不存在!");
			
		}
	
	}
	
	/*
	 * 獲取結果集
	 * */
	public ResultSet getRS(){
		
		try {
			
			//獲取結果集方法
			rs=pstmt.getResultSet();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//返回結果集
		return rs;
		
	}
	
	/*
	 * 獲取影響行數
	 * */
	public int getUpdateCount() {
		// TODO Auto-generated method stub
		
		try {
			
			//獲取影響行數方法
			i=pstmt.getUpdateCount();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//返回影響行數
		return i;
		
	}
	
	/*
	 * 關閉方法
	 * */
	public void getClose() {
		// TODO Auto-generated method stub
		
		//關閉結果集
		try {
			
			//結果集關閉方法
			if(rs!=null){
				
				rs.close();
				
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			
			//關閉宣告的sql語句
			try {
				
				//關閉宣告的sql語句方法
				if(pstmt!=null){
					
					pstmt.close();
					
				}
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				
				//解除安裝驅動
				try {
					
					//驅動解除安裝方法
					if(con!=null){
						
						con.close();
						
					}
					
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
		}
	
	}
	
}

stuInfoService.java原始碼:
package com.service;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.dbdao.mysql.mySqlConnection;

public class stuInfoService {
	
	//匯入mySqlConnection類
	mySqlConnection mysqlCon=new mySqlConnection();
	
	//準備sql語句
	private String sql;
	
	//影響行數(資料變更後,影響行數都是大於0,等於0時沒變更,所以說如果變更失敗,那麼影響行數必定為負)
	private int i=-1;
	
	//結果集
	private ResultSet rs;
	
	//建立list陣列
	private List list=null;
	
	//判斷狀態
	private boolean state=false;
	
	/*
	 * 插入方法
	 * */
	@Test
	public int insert(String[] object) {
		// TODO Auto-generated method stub
		
		//建立sql語句
		sql="insert into t3 (userName,password,sex,age,address) values(?,?,?,?,?) ";
			
		//判斷Object陣列是否存在
		if(object!=null){
			
			//判斷Object陣列是否為空
			if(object.length>0){
				
				//執行插入方法
				mysqlCon.doSql(sql, object);
			
			}else{
				
				System.out.println("object是空陣列!");
			
			}
			
		}else{
			
			System.out.println("object陣列不存在!");
		
		}
		
		//獲取影響行數
		i=mysqlCon.getUpdateCount();
		
		//判斷是否插入成功
		if(i!=-1){	
			System.out.println("資料插入成功!");
		}else{
			System.out.println("資料插入失敗!");
		}
		
		//關閉連結
		mysqlCon.getClose();
		
		//返回影響行數
		return i;
		
	}
	
	/*
	 * 刪除資料
	 * */
	public int delete(String deleteOption, String deleteValue) {
		// TODO Auto-generated method stub
		
		//建立sql語句
		sql="delete from t3 where "+deleteOption+"="+"'"+deleteValue+"' ";
		
		//在控制檯列印拼接的sql語句
		System.out.println("sql語句為:"+sql);
		
		//執行sql語句
		mysqlCon.doSql(sql, null);
		
		//獲取影響行數
		i=mysqlCon.getUpdateCount();
		
		//判斷資料是否插入成功
		if(i!=-1){
			System.out.println("資料刪除成功!");
		}else{
			System.out.println("資料刪除失敗!");
		}
		
		//關閉連結
		mysqlCon.getClose();
		
		//返回影響行數
		return i;
		
	}

	/*
	 * 更新資料
	 * */
	@Test
	public int update(String userName, String upOption, String upValue) {
		// TODO Auto-generated method stub
		
		//建立sql語句
		sql="update t3 set "+upOption+"="+"'"+upValue+"'"+" where userName="+"'"+userName+"'";
		
		//在控制檯列印拼接的sql語句
		System.out.println("sql語句為:"+sql);

		//執行sql語句
		mysqlCon.doSql(sql, null);
		
		//獲取影響行數
		i=mysqlCon.getUpdateCount();
		
		//判斷資料是否更新成功
		if(i!=-1){
			System.out.println("資料更新成功!");
		}else{
			System.out.println("資料更新失敗!");
		}
		
		//關閉連結
		mysqlCon.getClose();
		
		//返回影響行數
		return i;
		
	}
	
	/*
	 * 遍歷資料
	 * */
	@SuppressWarnings("unchecked")
	@Test
	public List select(String[] keyOption, String[] valOption) {
		// TODO Auto-generated method stub
		
		//建立String字串,用於拼接sql的條件語句
        String condition="";
		
        //迴圈遍歷keyOption陣列
		for(int i=0;i<keyOption.length;i++){
			
			//判斷valOption[i]是否存在
            if(valOption[i].length()>0){
				
            	//拼接sql的條件語句
				condition=condition+keyOption[i]+"="+"'"+valOption[i]+"'"+" and ";
				
				//在控制檯逐條列印sql的條件語句
				System.out.println(condition);
				
			}
			
		}
		
		//拼接完成的sql條件語句
		System.out.println("語句的拼接結果:"+condition);
		
		//判斷condition是否為空
		if(condition.length()>0){
			
			//剪下拼接的sql條件語句
			condition=condition.substring(0,condition.length()-4);
			
		}
		
		//在控制檯打印出來剪下後的sql的條件拼接語句
		System.out.println("剪下後的condition語句為:"+condition);

		//繼續拼接成完整的sql語句
        sql="select * from t3 where "+condition;
		
        //在控制檯打印出來拼接的完整語句
		System.out.println("完整的sql語句為:"+sql);
		
		//迴圈遍歷valOption陣列
		for(int i=0;i<valOption.length;i++){
			
			//判斷valOption[i]元素是否為空
			if(valOption[i].length()>0){
				
				//如果不為空則將狀態置為true
				state=true;
				
			}
			
		}
		
		//判斷狀態
		if(true==state){
			
			//如果為TRUE則不進行任何操作
			sql=sql;
			
		}else{
			
			//如果為false則將sql語句置換成新語句
			sql="select * from t3";
			
		}
		
		//在控制檯打印出最適合的sql語句
		System.out.println("適合的sql語句為:"+sql);
		
		//執行sql語句
		mysqlCon.doSql(sql, null);
		
		//獲取結果集
		rs=mysqlCon.getRS();
		
		//判斷結果集是否為空
		if(rs!=null){
			
			try {
				
				//將游標移動到結果集末端,注意此處不能使用rs.afterLast();否則為空值。
				rs.last();
				
				//獲取結果集行數
				i=rs.getRow();
				
				//判斷結果集是否存在
				if(i>0){
					
					//將游標移動到結果集前端
					rs.beforeFirst();
					
					//建立list佇列
					list=new ArrayList();
					
					//迴圈遍歷所有行數
					while(rs.next()){
						
						//建立Map容器
						Map<String,String> map=new HashMap<String,String >();
						
						//遍歷每行元素的內容
						String userName=rs.getString("userName");
						String password=rs.getString("password");
						String sex=rs.getString("sex");
						String age=rs.getString("age");
						String address=rs.getString("address");
						
						//將獲取的引數放到Map容器中
						map.put("userName", userName);
						map.put("password", password);
						map.put("sex", sex);
						map.put("age", age);
						map.put("address", address);
						
						//將Map容器新增到list佇列中
						list.add(map);
						
						//在控制檯打印出每一行的結果
						System.out.println("userName:"+userName+"   password:"+password+"   sex:"+sex+"   age:"+age+"   address:"+address);
						
					}
					
				}else{
					
					System.out.println("結果集為空!");
					
				}
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}else{
			
			System.out.println("結果集不存在!");
			
		}
		
		//關閉連結
		mysqlCon.getClose();
		
		//返回list佇列
		return list;
		
	}

}

web.xml原始碼:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    
    <servlet-name>servletAction</servlet-name>
    <servlet-class>com.action.servletAction</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>servletAction</servlet-name>
    <url-pattern>/servletAction</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

index.jsp原始碼:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.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="styles.css">
	-->
  </head>
  
  <body>
  
   插入新的學生<br>
  <form action="servletAction?action=insert" method="post">
  姓名:<input type="text" name="userName">
  密碼:<input type="password" name="password">
  性別:<select name="sex">
  <option>男</option>
  <option>女</option>
  </select>
  年齡:<input type="text" name="age" size="5">
  地址:<input type="text" name="address">
  <input type="submit" value="確定"><input type="reset" value="重置">
  </form>
 修改學生資訊<br>
  <form action="servletAction?action=update" method="post">
  姓名:<input type="text" name="userName">
  <select name="upOption">
  <option>請選擇</option>
  <option>姓名</option>
   <option>密碼</option>
    <option>性別</option>
     <option>年齡</option>
      <option>地址</option>
  </select>
<input type="text" name="upValue" >
  <input type="submit" value="確定"><input type="reset" value="重置">
  </form>
  刪除學生資訊<br>
  <form action="servletAction?action=delete" method="post">
  <select name="delOption">
  <option>id</option>
  <option>姓名</option>
   <option>密碼</option>
    <option>性別</option>
     <option>年齡</option>
      <option>地址</option>
  </select>
<input type="text" name="delValue" >
  <input type="submit" value="確定"><input type="reset" value="重置">
  </form>
  
  查詢學生資訊<br>
  <form action="servletAction?action=select" method="post">
  姓名:<input type="text" name="userName">
  密碼:<input type="password" name="password">
  性別:<select name="sex">
  <option>請選擇</option>
  <option>男</option>
  <option>女</option>
  </select>
  年齡:<input type="text" name="age" size="5">
  地址:<input type="text" name="address">
  <input type="submit" value="確定"><input type="reset" value="重置">
  </form>
  
  </body>
</html>
執行介面:


查詢結果介面: