其实一直想要不要写这么全,毕竟也没讲这么多,但是既然培哥讲了思路,就写完整点算了。这个数据库的增删改就应该完结了吧。
最后的改应该算是最有难度的了吧,虽然说来都差不多,只是多学习几个接口而已。更新了3次才完整搞定,废了些时间
不再直接上完整代码,取部分解释下就行,个人思路,


这里的话我只增加了一个servlet,虽然也只需要一个servlet就行,但是要传值到后台,并转向到一个html,还要在更新页面附上初始值,点击登录将值再次传到后台,我的思路是 给两次点击事件加上不同的id,当点击的是数据旁边的按钮时传过去一个0,登录按钮则为空,这样用来判断是更新数据库还是跳转页面。
又因为html是静态的,无法给input标签传入值,所以后期改成了jsp动态页面。
类:当然必须基于我的封装类。可以在以前的地方找找,这里不提了。
package com.lckiss.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class UpdateSQL extends HttpServlet {
/**
* @author 14436242
*/ private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
// 设置格式,防止乱码 必须在流前定义
resp.setContentType("text/html;charset=GBK");
PrintWriter out = resp.getWriter();
// 从传输过来的链接中获取empno值
String empno = req.getParameter("empno");
String id = req.getParameter("id");
// 测试if条件
System.out.println(id);
boolean rs = UserID(empno);
if (rs && "0".equals(id)) {
HttpSession session = req.getSession();
// String sessionId = session.getId(); ID暂时不需要
// 将empno存储到session中
resp.setContentType("text/html;charset=GBK");
session.setAttribute("no", empno);
// 定向到更新页面
// html抛弃 resp.sendRedirect("./2.html");
// 返回数据ID给JSP页面
req.setAttribute("ID", empno);
req.getRequestDispatcher("./index.jsp").forward(req, resp);
// 转向到jsp
resp.sendRedirect("./index.jsp");
// 内部打印,方便检测是否出错
System.out.println(empno);
} else if (id == null) {
try {
// 从session中拿到上次的no
String pno = (String) req.getSession().getAttribute("no");
String rename = req.getParameter("name");
String repwd = req.getParameter("pwd");
System.out.println(pno + "-" + rename + "-" + repwd);
// 传入相关信息 准备更新
boolean res = UserUpdate(pno, rename, repwd);
// 打印更新结果
System.out.println(res);
if (res) {
out.println("<p><font size='3' color='red'>" + pno + " 已更新成功</p></font>");
out.println("<p>编号 , 姓名 , 工作 , HIREDATA , SAL , COMM ,DEPTNO.</p>");
List list = OracleComm.QueryALL();
for (Object c : list) {
String l = (String) c;
String no = l.split(",")[0];
// 因为list.add中插入这段字符串容易出错,所以单独新建一个字符串
String del = "http://localhost/day_1/del?empno=" + no + "";
String up = "http://localhost/day_1/update?empno=" + no + "&id=0";
out.println("<p>" + l + "-" + "<a href='" + del + "'>删除</a>" + "-" + "<a href='" + up
+ "'>更新</a>" + "</p>");
// conn的关闭
OracleComm.LinkSQL().close();
}
} else {
out.println("Tips:该成员不存在,无法更新");
}
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
} else {
}
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean UserID(String empno) throws Exception {
String sql = "select * from emp where EMPNO=" + empno + "";
System.out.println(sql);
ResultSet rs = OracleComm.ExecuteQuerry(sql);
while (rs.next()) {
return true;
}
return false;
}
public boolean UserUpdate(String pno, String name, String pwd) throws Exception {
String sql = "update emp set ename='" + name + "',job='" + pwd + "' where EMPNO=" + pno + "";
System.out.println(sql);
int rs = OracleComm.ExecuteUpdate(sql);
while (rs > 0) {
return true;
}
return false;
}
}看懂上面得if,else就差不多了。另外就是更新按钮传值的地方。
String up="http://localhost/day_1/update?empno=" + no + "&id=0";
out.println("<p>" + l + "-" + "<a href='" + del + "'>删除</a>"+"-"+"<a href='" + up + "'>更新</a>"+"</p>");session的话 就是上面类中的一句
HttpSession session = req.getSession();
// String sessionId = session.getId(); ID暂时不需要
//将empno存储到session中,前面加句,乱码天敌。
resp.setContentType("text/html;charset=GBK");
session.setAttribute("no", empno);和取值
// 从session中拿到上次的no
String pno =(String)req.getSession().getAttribute("no");jsp的代码
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>TIL-i.lckiss.com</title>
</head>
<body>
<form action="http://localhost/day_1/update">
<div align="center">
<p>更新测试页面 </p>
<br>
ID(不可修改)<input type="text" id="ID" name="ID" value="${ID}" />
<br>
修改昵称:<input type="text" name="name"></input>
<br>
修改密码:<input type="text" name="pwd"></input>
<br>
<br>
<input type="submit" value="更新" />
<input type="reset" value="重置" />
<br>
</div>
</form>
</body>
</html>
然后培哥的动态切换的登录页面也还好的样子,初次接触的话,有必要贴出来记录记录。
<html>
<head>
<title>Login-i.lckiss.com</title>
</head>
<style type="text/css">
.main {
width: 400px;
height: 300px;
margin: 50px auto;
border: solid #424242;
}
.choose {
width: 170px;
height: 20px;
margin: 30px auto;
border: solid #424242;
}
span {
cursor: pointer;
}
.L {
background-color: #FFFFFF;
width: 200px;
height: 150px;
margin: 0px 120px;
position: absolute;
z-index: 1;
}
.R {
background-color: #FFFFFF;
width: 200px;
height: 150px;
margin: 0px 120px;
position: absolute;
z-index: 0;
}
</style>
<script type="text/javascript">
function toLogin() {
var L = document.getElementById("Login");
L.style.zIndex = 1;
var R = document.getElementById("Register");
R.style.zIndex = 0;
}
function toRegister() {
var L = document.getElementById("Login");
L.style.zIndex = 0;
var R = document.getElementById("Register");
R.style.zIndex = 1;
}
</script>
<body bgcolor="#FFFFFF">
<div class="main">
<div class="choose" align="center">
<span onClick="toLogin()"> 登陆 </span> <b>|</b> <span
onClick="toRegister()"> 注册 </span>
</div>
<div id="Login" class="L" align="center">
<form action="http://localhost/day_1/login">
<div align="left">
账号:<input type="text" name="name"></input><br>
密码:<input type="password" name="pwd"></input><br>
<br>
<input type="submit" value="登录"></input>
<input type="reset" value="重置"></input>
</div>
</form>
</div>
<div id="Register" class="R" align="center">
<form action="http://localhost/day_1/regist">
<div align="left">
账号:<input type="text" name="user"></input><br>
密码:<input type="text" name="pwd"></input><br>
工作:<select name="One">
<option>One</option>
<option>Two</option>
<option>Three</option>
</select>
<br>
<input type="submit" value="注册"></input>
<input type="reset" value="重置"></input>
</div>
</form>
</div>
</div>
</body>
</html>
效果图,不好看是真的,就是两个图层的切换。

就这么多,可能以后得代码会越来越难理解了,不过认真了,想跟上来也不是不可能的,毕竟 两个月前,我也,什么都不懂,即便现在,也懂不了多少,但是愿意坚持,多思考。不就够了吗? Anr-C 2016.9.30
本站广告由 Google AdSense 提供
0条评论