题目概述:1、背景资料: 1、有一个存放商品的仓库,每天都有商品出库和入库。 2、每种商品都有名称、生产厂家、型号、规格等。 3、出入库时必须填写出入库单据,单据包括商品名称、生产厂家、型号、 规格、数量、日期、时间、入库单位(或出库单位)名称、送货(或提货)人 姓名。 2.系统要求与功能设计 2.1 页面要求 (1)能够在 Tomcat 服务器中正确部署,并通过浏览器查看;(1 分) (2)网站页面整体风格统一; 2.2 设计要求 1、设计出入库单据的录入。 2、实现按商品名称、出入库日期的查询。
首先,需要一个实体类,控制参数。我们需要很多参数,因为这个题目很长,要求很多。商品名称、生产厂家、型号、 规格、数量、日期、时间、入库单位(或出库单位)名称、送货(或提货)人 姓名。茫茫多。
package bean; public class bean { private String tradename; private String manufacturer; private String model; private String specification; private String number; private String time; private String company; private String name; public bean() { } public String getTradename() { return tradename; } public void setTradename(String tradename) { this.tradename = tradename; } public String getManufacturer() { return manufacturer; } public void setManufacturer(String manufacturer) { this.manufacturer = manufacturer; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public String getSpecification() { return specification; } public void setSpecification(String specification) { this.specification = specification; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
很好写,只要脑子没什么大问题。不过别忘了给构造函数。
package Servlet; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; 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 bean.bean; /** * Servlet implementation class Dservlet */ @WebServlet("/Dservlet") public class Dservlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Dservlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); //1 response.setContentType("text/html;charset=utf-8"); //2 response.setCharacterEncoding("utf-8"); //3 String tradename=request.getParameter("tradename"); String manufacturer=request.getParameter("manufacturer"); String model=request.getParameter("model"); String specification=request.getParameter("specification"); String number=request.getParameter("number"); String time=request.getParameter("time"); String company=request.getParameter("company"); String name=request.getParameter("name"); bean b = new bean(); b.setTradename(tradename); b.setManufacturer(manufacturer); b.setModel(model); b.setSpecification(specification); b.setNumber(number); b.setTime(time); b.setCompany(company); b.setName(name); //驱动程序名 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名mydata String url = "jdbc:mysql://localhost:3306/demo01?serverTimezone=GMT%2B8"; //MySQL配置时的用户名 String user = "root"; //MySQL配置时的密码 String password = "wtdWTD727398q"; //遍历查询结果集 try { //加载驱动程序 Class.forName(driver); //1.getConnection()方法,连接MySQL数据库!! Connection con = DriverManager.getConnection(url,user,password); if(!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); //2.创建statement类对象,用来执行SQL语句!! Statement statement = con.createStatement(); //要执行的SQL语句 String sql = "select * from shopping"; //3.ResultSet类,用来存放获取的结果集!! ResultSet rs = statement.executeQuery(sql); PreparedStatement psql; //预处理更新(修改)数据,将王刚的账号改为2017xxxx psql = con.prepareStatement("update shopping set 生产厂家= ?,型号=?,规格=?,数量=?,时间=?,入库单位(或出库单位)名称=?,送货(或提货)人姓名=? where 商品名称 = ?"); while(rs.next()) { if(b.getTradename().equals(rs.getString("商品名称"))) { psql.setString(1,b.getManufacturer()); psql.setString(2,b.getModel()); psql.setString(3,b.getSpecification()); psql.setString(4,b.getNumber()); psql.setString(5,b.getTime()); psql.setString(6,b.getCompany()); psql.setString(7,b.getName()); psql.setString(8,b.getTradename()); psql.executeUpdate(); System.out.println("修改成功!!"); request.getRequestDispatcher("/firstpage.jsp").forward(request,response); } else if(rs.isLast()) { request.getRequestDispatcher("/queryfalse.jsp").forward(request,response); } } rs.close(); con.close(); psql.close(); }catch(SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
我这里用了四个servlet,分别控制增删改查四个功能。上面那个是第一个,增。
package Servlet; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; 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 bean.bean; /** * Servlet implementation class Bservlet */ @WebServlet("/Bservlet") public class Bservlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Bservlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); //1 response.setContentType("text/html;charset=utf-8"); //2 response.setCharacterEncoding("utf-8"); //3 String tradename=request.getParameter("tradename"); bean b = new bean(); b.setTradename(tradename); /* * 查询数据库 * * * */ //驱动程序名 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名mydata String url = "jdbc:mysql://localhost:3306/demo01?serverTimezone=GMT%2B8"; //MySQL配置时的用户名 String user = "root"; //MySQL配置时的密码 String password = "wtdWTD727398q"; try { Class.forName(driver); //1.getConnection()方法,连接MySQL数据库!! Connection con = DriverManager.getConnection(url,user,password); if(!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); //2.创建statement类对象,用来执行SQL语句!! Statement statement = con.createStatement(); //要执行的SQL语句 String sql = "select * from shopping"; //3.ResultSet类,用来存放获取的结果集!! ResultSet rs = statement.executeQuery(sql); while(rs.next()){ //获取stuname这列数据 if(b.getTradename().equals(rs.getString("商品名称"))) { b.setTradename(rs.getString("商品名称")); //获取stuid这列数据 b.setManufacturer(rs.getString("生产厂家")); b.setModel(rs.getString("型号")); b.setSpecification(rs.getString("规格")); b.setNumber(rs.getString("数量")); b.setTime(rs.getString("时间")); b.setCompany(rs.getString("入库单位(或出库单位)名称")); b.setName(rs.getString("送货(或提货)人姓名")); request.setAttribute("b", b); System.out.println(b.getTradename()); request.getRequestDispatcher("/queryresult.jsp").forward(request,response); break; } else if(rs.isLast()) { request.getRequestDispatcher("/queryfalse.jsp").forward(request,response); } } rs.close(); con.close(); }catch(ClassNotFoundException e) { //数据库驱动类异常处理 System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace(); }catch(SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
这一个是查询
package Servlet; 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.sql.Statement; import java.util.Scanner; 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 bean.bean; /** * Servlet implementation class Cservlet */ @WebServlet("/Cservlet") public class Cservlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Cservlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); //1 response.setContentType("text/html;charset=utf-8"); //2 response.setCharacterEncoding("utf-8"); //3 String tradename=request.getParameter("tradename"); bean b = new bean(); b.setTradename(tradename); //驱动程序名 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名mydata String url = "jdbc:mysql://localhost:3306/demo01?serverTimezone=GMT%2B8"; //MySQL配置时的用户名 String user = "root"; //MySQL配置时的密码 String password = "wtdWTD727398q"; //遍历查询结果集 try { //加载驱动程序 Class.forName(driver); Connection con = DriverManager.getConnection(url, user, password); if(!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); //2.创建statement类对象,用来执行SQL语句!! Statement statement = con.createStatement(); //要执行的SQL语句 String sql = "select * from shopping"; //3.ResultSet类,用来存放获取的结果集!! ResultSet rs = statement.executeQuery(sql); PreparedStatement psql; psql = con.prepareStatement("delete from shopping where 商品名称 = ?"); while(rs.next()) { if(b.getTradename().equals(rs.getString("商品名称"))) { psql.setString(1, b.getTradename()); psql.executeUpdate(); request.getRequestDispatcher("/deletetrue.jsp").forward(request,response); }else if(rs.isLast()) { request.getRequestDispatcher("/queryfalse.jsp").forward(request,response); } } rs.close(); con.close(); psql.close(); }catch(SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
这个是删除
package Servlet; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; 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 bean.bean; /** * Servlet implementation class Dservlet */ @WebServlet("/Dservlet") public class Dservlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Dservlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); //1 response.setContentType("text/html;charset=utf-8"); //2 response.setCharacterEncoding("utf-8"); //3 String tradename=request.getParameter("tradename"); String manufacturer=request.getParameter("manufacturer"); String model=request.getParameter("model"); String specification=request.getParameter("specification"); String number=request.getParameter("number"); String time=request.getParameter("time"); String company=request.getParameter("company"); String name=request.getParameter("name"); bean b = new bean(); b.setTradename(tradename); b.setManufacturer(manufacturer); b.setModel(model); b.setSpecification(specification); b.setNumber(number); b.setTime(time); b.setCompany(company); b.setName(name); //驱动程序名 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名mydata String url = "jdbc:mysql://localhost:3306/demo01?serverTimezone=GMT%2B8"; //MySQL配置时的用户名 String user = "root"; //MySQL配置时的密码 String password = "wtdWTD727398q"; //遍历查询结果集 try { //加载驱动程序 Class.forName(driver); //1.getConnection()方法,连接MySQL数据库!! Connection con = DriverManager.getConnection(url,user,password); if(!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); //2.创建statement类对象,用来执行SQL语句!! Statement statement = con.createStatement(); //要执行的SQL语句 String sql = "select * from shopping"; //3.ResultSet类,用来存放获取的结果集!! ResultSet rs = statement.executeQuery(sql); PreparedStatement psql; //预处理更新(修改)数据,将王刚的账号改为2017xxxx psql = con.prepareStatement("update shopping set 生产厂家= ?,型号=?,规格=?,数量=?,时间=?,入库单位(或出库单位)名称=?,送货(或提货)人姓名=? where 商品名称 = ?"); while(rs.next()) { if(b.getTradename().equals(rs.getString("商品名称"))) { psql.setString(1,b.getManufacturer()); psql.setString(2,b.getModel()); psql.setString(3,b.getSpecification()); psql.setString(4,b.getNumber()); psql.setString(5,b.getTime()); psql.setString(6,b.getCompany()); psql.setString(7,b.getName()); psql.setString(8,b.getTradename()); psql.executeUpdate(); System.out.println("修改成功!!"); request.getRequestDispatcher("/firstpage.jsp").forward(request,response); } else if(rs.isLast()) { request.getRequestDispatcher("/queryfalse.jsp").forward(request,response); } } rs.close(); con.close(); psql.close(); }catch(SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
这个是改,本来啊,我不应该用这么长时间的,但是确实是很不熟练,而且参数有点多.....有点眼睛疼,中途有两次连不上数据库,最重点的是开头的时候题意没理解清绕了远路。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>删除</title> </head> <body> <form action="/shopping/Cservlet" method="post" id="form1"> <tr> <td> 商品名称:<input type="text" id="tradename" name="tradename"/> </td> </tr> <tr> <td> <button type="submit" id="sub" value="">提交</button> </td> </tr> </form> <form action="firstpage.jsp" method="post"> <tr> <td> <button type="submit" id="sub" value="">返回首页</button> </td> </tr> </form> </body> </html>
这一个是删除的主界面。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h2>删除成功!!</h2> <form action="firstpage.jsp" method="post"> <tr> <td> <button type="submit" id="sub" value="">返回首页</button> </td> </tr> </form> </body> </html>
这个是删除成功的回应界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <a href="listadd.jsp">新建商品清单</a> <a href="delete.jsp">删除商品清单</a> <a href="listquery.jsp">查询商品清单</a> <a href="revise.jsp">修改商品清单</a> </body> </html>
菜单栏。。。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>添加</title> </head> <body> <form id="form1" action="/shopping/Aservlet" method="post"> <table> <tr> <td> 商品名称:<input type="text" id="tradename" name="tradename"/> </td> </tr> <tr> <td> 生产厂家:<input type="text" id="manufacturer" name="manufacturer"/> </td> </tr> <tr> <td> 商品型号:<input type="text" id="model" name="model"/> </td> </tr> <tr> <td> 商品规格:<input type="text" id="specification" name="specification"/> </td> </tr> <tr> <td> 商品数量:<input type="text" id="number" name="number"> </td> </tr> <tr> <td> 单据时间:<input type="text" id="time" name="time"> </td> </tr> <tr> <td> 提货单位:<input type="text" id="company" name="company"> </td> </tr> <tr> <td> 提货姓名:<input type="text" id="name" name="name"/> </td> </tr> <tr> <td> <button type="submit" id="sub" value="">提交</button> </td> </tr> </table> </form> <form action="firstpage.jsp" method="post"> <tr> <td> <button type="submit" id="sub" value="">返回首页</button> </td> </tr> </form> </body> </html>
录入界面,四个主界面里最好写的
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>查询</title> </head> <body> <form id="form1" action="/shopping/Bservlet" method="post"> <tr> <td> 商品名称:<input type="text" id="tradename" name="tradename"/> </td> </tr> <tr> <td> <button type="submit" id="sub" value="">提交</button> </td> </tr> </form> <form action="firstpage.jsp" method="post"> <tr> <td> <button type="submit" id="sub" value="">返回首页</button> </td> </tr> </form> </body> </html>
通过商品的名字进行查询。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form id="form1" action="/shopping/Dservlet" method="post"> <table> <tr> <td> 商品名称:<input type="text" id="tradename" name="tradename"/> </td> </tr> <tr> <td> 生产厂家:<input type="text" id="manufacturer" name="manufacturer"/> </td> </tr> <tr> <td> 商品型号:<input type="text" id="model" name="model"/> </td> </tr> <tr> <td> 商品规格:<input type="text" id="specification" name="specification"/> </td> </tr> <tr> <td> 商品数量:<input type="text" id="number" name="number"/> </td> </tr> <tr> <td> 单据时间:<input type="text" id="time" name="time"/> </td> </tr> <tr> <td> 提货单位:<input type="text" id="company" name="company"/> </td> </tr> <tr> <td> 提货姓名:<input type="text" id="name" name="name"/> </td> </tr> <tr> <td> <button type="submit" id="sub" value="">提交</button> </td> </tr> </table> </form> </body> </html>
更改界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>未查询到此种商品...</title> </head> <body> <h2>未查询到此种商品......</h2> <form action="firstpage.jsp"> <button type="submit" id="sub" value="">返回首页</button> </form> </body> </html>
查询失败界面
<%@ page import="bean.bean" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>查询结果</title> </head> <body> <%bean bean=(bean)request.getAttribute("b"); %> <%System.out.print(bean.getTradename()); %> <h2>商品名称:<%=bean.getTradename()%></h2> <h2>生产厂家:<%=bean.getManufacturer() %></h2> <h2>商品型号:<%=bean.getModel() %></h2> <h2>商品规格:<%=bean.getSpecification() %></h2> <h2>商品数量:<%=bean.getNumber() %></h2> <h2>单据时间:<%=bean.getTime() %></h2> <h2>提货单位:<%=bean.getCompany() %></h2> <h2>提货姓名:<%=bean.getName() %></h2> <form action="Newrevise.jsp" method="post" > <button type="submit" id="sub1" value="">修改</button> </form> <form action="firstpage.jsp" method="post" > <button type="submit" id="sub1" value="">回到首页</button> </form> </body> </html>
查询显示,可以说是比较麻烦的一个jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>修改</title> </head> <body> <form action="/shopping/Bservlet" method="post" id="form1"> <tr> <td> 商品名称:<input type="text" id="tradename" name="tradename"/> </td> </tr> <tr> <td> <button type="submit" id="sub" value="">提交</button> </td> </tr> </form> <form action="firstpage.jsp" method="post"> <tr> <td> <button type="submit" id="sub" value="">返回首页</button> </td> </tr> </form> </body> </html>
修改界面,到此为止就算是都写完了。
总的来看这道题目,其实还算中规中矩,不过之前学长们的影响还是比较深的,想套人家的模板,结果失败了。所以说还是扎扎实实的,自己写比较好。
另外一点,我其实最大的短板是jsp语言,不然也用不了这么久的时间去做。还是说功力不够,练习时间太短啦。