大体思路是这样:本案例利用三层架构模式,但是service层没有过多的业务逻辑,只是规范架构而已
第一步:创建一个add.jsp
1
2
3
4
5
6
7
8
验证插入的ID是否可以使用9
10
12
13
14 window.onload =function() {15 //得到id=t的文本框
16 var txt = document.getElementById("id");17
18
19
20 //给文本框注册一个失去焦点事件
21 txt.onblur =function() {22
23 //获取文本框中的信息
24 var value =txt.value;25
26 if(value==null||value==""){27
28 document.getElementById("s").innerHTML = "id不能为空";29 txt.focus();30 }else{31
32 //第一步:得到XMLHttpRequest对象.
33 var xmlhttp =getXmlHttpRequest();34 //2.设置回调函数
35 xmlhttp.onreadystatechange =function() {36
37 //5.处理响应数据 当信息全部返回,并且是成功
38 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {39
40 var msg =xmlhttp.responseText;41
42 document.getElementById("s").innerHTML =msg;43
44 }45 };46
47 xmlhttp.open("POST", "${pageContext.request.contextPath}/CheakId");48 xmlhttp.setRequestHeader("content-type",49 "application/x-www-form-urlencoded");50
51 xmlhttp.send("id=" +value);52 }53 }54 };55
56
57
58
59
60
61
62
63
添加的id号:64
65
66
67
添加的name:68
69
70
71
添加的authod:72
73
74
75
添加的price:76
77
78
79
添加的number:80
81
82
83
84
85
86
87
88
89
90
91
my.js里判断了浏览器版本,并创建相应的xmlHttpRequest对象
1 function getXmlHttpRequest() {2 var xmlhttp = null;3
4 if(window.XMLHttpRequest) {5 xmlhttp = new XMLHttpRequest(); //针对于现在的浏览器包括IE7以上版本
6 } else if(window.ActiveXObject) {7 //针对于IE5,IE6版本
8 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");9 }10 returnxmlhttp;11 }
第二步,创建addServlet.servlet
packagecom.web;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.SQLException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.service.AddService;public class AddServlet extendsHttpServlet {public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/html;charset=utf-8");
String id= request.getParameter("id");
String name= request.getParameter("name");
String authod= request.getParameter("authod");
String price= request.getParameter("price");int number = Integer.valueOf(request.getParameter("number"));
AddService as= newAddService();try{boolean b =as.add(id,name,authod,price,number);if(b){
response.sendRedirect(request.getContextPath()+"/FindAllBooks");
}else{
response.getWriter().write("添加失败,请检查你添加的ID是否重复");
}
}catch(SQLException e) {
response.getWriter().write("添加失败");
e.printStackTrace();
}
}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
doGet(request, response);
}
}
第三步:创建addService.java
1 packagecom.service;2
3 importjava.sql.SQLException;4
5 importcom.dao.AddDao;6
7 public classAddService {8
9 public booleanadd(String id, String name, String authod, String price,10 int number) throwsSQLException {11
12 AddDao ad = newAddDao();13
14
15 returnad.add(id,name,authod,price,number);16 }17
18 }第四步:创建addDao.java
1 packagecom.dao;2
3 importjava.sql.Connection;4 importjava.sql.PreparedStatement;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7 importjava.util.ArrayList;8 importjava.util.List;9
10 importcom.mchange.v2.c3p0.ComboPooledDataSource;11
12 public classAddDao {13
14 public booleanadd(String id, String name, String authod, String price,15 int number) throwsSQLException {16
17 ComboPooledDataSource cds = newComboPooledDataSource();18
19 Connection con =cds.getConnection();20
21 List ids = new ArrayList();22
23 String checkIdSql = "select * from books";24 PreparedStatement checkIdpst =con.prepareStatement(checkIdSql);25
26 ResultSet checkIdrs =checkIdpst.executeQuery();27
28 while(checkIdrs.next()) {29
30 ids.add(checkIdrs.getString("id"));31
32 }33
34 System.out.println("dao中查到的ids::::" +ids);35
36 System.out.println("---Dao:::" + id + name + authod + price +number);37
38 String sql = "insert into books(id,name,authod,price,number) values(?,?,?,?,?)";39
40 PreparedStatement pst =con.prepareStatement(sql);41
42 pst.setString(1, id);43 pst.setString(2, name);44 pst.setString(3, authod);45 pst.setString(4, price);46 pst.setInt(5, number);47
48 boolean b =ids.contains(id);49
50 if (b == false) {51
52 int i =pst.executeUpdate();53
54 //包含是真 ,不包含是假
55 if ((i != 0) && (b == false)) {56
57 return true;58
59 } else{60
61 return false;62 }63
64 } else{65
66 return false;67
68 }69
70 }71
72 }
声明:Dao中用到了c3p0连接数据库技术
在src目录下添加c3p0-config.xml
com.mysql.jdbc.Driver
jdbc:mysql:///bookmanagesystem
root
123456
此外项目要导入数据库所需要的jar包,自行导入即可。
效果如图所示:
在这里,我的addServlet.servlet里添加成功后,转到了一个查询的servlet里
response.sendRedirect(request.getContextPath()+"/FindAllBooks");
这里你可以自行转到相应页面,提示添加成功与否。
来源:https://www.cnblogs.com/ZMYOE/p/13150181.html