剛入門javaweb,自己做個jsp小練習供以后參考,本文純jsp與后台JDBC增刪改查的操作,還有一些瑕疵需要修復(當然大佬就不要挑我這個小白的毛病了,小白正在不斷學習中....).
寫這篇文章的目的是為了記錄 怎樣把數據從前台傳輸到后端數據庫,也是對自己學習的一次小總結, 不足之處多多見諒~~~
好啦,開始整吧
(1) 數據庫(mysql)只有一張表 emp
(2) eclipse建立web項目(不使用maven) 具體結構如下:
(3)上代碼
后台代碼 :
(3.1) 先寫好連接數據庫的配置文件,配置文件的作用就是方便更改我們數據庫的賬戶密碼,數據庫驅動等

1 jdbc.name = root 2 jdbc.password =root 3 jdbc.url = jdbc:mysql://localhost:3306/cust?useSSL=false 4 jdbc.driver = com.mysql.jdbc.Driver
(3.2) util包下的工具類

1 package cn.ssq.util; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Properties; 6 7 public class Prosutil { 8 9 private static Properties properties; 10 11 static{ 12 properties = new Properties(); 13 //引入配置文件 14 InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties"); 15 16 try { 17 properties.load(is); 18 } catch (IOException e) { 19 // TODO Auto-generated catch block 20 e.printStackTrace(); 21 } 22 23 } 24 public static String getStringByKey(String key){ 25 return properties.getProperty(key,""); 26 } 27 }

1 package cn.ssq.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 9 public class DButil { 10 //通過配置文件讀取數據庫的相關配置 11 private static final String URL = Prosutil.getStringByKey("jdbc.url"); 12 private static final String DRIVER = Prosutil.getStringByKey("jdbc.driver"); 13 private static final String USERNAME = Prosutil.getStringByKey("jdbc.name"); 14 private static final String PASSWORD = Prosutil.getStringByKey("jdbc.password"); 15 //建立數據庫連接 16 public static Connection getConn(){ 17 Connection conn = null; 18 19 try { 20 Class.forName(DRIVER); 21 conn = DriverManager.getConnection(URL,USERNAME,PASSWORD); 22 } catch (ClassNotFoundException e) { 23 24 e.printStackTrace(); 25 } catch (SQLException e) { 26 27 e.printStackTrace(); 28 } 29 return conn; 30 } 31 32 //關閉數據庫連接 33 public static void CloseAll(ResultSet rs,PreparedStatement ps, Connection conn){ 34 35 try { 36 if(rs != null){ 37 rs.close(); 38 rs = null; 39 } 40 if(ps !=null){ 41 ps.close(); 42 ps = null; 43 } 44 if(conn!=null){ 45 conn.close(); 46 conn = null; 47 } 48 } catch (SQLException e) { 49 50 e.printStackTrace(); 51 } 52 53 } 54 55 // private static ResultSet rs; 56 private static PreparedStatement ps; 57 private static Connection conn; 58 /** 59 * 增刪改 60 * @return 61 */ 62 public static int execuUpdate(String sql ,Object...param){ 63 int num = 0; 64 conn = getConn(); 65 try { 66 PreparedStatement ps = conn.prepareStatement(sql); 67 for (int i = 0; i < param.length; i++) { 68 Object object = param[i]; 69 ps.setObject(i+1, object); 70 } 71 num = ps.executeUpdate(); 72 } catch (SQLException e) { 73 74 e.printStackTrace(); 75 }finally{ 76 CloseAll(null,ps,conn); 77 } 78 return num; 79 } 80 /** 81 * 通用查詢 82 */ 83 public static ResultSet execuQuery(String sql,Object...param){ 84 ResultSet rs = null; 85 conn = getConn(); 86 try { 87 PreparedStatement ps = conn.prepareStatement(sql); 88 for (int i = 0; i < param.length; i++) { 89 Object object = param[i]; 90 ps.setObject(i+1, object); 91 } 92 rs = ps.executeQuery(); 93 } catch (SQLException e) { 94 95 e.printStackTrace(); 96 } 97 return rs; 98 99 } 100 }
(3.3)entity包下的實體類

1 package cn.ssq.entity; 2 3 public class Emp { 4 5 private int id; 6 private String name; 7 private String gender; 8 private String tel; 9 private String username; 10 private String password; 11 public int getId() { 12 return id; 13 } 14 public void setId(int id) { 15 this.id = id; 16 } 17 public String getName() { 18 return name; 19 } 20 public void setName(String name) { 21 this.name = name; 22 } 23 public String getGender() { 24 return gender; 25 } 26 public void setGender(String gender) { 27 this.gender = gender; 28 } 29 public String getTel() { 30 return tel; 31 } 32 public void setTel(String tel) { 33 this.tel = tel; 34 } 35 public String getUsername() { 36 return username; 37 } 38 public void setUsername(String username) { 39 this.username = username; 40 } 41 public String getPassword() { 42 return password; 43 } 44 public void setPassword(String password) { 45 this.password = password; 46 } 47 public Emp() { 48 super(); 49 50 } 51 public Emp(int id, String name, String gender, String tel, String username, 52 String password) { 53 super(); 54 this.id = id; 55 this.name = name; 56 this.gender = gender; 57 this.tel = tel; 58 this.username = username; 59 this.password = password; 60 } 61 62 }
(3.4)dao包下的接口和接口實現類

1 package cn.ssq.dao; 2 3 import java.util.List; 4 5 import cn.ssq.entity.Emp; 6 7 public interface EmpDao { 8 9 int save(Emp emp); 10 int delete(int id); 11 int update(Emp emp); 12 List<Emp> findAll(); 13 Emp getEmpById(int id); 14 15 }

1 package cn.ssq.dao.impl; 2 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import cn.ssq.dao.EmpDao; 9 import cn.ssq.entity.Emp; 10 import cn.ssq.util.DButil; 11 12 public class EmpDaoImpl implements EmpDao { 13 14 Emp emp = null; 15 /** 16 * 添加 17 */ 18 @Override 19 public int save(Emp emp) { 20 String sql = "insert into customer(id,name,gender,tel,username,password)values(?,?,?,?,?,?)"; 21 return DButil.execuUpdate(sql, emp.getId(),emp.getName(),emp.getGender(),emp.getTel(),emp.getUsername(),emp.getPassword()); 22 } 23 24 /** 25 * 刪除 26 */ 27 @Override 28 public int delete(int id) { 29 String sql = "delete from customer where id = ?"; 30 return DButil.execuUpdate(sql, id); 31 } 32 33 /** 34 * 修改 35 */ 36 @Override 37 public int update(Emp emp) { 38 String sql = "update customer set name = ?,gender=?,tel=?,username=?,password=? where id=?"; 39 return DButil.execuUpdate(sql, emp.getName(),emp.getGender(),emp.getTel(),emp.getUsername(),emp.getPassword(),emp.getId()); 40 } 41 42 /** 43 * 查詢 44 */ 45 @Override 46 public List<Emp> findAll() { 47 List<Emp> list = new ArrayList<Emp>(); 48 String sql = "select * from customer"; 49 ResultSet rs = DButil.execuQuery(sql); 50 try { 51 while(rs.next()){ 52 emp = new Emp(); 53 emp.setId(rs.getInt("id")); 54 emp.setGender(rs.getString("gender")); 55 emp.setName(rs.getString("name")); 56 emp.setTel(rs.getString("tel")); 57 emp.setUsername(rs.getString("username")); 58 emp.setPassword(rs.getString("password")); 59 list.add(emp); 60 } 61 } catch (SQLException e) { 62 63 e.printStackTrace(); 64 } 65 66 return list; 67 } 68 69 //根據id查詢 70 @Override 71 public Emp getEmpById(int id) { 72 Emp emp=null; 73 String sql = "select * from customer where id = ?"; 74 ResultSet rs = DButil.execuQuery(sql, id); 75 try { 76 while(rs.next()){ 77 emp = new Emp(); 78 emp.setGender(rs.getString("gender")); 79 emp.setName(rs.getString("name")); 80 emp.setPassword(rs.getString("password")); 81 emp.setUsername(rs.getString("username")); 82 emp.setTel(rs.getString("tel")); 83 } 84 } catch (SQLException e) { 85 86 e.printStackTrace(); 87 } 88 89 90 return emp; 91 } 92 93 }
(3.5)service包下的業務層

1 package cn.ssq.service; 2 3 import java.util.List; 4 5 import cn.ssq.entity.Emp; 6 7 public interface ServiceDao { 8 9 boolean save(Emp emp); 10 boolean delete(int id); 11 boolean update(Emp emp); 12 List<Emp> findAll(); 13 Emp getEmpById(int id); 14 }

1 package cn.ssq.service.impl; 2 3 import java.util.List; 4 5 import cn.ssq.dao.EmpDao; 6 import cn.ssq.dao.impl.EmpDaoImpl; 7 import cn.ssq.entity.Emp; 8 import cn.ssq.service.ServiceDao; 9 /** 10 * 業務調用 11 * @author 北城墨白 12 * 13 * 2018年12月13日 14 */ 15 public class ServiceDaoImpl implements ServiceDao { 16 17 EmpDao dao = new EmpDaoImpl(); 18 @Override 19 public boolean save(Emp emp) { 20 21 return dao.save(emp)>0; 22 } 23 24 @Override 25 public boolean delete(int id) { 26 27 return dao.delete(id)>0; 28 } 29 30 @Override 31 public boolean update(Emp emp) { 32 return dao.update(emp)>0; 33 } 34 35 @Override 36 public List<Emp> findAll() { 37 return dao.findAll(); 38 } 39 40 @Override 41 public Emp getEmpById(int id) { 42 43 return dao.getEmpById(id); 44 } 45 46 }
到這里,基本的底層代碼已經結束了,剩下的就是前端jsp的編寫了(記得導包,jar包的下載地址問度娘就可以了,在這我就不啰嗦了)
(3.6)WebContent文件夾下的jsp頁面代碼
前端代碼:

1 <%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%> 2 <%@page import="cn.ssq.entity.Emp"%> 3 <%@page import="java.util.List"%> 4 <%@page import="cn.ssq.service.impl.ServiceDaoImpl"%> 5 <%@page import="cn.ssq.service.ServiceDao"%> 6 <%@ page language="java" contentType="text/html; charset=UTF-8" 7 pageEncoding="UTF-8"%> 8 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 9 <html> 10 <head> 11 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 12 <title>顯示頁面信息</title> 13 </head> 14 <body> 15 <% 16 request.setCharacterEncoding("UTF-8"); 17 response.setCharacterEncoding("utf-8"); 18 ServiceDao service = new ServiceDaoImpl(); 19 List<Emp> list = service.findAll(); 20 %> 21 <a href="insert_update.jsp"><font color="green">添加新員工</font></a> 22 <table border="1" cellspacing="0" cellpadding="10" align="center"> 23 <tr> 24 <td>員工編號</td> 25 <td>姓名</td> 26 <td>性別</td> 27 <td>電話</td> 28 <td>用戶名</td> 29 <td>密碼</td> 30 <td>操作</td> 31 </tr> 32 <% 33 for(Emp e:list){ 34 %> 35 <tr> 36 <td><%=e.getId() %></td> 37 <td><%=e.getName() %></td> 38 <td><%=e.getGender()%></td> 39 <td><%=e.getTel() %></td> 40 <td><%=e.getUsername() %></td> 41 <td><%=e.getPassword() %></td> 42 <td><a href="insert_update.jsp?nid=<%=e.getId() %>">修改</a> <a 43 href="delete.jsp?did=<%=e.getId() %>"><font color="red">刪除</font></a> 44 </td> 45 </tr> 46 <%} %> 47 </table> 48 </body> 49 </html>

1 <%@page import="cn.ssq.service.impl.ServiceDaoImpl"%> 2 <%@page import="cn.ssq.service.ServiceDao"%> 3 <%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8"%> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9 <title>Insert title here</title> 10 </head> 11 <body> 12 <% 13 request.setCharacterEncoding("UTF-8"); 14 response.setCharacterEncoding("utf-8"); 15 String did = request.getParameter("did"); 16 int empid = Integer.valueOf(did); 17 ServiceDao service = new ServiceDaoImpl(); 18 19 if(service.delete(empid)==true){ 20 response.sendRedirect("index.jsp"); 21 }else{ 22 response.sendRedirect("index.jsp"); 23 } 24 %> 25 </body> 26 </html>

1 <%@page import="cn.ssq.entity.Emp"%> 2 <%@page import="cn.ssq.service.impl.ServiceDaoImpl"%> 3 <%@page import="cn.ssq.service.ServiceDao"%> 4 <%@ page language="java" contentType="text/html; charset=UTF-8" 5 pageEncoding="UTF-8"%> 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <title>Insert title here</title> 11 </head> 12 <body> 13 14 <% 15 String nid = request.getParameter("nid"); 16 Emp e = null; 17 ServiceDao service = new ServiceDaoImpl(); 18 if(nid !=null){ 19 int eid = Integer.valueOf(nid); 20 e = service.getEmpById(eid); 21 } 22 23 %> 24 25 <h1><%=nid == null ? "添加" : "修改" %>員工信息</h1><br> 26 <form action="<%=nid == null? "doadd.jsp" : "doupdate.jsp" %>" method="post"> 27 員工編號: <input type = "text" name="nid" value="<%=nid==null? "":nid %>"><font color="red">(員工編號不可重復)</font><br><br> 28 員工姓名: <input type="text" name="name" value="<%=nid==null? "" :e.getName() %>"><br><br> 29 員工性別: <input type="text" name="gender" value="<%=nid==null? "" :e.getGender()%>"><br><br> 30 員工電話: <input type="text" name="tel" value="<%=nid==null? "" :e.getTel()%>"><br><br> 31 用戶名:<input type="text" name="username" value="<%=nid==null? "" :e.getUsername()%>"><br><br> 32 員工密碼: <input type="password" name="password" value="<%=nid==null? "": e.getPassword()%>"><br><br> 33 <input type="submit" value="提交"> 34 </form> 35 </body> 36 </html>

1 <%@page import="cn.ssq.service.impl.ServiceDaoImpl"%> 2 <%@page import="cn.ssq.service.ServiceDao"%> 3 <%@page import="cn.ssq.entity.Emp"%> 4 <%@ page language="java" contentType="text/html; charset=UTF-8" 5 pageEncoding="UTF-8"%> 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <title>Insert title here</title> 11 </head> 12 <body> 13 <% 14 request.setCharacterEncoding("UTF-8"); 15 response.setCharacterEncoding("utf-8"); 16 String id = request.getParameter("nid"); 17 String name=request.getParameter("name"); 18 String gender=request.getParameter("gender"); 19 String tel = request.getParameter("tel"); 20 String username=request.getParameter("username"); 21 String password=request.getParameter("password"); 22 23 Emp emp = new Emp(); 24 25 int eid = Integer.valueOf(id); 26 27 emp.setId(eid); 28 emp.setName(name); 29 emp.setGender(gender); 30 emp.setTel(tel); 31 emp.setUsername(username); 32 emp.setPassword(password); 33 34 ServiceDao service = new ServiceDaoImpl(); 35 if(service.save(emp)==true){ 36 response.sendRedirect("index.jsp"); 37 }else{ 38 response.sendRedirect("insert_update.jsp"); 39 } 40 %> 41 </body> 42 </html>

1 <%@page import="cn.ssq.service.impl.ServiceDaoImpl"%> 2 <%@page import="cn.ssq.entity.Emp"%> 3 <%@page import="cn.ssq.service.ServiceDao"%> 4 <%@ page language="java" contentType="text/html; charset=UTF-8" 5 pageEncoding="UTF-8"%> 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <title>Insert title here</title> 11 </head> 12 <body> 13 <% 14 request.setCharacterEncoding("UTF-8"); 15 response.setCharacterEncoding("utf-8"); 16 String id = request.getParameter("nid"); 17 String name=request.getParameter("name"); 18 String gender=request.getParameter("gender"); 19 String tel = request.getParameter("tel"); 20 String username=request.getParameter("username"); 21 String password=request.getParameter("password"); 22 23 Emp emp = new Emp(); 24 25 int eid = Integer.valueOf(id); 26 27 emp.setId(eid); 28 emp.setName(name); 29 emp.setGender(gender); 30 emp.setTel(tel); 31 emp.setUsername(username); 32 emp.setPassword(password); 33 34 ServiceDao service = new ServiceDaoImpl(); 35 if(service.update(emp)==true){ 36 response.sendRedirect("index.jsp"); 37 }else{ 38 response.sendRedirect("insert_update.jsp"); 39 } 40 %> 41 </body> 42 </html>
代碼完畢!
(4)運行index.jsp頁面就可以正常使用了,當然這個小練習沒有實用性,只是對jsp知識點的一次小回顧,效果圖如下 :
結束
小白希望能和大家多多交流,互相學習,畢竟學到老活到老嘛,啊不,活到老學到老,編程(碼農)就是一步步慢慢來的,一起加油吧!