1、功能设计
后台系统作为管理人员控制web后台的重要手段之一,最主要的功能(相对于较简陋的后台管理系统而言)即是实现与数据库的交互。作为模板的手机商城有一库四表,其中比较重要的是user(用户表)、mobileForm(商品表)和orderForm(订单表)这三个表,在反复斟酌之后我的设计思路如下:
用户管理:增删改查。 商品管理:增删改查。 订单管理:增删改查。
2、功能实现
首先建立一个后台管理主界面home.html,主页面使用框架分成三个部分(头部标题、左部目录,右部操作),树形目录部分使用操作简单的dtree实现
<html> <head> <link rel="StyleSheet" href="dtree.css" type="text/css" /> <script type="text/javascript" src="dtree.js"></script> </head> <body> <div class="dtree"> <p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p> <%@ page contentType="text/html;charset=GB2312" %> <body> <span style="font-size:30px;"><span style="#66ccff: pre;"> </span><script type="text/javascript"> d = new dTree('d'); d.add(0,-1,'后台管理'); d.add(1,0,'用户管理','User.jsp','','right','img/base.gif'); d.add(2,0,'订单管理','','','right','image/1.png'); d.add(3,0,'手机管理','','','right','image/3.png'); d.add(6,2,'显示所有订单','OrderForm.jsp','','right','image/2.png'); d.add(7,2,'根据用户名查询订单','FindOrder.html','','right','image/2.png'); d.add(10,3,'显示全部手机种类','phoneClassified.jsp','','right','image/4.png'); d.add(8,3,'手机种类增减','phoneclassifyform.jsp','','right','image/4.png'); d.add(9,3,'手机信息修改','','phoneclassifyform.jsp','','right','image/4.png'); document.write(d); </script></span> </body> </html> <frameset rows="15%,*"> <frame src="top.html" name="top"> <frameset cols="15%,*"> <frame src="left.html" name="left"> <frame src="right.html" name="right"> </frameset> </frameset>
关于用户管理,用户的增加应该走前端注册路线,因此不需要后台来增加用户。关于删除,我使用一个JSP页面去获取所要删除的数据的主键,然后发送sql语句进行删除。
<%@page import="java.sql.*"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String name =request.getParameter("logname"); if(name==null) name=""; try { Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e) {} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; Connection conn; Statement sql; try { conn = DriverManager.getConnection(uri); sql=conn.createStatement(); String sqlStatement = "delete from user where logname="+"\'"+name+"\'"; sql.executeUpdate(sqlStatement); conn.close(); } catch(SQLException e) {} response.sendRedirect("index.jsp"); %>而修改功能我使用了servlet和Javabean结合的方式,先暂时储存数据信息,再根据所获取的信息对数据进行修改
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.Connection"%> <%@page import="java.sql.DriverManager"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html><body bgcolor=#6D22DD> <h3 align="center">数据列表</h3> <table align="center" border="1px" width="300px" height="20px"> <% Class.forName("com.mysql.jdbc.Driver"); String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; Connection conn = DriverManager.getConnection(uri); String sql = "select * from user"; PreparedStatement ps=conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); %> <div class="table-a"> <table width="500" cellspacing="0" border="1" cellpadding="0" align="center"> <tr align="center" bgcolor=#66ccff > <th width="100">登录名</th> <th width="100">真实姓名</th> <th width="100">密码</th> <th width="200"></th> </tr> </table> </div> <% while(rs.next()){ %> <div class="table-a"> <table width="500" cellspacing="0" border="1" cellpadding="0" align="center"> <tr bgcolor=#33ddff> <td width="100"><%=rs.getString("logname") %></td> <td width="100"><%=rs.getString("realname") %></td> <td width="100"><%=rs.getString("password") %></td> <td width="100"><a href="deleteUser.jsp?logname=<%=rs.getString("logname") %>">删除</a></td> <td width="100"><a href="Userform.jsp?logname=<%=rs.getString("logname") %>">修改</a></td> </tr> </table> </div> <% } conn.close(); %> </table> <center><a href="index.jsp">返回主页面</a></center> </body> </html> <%@page import="java.sql.*"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <h3 align="center">数据列表</h3> <table align="center" border="1px" width="500px" height="20px"> <% try{ Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e){} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; Connection conn = DriverManager.getConnection(uri); String name =request.getParameter("logname"); if(name==null) name=""; String sql = "select * from user where logname="+"\'"+name+"\'"; PreparedStatement ps=conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); %> <form action=UpdateUser method=post> <table border=1> <tr align="center" style="width:50px;"></tr> <td>logname: </td><td><input type="text" name="logname"></td> <tr align="center" style="width:50px;"></tr> <td>realname: </td><td><input type="text" name="realname"></td> <tr align="center" style="width:50px;"></tr> <td>password: </td><td><input type="password" name="password"></td> <tr align="center" style="width:50px;"></tr> <td>phone: </td><td><input type="text" name="phone"></td> <tr align="center" style="width:50px;"></tr> <td>address: </td><td><input type="text" name="address"></td> <td><input type="hidden" value=<%=name %> name="beforename" /></td> <td><input type="submit" value="提交"/></td> </tr> </table> </form> <% if(conn!=null) { try { conn.close(); } catch(SQLException e) { } } %> </table> <a href="index.jsp">返回主页面</a> <%@page import="java.sql.*"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String name =request.getParameter("before"); String logname =request.getParameter("logname"); String password =request.getParameter("password"); String realname =request.getParameter("realname"); String address =request.getParameter("address"); String phone =request.getParameter("phone"); out.print(name); try { Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e) {} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; Connection conn; Statement sql; try { conn = DriverManager.getConnection(uri); sql=conn.createStatement(); String sqlStatement = "UPDATE user set logname=" +"\'"+logname+"\'"+"',password='" +"\'"+password+"\'" +"',realname='"+"\'"+realname+"\'"+"', address='"+"\'"+address+"\'"+"', phone=" +"\'"+phone+"\'"+"'where logname="+"\'"+name+"\'"; sql.executeUpdate(sqlStatement); conn.close(); } catch(SQLException e) {} //response.sendRedirect("User.jsp"); %> package mybean.data; import java.util.*; public class User { String logname="", password="", phone="", address="", realname="", beforename=""; public void setLogname(String logname){ this.logname = logname; } public String getLogname(){ return logname; } public void setpassword(String s) { this.password = s; } public void setrealname(String s) { this.realname = s; } public String getpassword(){ return password; } public void setphone(String s) { this.phone = s; } public void setaddress(String s) { this.address = s; } public String getphone(){ return phone; } public String getaddress(){ return address; } public String getrealname(){ return realname; } public void setbeforename(String s){ this.beforename=s; } public String getbeforename(){ return beforename; } } package myservlet.control; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import mybean.data.User; public class UpdateUser extends HttpServlet{ public void init(ServletConfig config) throws ServletException { super.init(config); try { Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e){} } public String handleString(String s){ try{ byte bb[]=s.getBytes("iso-8859-1"); s=new String(bb); } catch(Exception ee){} return s; } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; User userBean=new User(); //创建的Javabean模型 request.getSession().getAttribute("userBean"); String logname=request.getParameter("logname").trim(); String password=request.getParameter("password").trim(); String phone=request.getParameter("phone").trim(); String address=request.getParameter("address").trim(); String realname=request.getParameter("realname").trim(); String beforename=request.getParameter("beforename").trim(); logname=handleString(logname); password=handleString(password); phone=handleString(phone); address=handleString(address); realname=handleString(realname); beforename=handleString(beforename); Connection conn; Statement sql; try { conn = DriverManager.getConnection(uri); sql=conn.createStatement(); String sqlStatement ="update user set logname=?, password=?, phone=?, address=?, realname=? where logname=?"; PreparedStatement ps = conn.prepareStatement(sqlStatement); ps.setString(6,beforename); ps.setString(1,logname); ps.setString(2,password); ps.setString(3,phone); ps.setString(4,address); ps.setString(5,realname); ps.executeUpdate(); conn.close(); } catch(SQLException e) {} response.sendRedirect("User.jsp"); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doPost(request,response); } }剩余的订单管理和信息管理功能实现类似,订单管理我写了一个根据用户登录名查询
<html> <body> <form action=findOrderFrom.jsp method=post> <table border=1> <tr align="center" style="width:50px;"> <td>用户名: </td><td><input type="text" name="logname"></td> <td><input type="submit" value="提交"/></td> </tr> </table> </form> </body> </html> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.Connection"%> <%@page import="java.sql.DriverManager"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html><body bgcolor=#FEDEFE> <h3 align="center">订单列表</h3> <table align="center" border="1px" width="300px" height="20px"> <%! public String handleString(String s){ try{ byte bb[]=s.getBytes("iso-8859-1"); s=new String(bb); } catch(Exception ee){} return s; } %> <% Class.forName("com.mysql.jdbc.Driver"); String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; Connection conn = DriverManager.getConnection(uri); String logname=request.getParameter("logname").trim(); logname=handleString(logname); String sql = "select * from orderform where logname=?"; PreparedStatement ps=conn.prepareStatement(sql); ps.setString(1,logname); ResultSet rs = ps.executeQuery(); %> <div class="table-a"> <font size=1> <table width="850" cellspacing="0" border="1" cellpadding="0" align="center"> <tr align="center" bgcolor=#66ccff > <th width="100">用户名</th> <th width="100">订单号</th> <th width="500">信息</th> <th width="100">价格</th> <th width="50"></th> </tr> </table> </font> </div> <% while(rs.next()){ %> <div class="table-a"> <table width="850" cellspacing="0" border="1" cellpadding="0" align="center"> <tr bgcolor=#33ddff> <td width="100"><%=rs.getString("logname") %></td> <td width="100"><%=rs.getString("id") %></td> <td width="500"><%=rs.getString("mess") %></td> <td width="100"><%=rs.getString("sum") %></td> <td width="50"><a href="deleteOrderForm.jsp?id=<%=rs.getString("id") %>">删除</a></td> </tr> </table> </div> <% } conn.close(); %> </table> <center><a href="index.jsp">返回主页面</a></center> </body> </html>关于产品管理,我的修改功能和增加功能都指向同一个JSP页面,根据信息查找数据库中是否存在相对应的数据,根据结果集进行判断,如果结果集返回空值,则说明没有相对应的数据,执行insert语句,否则执行update语句。
package myservlet.control; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import mybean.data.phoneclassify; public class Updatephoneclassify extends HttpServlet{ public void init(ServletConfig config) throws ServletException { super.init(config); try { Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e){} } public String handleString(String s){ try{ byte bb[]=s.getBytes("iso-8859-1"); s=new String(bb); } catch(Exception ee){} return s; } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; phoneclassify userBean=new phoneclassify(); //创建的Javabean模型 request.getSession().getAttribute("userBean"); String name=request.getParameter("name").trim(); String nowid=request.getParameter("id").trim(); name=handleString(name); nowid=handleString(nowid); int n=Integer.parseInt(nowid); Connection conn; Statement sql; try { conn = DriverManager.getConnection(uri); sql=conn.createStatement(); String sqlStatement1 ="select * from mobileclassify where id=?"; String sqlStatement2 ="update mobileclassify set name=? where id=?"; String sqlStatement3 ="insert into mobileclassify(id,name)values(?,?)"; PreparedStatement ps1 = conn.prepareStatement(sqlStatement1); System.out.println(n); ps1.setInt(1,n); ResultSet i=ps1.executeQuery(); if(i==null) { PreparedStatement ps2 = conn.prepareStatement(sqlStatement2); ps2.setString(1, name); ps2.setInt(2, n); ps2.executeUpdate(); } else { PreparedStatement ps3 = conn.prepareStatement(sqlStatement3); ps3.setString(1, nowid); ps3.setString(2, name); ps3.executeUpdate(); } conn.close(); } catch(SQLException e) {System.out.println(e);} response.sendRedirect("phoneClassified.jsp"); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doPost(request,response); } } <%@page import="java.sql.*"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <h3 align="center">手机种类列表</h3> <table align="center" border="1px" width="500px" height="20px"> <% try{ Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e){} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+ "user=root&password=123456&characterEncoding=gb2312"; Connection conn = DriverManager.getConnection(uri); String name =request.getParameter("logname"); if(name==null) name=""; String sql = "select * from user where logname="+"\'"+name+"\'"; PreparedStatement ps=conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); %> <form action=Updatephoneclassify method=post> <table border=1> <tr align="center" style="width:50px;"></tr> <td>id: </td><td><input type="text" name="id"></td> <tr align="center" style="width:50px;"></tr> <td>name: </td><td><input type="text" name="name"></td> <td><input type="submit" value="提交"/></td> </tr> </table> </form> <% if(conn!=null) { try { conn.close(); } catch(SQLException e) { } } %> </table> <a href="index.jsp">返回主页面</a>讲句实话,这次的课程设计开头做的非常痛苦,一边复习servlet、Javabean、html等知识,一边自学JavaScript、css。毕竟小白.........以后也要加油整合自己的知识才行
