對于本篇需要總結的內容,量估計有點大,大家好好看哈,絕對全是干貨,代碼的已經運行測試,不存在問題,大家可以參考學習,下面開始本篇的內容。
1、添加數據到數據庫:
如何用戶在JSP頁面的填寫的信息輸入到MySQL數據庫呢?其實原理很簡單,就是我們在JSP頁面里添加一個form表單標簽,需要注意的是這里的action值填我們的用于與數據庫庫交互的select的地址,method標簽有兩個值可選:get和post,get方式的數據傳輸,不安全,傳輸的數據在地址欄可以看到,而post方式的傳輸就相對安全些,用戶填寫的數據不會顯式讓用戶看到。設置好form表單標簽后,當用戶填寫完表達后,點擊提交,用戶的填寫的表單數據將會傳輸給我們的select,這樣我們的select獲得到數據后,通過調用我們之前編輯好的添加數據方法,便可以把用戶的填寫的數據添加到數據庫。
jsp頁面代碼:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="error.html"%><%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>添加數據</title> <meta http-equiv="Words" content="添加數據"> <meta http-equiv="descr對于的select:
package com.mysql.jsp.select;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.mysql.jsp.manager.ManagerMaImp;import com.mysql.jsp.sever.StudentMaImp;import com.mysql.jsp.student.Student;public class add extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response);//調用doPsot()方法,把使用get方式傳輸的數據用doPost()方向接收 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8");//設置編碼方式 response.setCharacterEncoding("utf-8");//設置編碼方式 //這里使用了一個登錄驗證 String manager_name = (String)request.getsession().getAttribute("name");//獲得登錄用戶的用戶名 String manager_password = (String)request.getSession().getAttribute("password");//獲得登錄用戶的密碼 ManagerMaImp mmi = new ManagerMaImp(); boolean login = mmi.getByName(manager_name, manager_password);//驗證是否正確 if(!login){ request.setAttribute("news", "您還未登錄,請先登錄再進行操作"); request.getRequestDispatcher("Login.jsp").forward(request, response);//不正確跳轉到登錄頁 }else{ String name = request.getParameter("name");//獲得用戶填寫的姓名 String sex_ = request.getParameter("sex");//獲得用戶選擇的性別 int sex = 1; if(sex_.equals("女")){ sex = 0; } int year = Integer.parseInt(request.getParameter("year"));//獲得用戶填寫的年齡信息 String from = request.getParameter("from");//獲得用戶填寫的故鄉信息 String school = request.getParameter("school");//獲得用戶填寫的學校信息 //生成一個學生對象 Student student = new Student(); student.setName(name); student.setSex(sex); student.setYear(year); student.setFrom(from); student.setSchool(school); StudentMaImp smi = new StudentMaImp(); boolean flag = smi.add(student);//調用添加方法,將數據添加到數據庫 if(flag){ List<Student> list = new ArrayList<Student>(); list = smi.getAll(); request.setAttribute("list", list); request.getRequestDispatcher("All.jsp").forward(request, response); }else{ response.sendRedirect("Add.jsp"); } } }}對于向數據庫添加信息,就為大家總結完畢,加上前幾篇,我想大家應該已經明白如何通過JSP來做動態網站了吧。對于這里提到的是否登錄驗證,下面單獨聊一下。
3、登錄驗證:
這個功能大家應該遇到過很多,一般當我們在一些網站下載資料時,會有一個會員是否登錄驗證,只有你登錄了才能下載,這個小功能很簡單,但比較實用。下面我們就一起學習一下,這里用到了一個關鍵字:session,我們只需要在用戶登錄成功后,將用戶的賬戶和密碼通過requset方式進行一下聲明,之后我們就可以在任何頁面或select中得到。
聲明代碼:
request.getSession().setAttribute("name",name); request.getSession().setAttribute("password", password);調用代碼:
String manager_name = (String)request.getSession().getAttribute("name");//獲得登錄用戶的用戶名 String manager_password = (String)request.getSession().getAttribute("password");//獲得登錄用戶的密碼4、遍歷數據庫:
添加數據我們已經學會了,下面我們一起學一下,如何把數據庫中的所有數據遍歷后,通過JSP頁面為用戶顯示出來。
后臺select代碼:
StudentMaImp smi = new StudentMaImp(); List<Student> list = new ArrayList<Student>(); list = smi.getAll(); request.setAttribute("list", list); request.getRequestDispatcher("All.jsp").forward(request, response);JSP頁面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="error.html"%><%@page import="com.mysql.jsp.student.Student"%><%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>遍歷數據庫</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"> </head> <body> <% List<Student> list = (List<Student>)request.getAttribute("list"); %> <center> <h1>遍歷數據庫中的數據</h1> <hr/> <form action="get" method="post"> <table width="80%"> <tr> <td><a href="Add.jsp">添加</a></td><td> </td><td>精確查找:<input type="text" name="queding"/><%if(request.getAttribute("new1")!=null){ %><span style="color: red"><%=request.getAttribute("new1")%></span><% } %></td><td> </td><td>模糊查找:<input type="text" name="mohu"/><%if(request.getAttribute("new2")!=null){ %><span style="color: red"><%=request.getAttribute("new2")%></span><% } %></td><td><input type="submit" value="搜索"/></td> </tr> </table> </form> <table border="1" width="80%"> <TR> <TD>ID</TD><td>姓名</td><td>性別</td><td>年齡</td><td>家鄉</td><td>學校</td><td colspan="2">操作</td> </TR> <% if(list.size()!=0){ for(int i=0; i<list.size(); i++){ Student student = list.get(i); %> <tr><TD><%=student.getId() %></TD><td><%=student.getName() %></td><td><%if(student.getSex()==1){ %>男<%}else{ %>女<%} %></td><td><%=student.getYear() %></td><td><%=student.getFrom() %></td><td><%=student.getSchool() %></td><td><a href="getId?id=<%=student.getId() %>">修改</a></td><td><a href="del?id=<%=student.getId() %>">刪除</a></td></tr> <% } } %> </table> </center> </body></html>界面效果:
5、刪除數據:
既然是刪除操作,也就沒有界面了,但我們點擊刪除后,select接到我們發送過去的數據信息,根據這些信息調用我們之前寫好的刪除方法,完成刪除操作。
select代碼:
public class del extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response);//刪除操作,發送數據的方式便是get方式,我們可以在地址欄看到我們發送過來的數據信息 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String manager_name = (String)request.getSession().getAttribute("name"); String manager_password = (String)request.getSession().getAttribute("password"); ManagerMaImp mmi = new ManagerMaImp(); boolean login = mmi.getByName(manager_name, manager_password); if(!login){ request.setAttribute("news", "您還未登錄,請先登錄再進行操作"); request.getRequestDispatcher("Login.jsp").forward(request, response); }else{ int id = Integer.parseInt(request.getParameter("id")); StudentMaImp smi = new StudentMaImp(); boolean flag = smi.del(id); if(flag){ List<Student> list = new ArrayList<Student>(); list = smi.getAll(); request.setAttribute("list", list); request.getRequestDispatcher("All.jsp").forward(request, response); }else{ response.sendRedirect("error.html"); } } }}6、更新操作:
學完了添加、刪除、遍歷操作后,接下來我們一起來學習一下更新操作。
更新操作的JSP頁面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="error.html"%><%@page import="com.mysql.jsp.student.Student"%><%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>修改數據</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="修改數據"> <meta http-equiv="description" content="修改數據到數據庫"> </head> <body> <%Student student = (Student)request.getAttribute("student"); %> <center> <h1>修改數據到mysql數據庫</h1> <hr/> <form action="update" method="post" > <table> <tr> <!-- disabled="disabled":銷毀的,select無法得到它的值 --> <!-- readonly="readonly":只讀的,select可以讀出值 --> <td>id:</td><td><input type="text" name="id" readonly="readonly" value="<%=student.getId() %>" /></td> </tr> <tr> <td>姓名:</td><td><input type="text" name="name" value="<%=student.getName() %>"/></td> </tr> <tr> <td>性別:</td><td><input type="radio" name="sex" value="男" <%if(student.getSex()==1){ %>checked="checked"<%} %> >男<input type="radio" name="sex" value="女" <%if(student.getSex()==0){ %>checked="checked"<%} %> >女</td> </tr> <tr> <td>年齡:</td><td><input type="text" name="year" value="<%=student.getYear() %>"/></td> </tr> <tr> <td>家鄉:</td><td><input type="text" name="from" value="<%=student.getFrom() %>"/></td> </tr> <tr> <td>學校:</td><td><input type="text" name="school" value="<%=student.getSchool() %>"/></td> </tr> <tr> <td align="center"><input type="submit" value="更新" /></td><td align="center"><input type="reset" value="重置"></td> </tr> </table> </form> </center> </body></html>既然是更新,我們需要首先通過select獲得需要更新信息的對象,然后將對象數據發送給JSP頁面,代碼:
public class come extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StudentMaImp smi = new StudentMaImp(); List<Student> list = new ArrayList<Student>(); list = smi.getAll(); request.setAttribute("list", list); request.getRequestDispatcher("All.jsp").forward(request, response); }}用戶接收用戶修改的數據,并進行數據更新的select:
public class update extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String manager_name = (String)request.getSession().getAttribute("name"); String manager_password = (String)request.getSession().getAttribute("password"); ManagerMaImp mmi = new ManagerMaImp(); boolean login = mmi.getByName(manager_name, manager_password); if(!login){ request.setAttribute("news", "您還未登錄,請先登錄再進行操作"); request.getRequestDispatcher("Login.jsp").forward(request, response); }else{ int id = Integer.parseInt(request.getParameter("id")); String name = request.getParameter("name"); String sex_ = request.getParameter("sex"); int sex = 1; if(sex_.equals("女")){ sex = 0; } int year = Integer.parseInt(request.getParameter("year")); String from = request.getParameter("from"); String school = request.getParameter("school"); Student student = new Student(); student.setId(id); student.setName(name); student.setSex(sex); student.setYear(year); student.setFrom(from); student.setSchool(school); StudentMaImp smi = new StudentMaImp(); boolean flag = smi.update(student); if(flag){ List<Student> list = new ArrayList<Student>(); list = smi.getAll(); request.setAttribute("list", list); request.getRequestDispatcher("All.jsp").forward(request, response); }else{ response.sendRedirect("error.html"); } } }}好了,到這里對于通過JSP實現對數據庫的增、刪、改、遍歷操作,就為大家總結完畢。下一篇:JSP頁面精確搜索、模糊搜索
新聞熱點
疑難解答