项目总览
1.前端页面
login.jsp,登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.ben.bean.Person,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>注册</title>
</head>
<body>
<h1>请注册</h1>
<form action="AddressServlet",method = "post">
用户名:<input type="text" id = "username" name = "username" size = "20" required = "required">
密码:<input type="text" id = "password" name = "password" size = "20">
<input type="hidden" id = "type" name = "type" value = "signup"/>
<input type="submit" value = "提交">
</form>
</body>
</html>
list.jsp 登陆成功,显示通讯录
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.ben.bean.Person,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>名单</title>
</head>
<body>
<h1>登陆成功</h1>
<%
String username=(String)request.getAttribute("username");
out.println(username + ",欢迎您使用通讯录v1.0");
%>
<h2>搜索联系人:</h2>
<form action="AddressServlet" method= "post">
<input type = "text" name = "searchname" id = "searchname">
<input type = "hidden" id = "username" name = "username" value = ${username}>
<input type = "hidden" id = "type" name = "type" value = "search">
<input type = "submit" value = "搜索">
</form>
<script type="text/javascript">
function CheckAll(elementsA, elementsB) {
for (i = 0; i < elementsA.length; i++) {
elementsA[i].checked = true;
}
if (elementsB.checked == false) {
for (j = 0; j < elementsA.length; j++) {
elementsA[j].checked = false;
}
}
}
//判断用户是否选择了要删除的记录,如果是,则提示“是否删除”;否则提示“请选择要删除的记录”
function checkdel(delname, formname) {
var flag = false;
for (i = 0; i < delname.length; i++) {
if (delname[i].checked) {
flag = true;
break;
}
}
if (!flag) {
alert("请选择要删除的记录!");
return false;
} else {
if (confirm("确定要删除吗?")) {
formname.submit();
}
}
}
</script>
<form action="AddressServlet" method="post" name="frm">
<table border="1" style="border-collapse:collapse">
<tr>
<th>ID</th>
<th>姓名</th>
<th>手机</th>
<th>地址</th>
<th>删除</th>
</tr>
<%
Object getlists=request.getAttribute("personlists");
ArrayList<Person> personlists=(ArrayList<Person>)getlists;
if(personlists!=null)
{
int id = 0;
for(Person p:personlists)
{
id++;
%>
<tr>
<td>
<%= id %>
</td>
<td>
<%= p.getName() %>
</td>
<td>
<%= p.getTel() %>
</td>
<td>
<%= p.getAddress() %>
</td>
<td><input name="delname" type="checkbox"
class="noborder" value="<%=p.getName()%>"></td>
</tr>
<%
}
}
else
{%>
<tr>
<td>没有数据</td>
</tr>
<%
}
%>
</table>
<footer>
<input name="checkbox" type="checkbox" class="noborder"
onClick="CheckAll(frm.delname,frm.checkbox)"> [全选/反选] [
<a style="color:red;cursor:pointer;" onClick="checkdel(frm.delname,frm)">删除</a>]
<div id="ch" style="displ ay: none">
<input type = "hidden" id = "username" name = "username" value = ${username}>
<input type = "hidden" id = "type" name = "type" value = "del">
<input name="delname" type="checkbox" value="0">
</div>
</footer>
</form>
<form action="add.jsp" method = "post">
<input type = "hidden" id = "username" name = "username" value = ${username}>
<input type = "submit" value = "添加朋友">
</form>
<form action="login.jsp" method = "get">
<button type="submit">退出登录</button>
</form>
<input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回上一页">
</body>
</html>
loginFailed.jsp 登录失败页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.net.*,java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>登录失败</title>
</head>
<body>
<h1>您输入的用户名或密码有误,请返回重新输入</h1>
<form action="login.jsp",method = "get">
<button type = "submit">返回</button>
</form>
</body>
</html>
signup.jsp 注册页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.ben.bean.Person,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>注册</title>
</head>
<body>
<h1>请注册</h1>
<form action="AddressServlet",method = "post">
用户名:<input type="text" id = "username" name = "username" size = "20" required = "required">
密码:<input type="text" id = "password" name = "password" size = "20">
<input type="hidden" id = "type" name = "type" value = "signup"/>
<input type="submit" value = "提交">
</form>
</body>
</html>
signupFailed.jsp注册失败
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.ben.bean.Person,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>注册失败</title>
</head>
<body>
<h1>用户名"<%out.print((String)request.getAttribute("username")); %>"已存在,注册失败</h1>
<p>请更换用户名重试</p>
<form action="AddressServlet",method = "post">
用户名:<input type="text" id = "username" name = "username" size = "20" required = "required">
密码:<input type="text" id = "password" name = "password" size = "20">
<input type="hidden" id = "type" name = "type" value = "signup"/>
<input type="submit" value = "提交">
</form>
<p>若已拥有账户,请登录</p>
<form action="login.jsp" method = "get">
<button type = "submit">点击此处登陆</button>
</form>
</body>
</html>
search.jsp 查询页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>搜索</title>
</head>
<body bgcolor="#DFDBDE">
<script type="text/javascript">
window.onload = function () {
var myDiv = document.getElementById("h1");
//style属性 是 一个对象,里面有css的全部内容.
//myDiv是没有height属性的,但是myDiv.style下有height属性
myDiv.style.height = "50px";
myDiv.style.width = "1600px";
myDiv.style.backgroundColor = "rgb(248,248,248)";
}
function search(srh){
var xmlhttp;
var username = '<%=(String)request.getParameter("username")%>'
//创建XMLHttpRequest对象
if (srh.length==0)
{
document.getElementById("rlt").innerHTML="";
System.out.println("srh=0");
return;
}
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//回调函数
xmlhttp.onreadystatechange=function()
{//判断对象的状态是否交互完成&http的交互是否成功
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{//设置元素节点中的html内容
document.getElementById("rlt").innerHTML=xmlhttp.responseText;
}
}
//设置连接信息
xmlhttp.open("GET","SearchServlet?q="+srh+"&username="+username,true);
xmlhttp.send();
}
</script>
<h1 id="h1" style="color:#00CCFF;">请输入关键字</h1>
<form action = "">
<input style="color:#00CCFF;" type = "text" id = "srh" onkeyup="search(this.value)">
</form>
<br>
<div id="rlt"></div>
</body>
add.jsp 添加联系人
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.ben.bean.Person,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>添加朋友</title>
</head>
<body>
<h1>当前用户:<%
request.setCharacterEncoding("UTF-8");
out.print((String)request.getParameter("username"));%></h1>
<form action="AddressServlet" method = "post">
姓名<input type = "text" id = "name" name = "name" size = "20" required = "required">
电话<input type = "text" id = "tel" name = "tel" size = "20" required = "required">
住址<input type = "text" id = "address" name = "address" size = "30" required = "required">
<input type = "hidden" id = "username" name = "username" value = <%=request.getParameter("username") %>>
<input type = "hidden" id = "type" name = "type" value = "add">
<input type = "submit" value = "确认">
</form>
<input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回上一页">
<!-- <form action="list.jsp" method = "get">
<button type="submit">返回</button>
</form> -->
</body>
</html>
addFailed.jsp 联系人重复,添加失败
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.ben.bean.Person,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>联系人已存在</title>
</head>
<body>
<h1>您的联系人:"<%
out.print((String)request.getAttribute("name")); %>"已存在,请选择操作</h1>
<form action="AddressServlet", method = "post">
<input type = "hidden" id = "username" name = "username" value = ${username}>
<input type = "hidden" id = "name" name = "name" value = ${name}>
<input type = "hidden" id = "tel" name = "tel" value = ${tel}>
<input type = "hidden" id = "address" name = "address" value = ${address}>
<input type = "hidden" id = "type" name = "type" value = "overwrite">
<input type = "submit" value = "覆盖原有联系人">
</form>
<form action="add.jsp", method = "post">
<input type = "hidden" id = "username" name = "username" value = ${username}>
<input type = "submit" value = "重新添加联系人">
</form>
<input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回上一页">
</body>
</html>
2.servlet
AddressServlet.java
package com.ben.address;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ben.bean.Person;
import com.ben.bean.User;
import com.ben.service.*;
@WebServlet("/AddressServlet")
public class AddressServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddressServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String type = request.getParameter("type");
String name = request.getParameter("name");
String searchname = request.getParameter("searchname");
String[] delname = request.getParameterValues("delname");
String tel = request.getParameter("tel");
String address = request.getParameter("address");
//登录
if(!"".equals(username)) {
// user = new User(username,password);
// request.setAttribute("user", username);
if(!"".equals(type)&&"login".equals(type)) {
try {
if(AddressService.islogin(username,password)){
request.setAttribute("personlists", AddressService.list(username));
request.setAttribute("username", username);
//request.getRequestDispatcher("/list.jsp").forward(request, response);
request.getRequestDispatcher("/search.jsp").forward(request, response);
System.out.println("addservlet");
}
else {
request.getRequestDispatcher("/loginFailed.jsp").forward(request, response);
System.out.println(false);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//注册
if(!"".equals(type)&&"signup".equals(type)) {
try {
if(AddressService.signup(username, password)) {
request.setAttribute("personlists", AddressService.list(username));
request.setAttribute("username", username);
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
else
request.setAttribute("username", username);
request.getRequestDispatcher("/signupFailed.jsp").forward(request, response);
}catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(!"".equals(type)&&"add".equals(type)) {
Person p = new Person(name,tel,address);
try {
if(AddressService.add(username,p)) {
request.setAttribute("personlists", AddressService.list(username));
request.setAttribute("username", username);
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
else {
request.setAttribute("name", name);
request.setAttribute("tel", tel);
request.setAttribute("address", address);
request.setAttribute("username", username);
request.getRequestDispatcher("addFailed.jsp").forward(request, response);}
}catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//复写
if(!"".equals(type)&&"overwrite".equals(type)) {
Person p = new Person(name,tel,address);
try {
if(AddressService.overwrite(username,p)) {
request.setAttribute("personlists", AddressService.list(username));
request.setAttribute("username", username);
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
else
request.setAttribute("personlists", AddressService.list(username));
request.setAttribute("username", username);
request.getRequestDispatcher("list.jsp").forward(request, response);
}catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//批量删除
if(!"".equals(type)&&"del".equals(type)) {
try {
if(AddressService.isdel(username,delname)) {
request.setAttribute("personlists", AddressService.list(username));
request.setAttribute("username", username);
request.getRequestDispatcher("/list.jsp").forward(request, response);
System.out.println("delete success");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//模糊搜索
if(!"".equals(type)&&"search".equals(type)) {
System.out.println("started searching");
ArrayList searchrlt = new ArrayList<>();
searchrlt = AddressService.searchlist(username,searchname);
request.setAttribute("personlists", searchrlt);
request.setAttribute("username", username);
request.getRequestDispatcher("list.jsp").forward(request, response);
System.out.println("srh succeed");
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
SerachServlet.java
package com.ben.address;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ben.bean.Person;
/**
* Servlet implementation class SearchServlet
*/
@WebServlet("/SearchServlet")
public class SearchServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SearchServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
String searchname = request.getParameter("q");
String username = request.getParameter("username");
Connection conn;
PreparedStatement ps;
ResultSet rs;
ArrayList<Person> personlists = new ArrayList<Person>();
final String DBDRIVER="com.mysql.cj.jdbc.Driver";
String USERNAME="root";
String PASSWORD="00000000";
String URL="jdbc:mysql://localhost:3306/address?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8";
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "SELECT * FROM persons WHERE username = ? AND (name LIKE \"%\"?\"%\" OR tel LIKE \"%\"?\"%\" OR address LIKE \"%\"?\"%\") ORDER BY name ASC";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, searchname);
ps.setString(3, searchname);
ps.setString(4, searchname);
rs = ps.executeQuery();
while(rs.next()) {
Person person = new Person(rs.getInt("idperson"),rs.getString("name"),rs.getString("tel"),rs.getString("address"));
personlists.add(person);
}
rs.close();
ps.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.print("<table border=\"1\" style=\"border-collapse:collapse\">");
out.print("<tr>\r\n" +
" <th>姓名</th>\r\n" +
" <th>手机</th>\r\n" +
" <th>地址</th>\r\n" +
" </tr>");
if(personlists!=null) {
for(Person p:personlists) {
out.print("<tr><td>"+p.getName()+"</td>"+
"<td>"+p.getTel()+"</td>"+
"<td>"+p.getAddress()+"</td>"+
"</tr>");
}
}
else {
out.print("<tr> <td>未查询到结果</td></tr>");
}
out.print("</table>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
3.bean
Person.java
package com.ben.bean;
public class Person {
int id;
String username;
String name;
String tel;
String address;
public Person() {
super();
}
public Person(int id, String name, String tel, String address) {
super();
this.id = id;
this.name = name;
this.tel = tel;
this.address = address;
}
public Person(String name, String tel, String address) {
super();
this.name = name;
this.tel = tel;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
User.java
package com.ben.bean;
public class User {
String username;
String password;
public User() {
// TODO Auto-generated constructor stub
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getPassword() {
return password;
}
public String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
}
4.dao
Utils.java
package com.ben.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.ben.bean.*;
public class Utils {
static Connection conn;
static PreparedStatement ps;
static ResultSet rs;
public static String uname;
private static final String DBDRIVER="com.mysql.cj.jdbc.Driver";
private static String USERNAME="root";
private static String PASSWORD="00000000";
private static String URL="jdbc:mysql://localhost:3306/address?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8";
//判断是否登陆成功
public static boolean isLogin(String username,String password) throws ClassNotFoundException {
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();//初始没有指向内容,所以需要NEXT
while (rs.next()){
//也可以用col-name来取值
if(rs.getString("username").equals(username)&&rs.getString("password").equals(password)) {
return true;
}
}
rs.close();
ps.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}
return false;
}
//获取名单
public static ArrayList<Person> list(String username){
Person person;
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "SELECT * FROM persons WHERE username = ? ORDER BY name ASC";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
rs = ps.executeQuery();
ArrayList personlists = new ArrayList<>();
while(rs.next()) {
person = new Person(rs.getInt("idperson"),rs.getString("name"),rs.getString("tel"),rs.getString("address"));
personlists.add(person);
}
return personlists;
}catch(SQLException e) {
e.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}
return null;
}
public static ArrayList<Person> searchlist(String username,String searchname){
Person person;
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "SELECT * FROM persons WHERE username = ? AND name LIKE \"%\"?\"%\" ORDER BY name ASC";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, searchname);
rs = ps.executeQuery();
ArrayList personlists = new ArrayList<>();
while(rs.next()) {
person = new Person(rs.getInt("idperson"),rs.getString("name"),rs.getString("tel"),rs.getString("address"));
personlists.add(person);
}
return personlists;
}catch(SQLException e) {
e.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}
return null;
}
//添加用户
public static boolean addUser(String username, String password) {
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
//用户查重
String sql = "SELECT * FROM user WHERE username = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
rs = ps.executeQuery();
while(rs.next()) {
if(username.equals(rs.getString("username")))
return false;
}
sql = "INSERT INTO user(username,password) VALUE(?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
ps.executeUpdate();
ps.close();
conn.close();
return true;
}catch(SQLException e) {
e.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}
return false;
}
//添加朋友
public static boolean add(String username, Person p) {
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
//名单查重
String sql = "SELECT * FROM persons WHERE username = ? AND name = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, p.getName());
rs = ps.executeQuery();
while(rs.next()) {
if(username.equals(rs.getString("username"))&&p.getName().equals(rs.getString("name")))
return false;
}
sql = "INSERT INTO persons(username,name,tel,address) VALUE(?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, p.getName());
ps.setString(3, p.getTel());
ps.setString(4, p.getAddress());
ps.executeUpdate();
ps.close();
conn.close();
return true;
}catch(SQLException e) {
e.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}
return false;
}
public static boolean overwrite(String username, Person p) {
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
//名单查重
String sql = "DELETE FROM persons WHERE username = ? AND name = ? ";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, p.getName());
ps.executeUpdate();
sql = "INSERT INTO persons(username,name,tel,address) VALUE(?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, p.getName());
ps.setString(3, p.getTel());
ps.setString(4, p.getAddress());
ps.executeUpdate();
ps.close();
conn.close();
return true;
}catch(SQLException e) {
e.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}
return false;
}
public static boolean isDel(String username,String[] delname) throws ClassNotFoundException {
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "DELETE FROM persons WHERE username = ? AND name = ?";
ps = conn.prepareStatement(sql);
if (delname.length>0){
for(int i=0;i<delname.length;i++){
ps.setString(1, username);
ps.setString(2,delname[i]); // 对SQL语句中的第1个参数赋值
ps.addBatch(); // 添加批处理命令
}
}
ps.executeBatch();
ps.close();
conn.close();
return true;
}catch (SQLException e) {
e.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}
return false;
}
}
AddressService.java
package com.ben.service;
import java.util.*;
import com.ben.bean.*;
import com.ben.dao.Utils;
public class AddressService {
public static boolean islogin(String username,String pwd) throws ClassNotFoundException
{
return Utils.isLogin(username, pwd);
}
public static ArrayList<Person> list(String username)
{
return Utils.list(username);
}
public static ArrayList<Person> searchlist(String username, String searchname)
{
return Utils.searchlist(username,searchname);
}
public static boolean add(String username,Person p)
{
boolean rlt = Utils.add(username, p);
System.out.println(rlt);
System.out.println("add:"+username);
return rlt;
}
public static boolean overwrite(String username,Person p)
{
boolean rlt = Utils.overwrite(username, p);
System.out.println(rlt);
System.out.println("overwrite:"+username);
return rlt;
}
public static boolean signup(String username,String pwd)
{
boolean rlt = Utils.addUser(username, pwd);
System.out.println(rlt);
System.out.println("signup:"+username);
return rlt;
}
public static boolean isdel(String username,String[] delname) throws ClassNotFoundException
{
boolean rlt = Utils.isDel(username, delname);
System.out.println(rlt);
System.out.println("isdel:"+username);
return rlt;
}
}
5.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>address_v1</display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<servlet>
<display-name>AddressServlet</display-name>
<servlet-name>AddressServlet</servlet-name>
<servlet-class>com.ben.address.AddressServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddressServlet</servlet-name>
<url-pattern>/address_v1/AddressServlet</url-pattern>
</servlet-mapping>
<servlet>
<display-name>SearchServlet</display-name>
<servlet-name>SearchServlet</servlet-name>
<servlet-class>com.ben.address.SearchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SearchServlet</servlet-name>
<url-pattern>/address_v1/SearchServlet</url-pattern>
</servlet-mapping>
</web-app>
后来将web project转为maven project
7.pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>address_v1</groupId>
<artifactId>address_v1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
MYSQL 数据库结构
两个table,分别是persons和user