javascript
JSP网站开发基础总结《六》
對(duì)于本篇需要總結(jié)的內(nèi)容,量估計(jì)有點(diǎn)大,大家好好看哈,絕對(duì)全是干貨,代碼的已經(jīng)運(yùn)行測(cè)試,不存在問題,大家可以參考學(xué)習(xí),下面開始本篇的內(nèi)容。
1、添加數(shù)據(jù)到數(shù)據(jù)庫:
如何用戶在JSP頁面的填寫的信息輸入到mysql數(shù)據(jù)庫呢?其實(shí)原理很簡單,就是我們?cè)贘SP頁面里添加一個(gè)form表單標(biāo)簽,需要注意的是這里的action值填我們的用于與數(shù)據(jù)庫庫交互的select的地址,method標(biāo)簽有兩個(gè)值可選:get和post,get方式的數(shù)據(jù)傳輸,不安全,傳輸?shù)臄?shù)據(jù)在地址欄可以看到,而post方式的傳輸就相對(duì)安全些,用戶填寫的數(shù)據(jù)不會(huì)顯式讓用戶看到。設(shè)置好form表單標(biāo)簽后,當(dāng)用戶填寫完表達(dá)后,點(diǎn)擊提交,用戶的填寫的表單數(shù)據(jù)將會(huì)傳輸給我們的select,這樣我們的select獲得到數(shù)據(jù)后,通過調(diào)用我們之前編輯好的添加數(shù)據(jù)方法,便可以把用戶的填寫的數(shù)據(jù)添加到數(shù)據(jù)庫。
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>添加數(shù)據(jù)</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="添加數(shù)據(jù)"><meta http-equiv="description" content="添加數(shù)據(jù)到數(shù)據(jù)庫"></head><body><center><h1>添加數(shù)據(jù)到mysql數(shù)據(jù)庫</h1><hr/><form action="add" method="post" id="form" name="form"><table><tr><td>姓名:</td><td><input type="text" name="name" /></td></tr><tr><td>性別:</td><td><input type="radio" name="sex" value="男" checked="checked">男<input type="radio" name="sex" value="女">女</td></tr><tr><td>年齡:</td><td><input type="text" name="year" /></td></tr><tr><td>家鄉(xiāng):</td><td><input type="text" name="from" /></td></tr><tr><td>學(xué)校:</td><td><input type="text" name="school" /></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>對(duì)于的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);//調(diào)用doPsot()方法,把使用get方式傳輸?shù)臄?shù)據(jù)用doPost()方向接收 }public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");//設(shè)置編碼方式response.setCharacterEncoding("utf-8");//設(shè)置編碼方式//這里使用了一個(gè)登錄驗(yàn)證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);//驗(yàn)證是否正確if(!login){request.setAttribute("news", "您還未登錄,請(qǐng)先登錄再進(jìn)行操作");request.getRequestDispatcher("Login.jsp").forward(request, response);//不正確跳轉(zhuǎn)到登錄頁}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");//獲得用戶填寫的故鄉(xiāng)信息String school = request.getParameter("school");//獲得用戶填寫的學(xué)校信息//生成一個(gè)學(xué)生對(duì)象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);//調(diào)用添加方法,將數(shù)據(jù)添加到數(shù)據(jù)庫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");}}} }對(duì)于向數(shù)據(jù)庫添加信息,就為大家總結(jié)完畢,加上前幾篇,我想大家應(yīng)該已經(jīng)明白如何通過JSP來做動(dòng)態(tài)網(wǎng)站了吧。對(duì)于這里提到的是否登錄驗(yàn)證,下面單獨(dú)聊一下。
3、登錄驗(yàn)證:
這個(gè)功能大家應(yīng)該遇到過很多,一般當(dāng)我們?cè)谝恍┚W(wǎng)站下載資料時(shí),會(huì)有一個(gè)會(huì)員是否登錄驗(yàn)證,只有你登錄了才能下載,這個(gè)小功能很簡單,但比較實(shí)用。下面我們就一起學(xué)習(xí)一下,這里用到了一個(gè)關(guān)鍵字:session,我們只需要在用戶登錄成功后,將用戶的賬戶和密碼通過requset方式進(jìn)行一下聲明,之后我們就可以在任何頁面或select中得到。
聲明代碼:
request.getSession().setAttribute("name",name);request.getSession().setAttribute("password", password);調(diào)用代碼:
String manager_name = (String)request.getSession().getAttribute("name");//獲得登錄用戶的用戶名String manager_password = (String)request.getSession().getAttribute("password");//獲得登錄用戶的密碼4、遍歷數(shù)據(jù)庫:
添加數(shù)據(jù)我們已經(jīng)學(xué)會(huì)了,下面我們一起學(xué)一下,如何把數(shù)據(jù)庫中的所有數(shù)據(jù)遍歷后,通過JSP頁面為用戶顯示出來。
后臺(tái)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>遍歷數(shù)據(jù)庫</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>遍歷數(shù)據(jù)庫中的數(shù)據(jù)</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>家鄉(xiāng)</td><td>學(xué)校</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、刪除數(shù)據(jù):
既然是刪除操作,也就沒有界面了,但我們點(diǎn)擊刪除后,select接到我們發(fā)送過去的數(shù)據(jù)信息,根據(jù)這些信息調(diào)用我們之前寫好的刪除方法,完成刪除操作。
select代碼:
public class del extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);//刪除操作,發(fā)送數(shù)據(jù)的方式便是get方式,我們可以在地址欄看到我們發(fā)送過來的數(shù)據(jù)信息 }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", "您還未登錄,請(qǐng)先登錄再進(jìn)行操作");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、更新操作:
學(xué)完了添加、刪除、遍歷操作后,接下來我們一起來學(xué)習(xí)一下更新操作。
更新操作的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>修改數(shù)據(jù)</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="修改數(shù)據(jù)"><meta http-equiv="description" content="修改數(shù)據(jù)到數(shù)據(jù)庫"></head><body><%Student student = (Student)request.getAttribute("student"); %><center><h1>修改數(shù)據(jù)到mysql數(shù)據(jù)庫</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>家鄉(xiāng):</td><td><input type="text" name="from" value="<%=student.getFrom() %>"/></td></tr><tr><td>學(xué)校:</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獲得需要更新信息的對(duì)象,然后將對(duì)象數(shù)據(jù)發(fā)送給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);}}用戶接收用戶修改的數(shù)據(jù),并進(jìn)行數(shù)據(jù)更新的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", "您還未登錄,請(qǐng)先登錄再進(jìn)行操作");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");}}}}好了,到這里對(duì)于通過JSP實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的增、刪、改、遍歷操作,就為大家總結(jié)完畢。下一篇:JSP頁面精確搜索、模糊搜索
總結(jié)
以上是生活随笔為你收集整理的JSP网站开发基础总结《六》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: websphere变成英文了
- 下一篇: Spring – ${} is not