智能手机销售网系统

article/2025/9/28 4:54:09

201711671102 曾燃亮 信管1171

智能手机销售网

源代码:(链接:https://pan.baidu.com/s/1EeMBiz3u4pr9ke_nnk2_sQ  提取码:bjfn  我的源代码都在这个网盘里面) 

一.前端

(前面书中给出的代码就不详细讲解,只讲一下自己调试代码的时候遇到的问题。1.如果连上数据库后点击浏览手机哪里界面没有显示数据库中的内容,是因为在servlet中可能没有写入自己连接数据库的密码,如果你数据库安装的时候设置了密码,就是给root用户添加了密码的话要把JSP页面和SERVLET中要连接数据库的地方都加上自己的密码就可以了。2.mybean.data和servlet.control里面的代码要自己在myeclipse上创建相应的bean和servlet,如果你直接复制过去的话可能会导致发布不成功,运行不了servlet)

1.前面系统部分复制代码到myeclipse后运行的结果:

主页

注册界面

登录界面

浏览手机页面

查询手机页面

查看购物车和查看订单未登录前的页面

注册前

注册后 

登录后

浏览Iphone类型手机

未添加物品前的购物车

添加物品后的购物车

生成订单后的查看订单页面

二.后台管理系统部分

1.后台管理界面

(我的后台管理并没有添加管理员的登录,即所有人都可以进入到后台去修改信息,但这里所指的所有人是所有的用户。不过主要工作是对表的操作所以就算了)

head.txt文件中添加的代码

<%@ page contentType="text/html;charset=GB2312" %>
<div align="center"><H2>“智多星”智能手机销售网</H2><table  cellSpacing="1" cellPadding="1" width="660" align="center"    border="0" ><tr valign="bottom"><td><A href="inputRegisterMess.jsp"><font size=2>注册</font></A></td><td><A href="login.jsp"><font size=2>登录</font></A></td><td><A href="lookMobile.jsp"><font size=2>浏览手机</font></A></td><td><A href="searchMobile.jsp"><font size=2>查询手机</font></A></td><td><A href="lookShoppingCar.jsp"><font size=2>查看购物车</font></A></td><td><A href="lookOrderForm.jsp"><font size=2>查看订单</font></A></td><td><A href="exitServlet"><font size=2>退出</font></A></td><td><A href="index.jsp"><font size=2>主页</font></A></td><td><A href="MyJsp.jsp"><font size=2>后台管理</font></A></td></tr></Font>
</table>
</div>

MyJsp.jsp文件,这个是一个框架,把一个页面分成两个,其中一个是htgl.jsp另一个为空。body里面的代码是用来验证是否有用户登录,如果有就直接进入后台管理,没有则需要登录后再点一次后台管理才能进入后台管理。

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="mybean.data.Login" %>
<%@ page import="java.util.*;" %>
<jsp:useBean id="loginBean" class="mybean.data.Login" scope="session"/>
<HTML>
<title>my page</title><frameset cols="15%,*" rows="*" frameborder="1"><frame src="htgl.jsp" name="left"></frame><frame src="" name="right"> <!--重点看这里--></frame></frameset>
<BODY bgcolor=yellow><font size=2>
<div align="center">
<%  if(loginBean==null){response.sendRedirect("login.jsp");//重定向到登录页面}else {boolean b =loginBean.getLogname()==null||loginBean.getLogname().length()==0;if(b)response.sendRedirect("login.jsp");//重定向到登录页面}
%>
</div></font>
</BODY></HTML>

这是htgl.jsp的源码,运用了dtree菜单

dtree的使用过程

1)从官网上下载dtree的源文件压缩包"dtree.zip",包内包含以下几个文件:

img文件夹: 包含树形菜单显示需要的图标

api.html : 作者写的dtree帮助文档

dtree.css: 树形菜单的样式

dtree.js : js核心文件,代码都在其中

example01.html:树形菜单实例

2)将压缩包内的文件拷贝到项目webroot下(example01.html可以不拷贝)

3)新建一个web文件(*.html、*.jsp...都可以),首先引入css和js文件:

<link rel="StyleSheet" href="dtree.css" type="text/css" />

<script type="text/javascript" src="dtree.js"></script>

然后在<body>里创建一个div层,指定class为"dtree",此时该层就引用了dtree的样式

<div class="dtree">

<script type="text/javascript">

tree = new dTree('tree');

......

</script>

</div>

注:具体代码可以参照example01.html

4)最后保存执行即可看到一个树形菜单。

(其实具体的代码可以复制example01.html然后以这个为原型去改动就可以了。在上面我的网盘中的代码里面已经复制好了dtree的代码了。)

其中我觉得重要的是新建一个dtree后,添加树的结点(不知道是不是这样说的),d.add(1,0);就添加了一个新的树节点,d.add(2,1)就是在节点1后面添加一个节点2,也就是说括号中第一位数是代表自己的节点,第二位数代表自己的前一个节点,如果是0那么前面就没有节点。(我觉得是这样,好像应该是吧)

其中d.add(1,0,'<a href="index.jsp" target ="_top">返回主页</a>');里面的target="_top"表示点击这个“返回主页”后会把index.jsp页面覆盖整个页面。d.add(3,2,'<a href="lookuser.jsp" target="right">用户查询</a>');这个里面的traget="right"表示点击“用户查询”后会在右边显示lookuser.jsp页面。

<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<head><link rel="StyleSheet" href="dtree.css" type="text/css" /><script type="text/javascript" src="dtree.js"></script>
</head>
<BODY><font size=2>
<b>后台管理</b>
<h2>MYDTREE</h2>
<div class="dtree"><p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p><script type="text/javascript">d = new dTree('d');d.add(0,-1,'My tree');d.add(1,0,'<a href="index.jsp" target ="_top">返回主页</a>');d.add(2,0,'用户表');d.add(3,2,'<a href="lookuser.jsp" target="right">查看用户</a>');d.add(4,2,'<a href="userdel.jsp" target="right">用户删除</a>');d.add(5,2,'<a href="userUpdata.jsp" target="right">用户更新</a>');d.add(6,0,'订单表');d.add(7,6,'<a href="lookorder.jsp" target="right">查看订单</a>');d.add(8,6,'<a href="delOrder.jsp" target="right">删除订单</a>');d.add(9,0,'手机信息表');d.add(10,9,'<a href="lookmobileform.jsp" target="right">查看手机信息</a>');d.add(11,9,'<a href="addmobileform.jsp" target="right">添加手机信息</a>');d.add(12,9,'<a href="mobileUpdate.jsp" target="right">更新手机信息</a>');d.add(13,9,'<a href="delmobileform.jsp" target="right">删除手机信息</a>');d.add(14,0,'手机类型表');d.add(15,14,'<a href="lookmobileclassify.jsp" target="right">查看手机类型</a>');d.add(16,14,'<a href="addclassify.jsp" target="right">添加手机类型</a>');d.add(17,14,'<a href="delclassify.jsp" target="right">删除手机类型</a>');d.add(18,14,'<a href="updateclassify.jsp" target="right">更新手机类型</a>');d.add(19,2,'<a href="finduser.jsp" target="right">查询用户</a>');d.add(20,9,'<a href="findmobile.jsp" target="right">查询手机信息</a>');d.add(21,6,'<a href="findorder.jsp" target="right">查询订单</a>');document.write(d);</script>
</div>
</font>
</BODY>
</HTML>

 

下面是主页中点击后台管理后的页面显示,可以看出左边是后台管理页面,右边什么都没有,

下面是把树形菜单打开后的页面

点击返回主页会返回到主页的页面(index.jsp)

2.查看用户

lookuser.jsp文件,这个jsp文件直接连接数据库,形成一个表格,把数据库中用户表中的内容全部显示出来

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="userBean" class="mybean.data.User" scope="request"/>
<title>查看用户表</title>
<HTML>
<BODY ><font size=2>
<BR>用户表的信息
<% try {  Class.forName("com.mysql.jdbc.Driver");}catch(Exception e){} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";Connection con; Statement sql;ResultSet rs;try {con=DriverManager.getConnection(uri);sql=con.createStatement();  rs=sql.executeQuery("SELECT * FROM user");out.print("<table border=2>");out.print("<tr>");out.print("<th width=100>"+"用户名");out.print("<th width=100>"+"密码");out.print("<th width=100>"+"电话");out.print("<th width=100>"+"邮件地址");out.print("<th width=100>"+"真实姓名");out.print("</tr>");while(rs.next()){out.print("<tr>");out.print("<td>"+rs.getString(1)+"</td>");out.print("<td>"+rs.getString(2)+"</td>");out.print("<td>"+rs.getString(3)+"</td>");out.print("<td>"+rs.getString(4)+"</td>");out.print("<td>"+rs.getString(5)+"</td>");out.print("</tr>");}out.print("</table>");con.close();}catch(SQLException e){ out.print(e);}
%>
</BODY></HTML>

这是点击查看用户后的结果,把用户表中的信息全部显示出来。

3.删除用户

userdel.jsp文件。

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="userBean" class="mybean.data.User" scope="request"/>
<title>删除用户</title>
<HTML>
<BODY ><font size=2>
<BR>用户表的信息
<% try {  Class.forName("com.mysql.jdbc.Driver");}catch(Exception e){} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";Connection con; Statement sql;ResultSet rs;try {con=DriverManager.getConnection(uri);sql=con.createStatement();  rs=sql.executeQuery("SELECT * FROM user");out.print("<table border=2>");out.print("<tr>");out.print("<th width=100>"+"用户名");out.print("<th width=100>"+"密码");out.print("</tr>");while(rs.next()){out.print("<tr>");out.print("<td>"+rs.getString(1)+"</td>");out.print("<td>"+rs.getString(2)+"</td>");out.print("</tr>");}out.print("</table>");con.close();}catch(SQLException e){ out.print(e);}
%>
<BR>请输入要删除的用户的名称
<FORM action="registerdeleteServlet" method="post">
<tr><td>*用户名称:</td><td><Input type=text name="logname" ></td><td><Input type="submit" name="g" value="提交"></td></tr>
</Form>
<p> 删除反馈:
<jsp:getProperty name="userBean"  property="backNews" /> 
</font>
</BODY></HTML>

Javabean文件(文件名:User),这个文件其实没必要创建只要用Register代替就好了,因为我敲代码的时候创了,改动有点麻烦所以就没改。(没什么,就是多了一个Javabean文件而已。)

这个文件里面存储着用户表的信息。

package mybean.data;
public class User {      String  logname="" , phone="",address="",realname="",backNews="请输入信息";public String getLogname() {return logname;}public void setLogname(String logname) {this.logname = logname;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getRealname() {return realname;}public void setRealname(String realname) {this.realname = realname;}public String getBackNews() {return backNews;}public void setBackNews(String backNews) {this.backNews = backNews;}
}

Servlet文件,连接数据库,执行sql语句删除数据库中的用户(连接数据库的代码基本一样,但是每个Servlet文件都要复制,感觉有点。。。。)

package myservlet.control;
import mybean.data.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class Userdel 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 {Connection con; Statement sql; ResultSet rs;User userBean=new User();  //创建的Javabean模型request.setAttribute("userBean",userBean);String logname=request.getParameter("logname").trim();if(logname==null)logname="";logname=handleString(logname);String uri="jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";boolean isLD=true;for(int i=0;i<logname.length();i++){char c=logname.charAt(i);if(!((c<='z'&&c>='a')||(c<='Z'&&c>='A')||(c<='9'&&c>='0'))) isLD=false;} boolean boo=logname.length()>0&&isLD;String backNews="";try{   con=DriverManager.getConnection(uri);String deleteCondition="DELETE FROM user WHERE logname='"+logname+"'";sql=con.createStatement();  if(boo){sql.executeUpdate(deleteCondition);backNews="删除成功";userBean.setBackNews(backNews);}else {backNews="信息填写不完整或名字中有非法字符";userBean.setBackNews(backNews);  }con.close();}catch(SQLException e){backNews="找不到该名字!"+e;userBean.setBackNews(backNews); }RequestDispatcher dispatcher= request.getRequestDispatcher("userdel.jsp");dispatcher.forward(request, response);//转发}public  void  doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {doPost(request,response);}
}

用户删除页面(删除前):

用户删除后结果:

4.更新用户

userUpdata.jsp文件,里面显示了用户表中所以信息,然后根据要更新的用户的名称去更新其他信息,也就是说它不可以更新用户的名称。这个jsp页面用到的javabean也是User。

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="userBean" class="mybean.data.User" scope="request"/>
<title>更新用户</title>
<HTML>
<BODY ><font size=2>
<BR>用户表的信息
<% try {  Class.forName("com.mysql.jdbc.Driver");}catch(Exception e){} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";Connection con; Statement sql;ResultSet rs;try {con=DriverManager.getConnection(uri);sql=con.createStatement();  rs=sql.executeQuery("SELECT * FROM user");out.print("<table border=2>");out.print("<tr>");out.print("<th width=100>"+"用户名");out.print("<th width=100>"+"密码");out.print("<th width=100>"+"电话");out.print("<th width=100>"+"邮件地址");out.print("<th width=100>"+"真实姓名");out.print("</tr>");while(rs.next()){out.print("<tr>");out.print("<td>"+rs.getString(1)+"</td>");out.print("<td>"+rs.getString(2)+"</td>");out.print("<td>"+rs.getString(3)+"</td>");out.print("<td>"+rs.getString(4)+"</td>");out.print("<td>"+rs.getString(5)+"</td>");out.print("</tr>");}out.print("</table>");con.close();}catch(SQLException e){ out.print(e);}
%>
<BR>请输入要更新的内容
<FORM action="registerupdataServlet" method="post">
<table border=1>
<tr><td>*输入要更新的用户名称:</td><td><Input type=text name="logname" ></td></tr>
<tr><td>*输入新的用户密码:</td><td><Input type=text name="password" ></td></tr>
<tr><td>*输入新的联系电话:</td><td><Input type=text name="phone" ></td></tr>
<tr><td>*输入新的邮寄地址:</td><td><Input type=text name="address" ></td></tr>
<tr><td>*输入新的真实姓名:</td><td><Input type=text name="realname" ></td></tr>
</table>
<br><Input type="submit" name="g" value="提交更新">
</Form>
</font>
</BODY></HTML>

servlet文件,连接数据库然后根据输进来的信息对数据库进行修改。

package myservlet.control;
import mybean.data.*;import java.sql.*;
import java.io.*;import javax.servlet.*;
import javax.servlet.http.*;import java.util.*;
public class Userupdata 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 {Connection con; Statement sql; ResultSet rs;User userBean=new User();  //创建的Javabean模型request.setAttribute("userBean",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();if(logname==null)logname="";if(password==null)password="";if(phone==null)phone="";if(address==null)address="";if(realname==null)realname="";logname=handleString(logname);password=handleString(password);phone=handleString(phone);address=handleString(address);realname=handleString(realname);String uri="jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";boolean isLD=true;for(int i=0;i<logname.length();i++){char c=logname.charAt(i);if(!((c<='z'&&c>='a')||(c<='Z'&&c>='A')||(c<='9'&&c>='0'))) isLD=false;} boolean boo=logname.length()>0&&isLD;String backNews="";try{   String Condition1="UPDATE user SET password='"+password+"'WHERE logname="+"'"+logname+"'";String Condition2="UPDATE user SET phone='"+phone+"'WHERE logname="+"'"+logname+"'";String Condition3="UPDATE user SET address='"+address+"'WHERE logname="+"'"+logname+"'";String Condition4="UPDATE user SET realname='"+realname+"'WHERE logname="+"'"+logname+"'";con=DriverManager.getConnection(uri);sql=con.createStatement();          if(boo){sql.executeUpdate(Condition1);sql.executeUpdate(Condition2);sql.executeUpdate(Condition3);sql.executeUpdate(Condition4);backNews="更新成功";userBean.setBackNews(backNews);}else {backNews="信息填写不完整或名字中有非法字符";userBean.setBackNews(backNews);  }con.close();}catch(SQLException e){backNews="找不到该名字!"+e;userBean.setBackNews(backNews); }RequestDispatcher dispatcher= request.getRequestDispatcher("userUpdata.jsp");dispatcher.forward(request, response);//转发}public  void  doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {doPost(request,response);}
}

用户更新前结果(我把用户1又添加进去了,主要是因为不想改前面的用户)

用户更新后

5.用户查询:

finduser.jsp文件。就是一个输入的表单,把输入的信息送到finduserServlet里

<%@ page contentType="text/html;charset=GB2312" %>
<title>按名称查找用户</title>
<HTML>
<BODY bgcolor=#66FFAA><center>
<BR>请输入要查询的用户的名称
<FORM action="finduserServlet" method="post">
<tr><td>*用户名称:</td><td><Input type=text name="logname" ></td><td><Input type="submit" name="g" value="提交"></td></tr>
</Form>
</BODY></HTML>

Servlet文件(文件名:UserFind)。在finduser.jsp页面传输过来的信息查询数据库然后重定向到showuser.jsp展示用户的信息

package myservlet.control;
import mybean.data.Search;
import com.sun.rowset.*;import java.sql.*;
import java.io.*;import javax.servlet.*;
import javax.servlet.http.*;
public class UserFind extends HttpServlet{CachedRowSetImpl rowSet=null;public void init(ServletConfig config) throws ServletException{super.init(config);try {  Class.forName("com.mysql.jdbc.Driver");}catch(Exception e){} }public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{request.setCharacterEncoding("gb2312");String searchMess= request.getParameter("logname");if(searchMess==null||searchMess.length()==0) {fail(request,response,"没有查询信息,无法查询");return;}String condition="SELECT * FROM user where logname ='"+searchMess+"'";HttpSession session=request.getSession(true); Connection con=null; Search dataBean=null;try{ dataBean=(Search)session.getAttribute("dataBean");if(dataBean==null){dataBean=new Search();  //创建Javabean对象session.setAttribute("dataBean",dataBean);}}catch(Exception exp){dataBean=new Search();  session.setAttribute("dataBean",dataBean);} String uri = "jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";try{ con=DriverManager.getConnection(uri);Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet rs=sql.executeQuery(condition);rowSet=new CachedRowSetImpl();   //创建行集对象rowSet.populate(rs);dataBean.setRowSet(rowSet);      //行集数据存储在dataBean中  con.close();                     //关闭连接}catch(SQLException exp){}response.sendRedirect("showuser.jsp");//重定向到byPageShow.jsp} public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{doPost(request,response);}public void fail(HttpServletRequest request,HttpServletResponse response,String backNews) {response.setContentType("text/html;charset=GB2312");try {PrintWriter out=response.getWriter();out.println("<html><body>");out.println("<h2>"+backNews+"</h2>") ;out.println("返回:");out.println("<a href =finduser.jsp>查询用户</a>");out.println("</body></html>");}catch(IOException exp){}}}

Javabean(文件名:Search)。把在数据库上查询到的信息保存在这个Javabean里面(后面的查找都是用到这个javabean)

package mybean.data;
import com.sun.rowset.*; 
public class Search {CachedRowSetImpl rowSet=null;public CachedRowSetImpl getRowSet() {return rowSet;}public void setRowSet(CachedRowSetImpl rowSet) {this.rowSet = rowSet;}
}

showuser.jsp文件。在这个页面显示查询用户后的信息

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="mybean.data.Search" %>
<%@ page import="com.sun.rowset.*" %>
<jsp:useBean id="dataBean" class="mybean.data.Search" scope="session"/>
<HTML><Body bgcolor=#66FFAA><center>
<BR>当前显示的内容是:<table border=2><tr><th>用户名称</th><th>密码</th><th>手机</th><th>地址</th><th>真实姓名</th></tr>
<% CachedRowSetImpl rowSet=dataBean.getRowSet();rowSet.last(); String logname=rowSet.getString(1);String passwork=rowSet.getString(2);String phone=rowSet.getString(3);String adress=rowSet.getString(4);String realname=rowSet.getString(5);String goods ="("+logname+","+passwork+","+phone+","+adress+","+realname+")";goods = goods.replaceAll("\\p{Blank}","");out.print("<tr>");out.print("<td>"+logname+"</td>");out.print("<td>"+passwork+"</td>");out.print("<td>"+phone+"</td>");out.print("<td>"+adress+"</td>");out.print("<td>"+realname+"</td>");out.print("</tr>");	
%>
</BODY></HTML>

用户查询前

用户查询后

对于其他表的查看、删除、更新、查询都是以这些代码为原型,然后进行更改的。由于用户的添加不用在后台中执行,所以后台管理中没有用户的添加选项。

6.手机信息的添加

JSP文件(文件名:addmobileform)。

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="userBean" class="mybean.data.Mobile" scope="request"/>
<title>添加手机</title>
<HTML>
<BODY bgcolor=#66FFAA><center>
<br>手机表信息
<% try {  Class.forName("com.mysql.jdbc.Driver");}catch(Exception e){} String uri="jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";Connection con; Statement sql;ResultSet rs;try {con=DriverManager.getConnection(uri);sql=con.createStatement();  rs=sql.executeQuery("SELECT * FROM mobileform");out.print("<table border=2>");out.print("<tr>");out.print("<th width=100>"+"版本");out.print("<th width=100>"+"手机名");out.print("<th width=100>"+"公司");out.print("<th width=100>"+"价格");out.print("<th width=100>"+"信息");out.print("<th width=100>"+"图片");out.print("<th width=100>"+"ID");out.print("</tr>");while(rs.next()){out.print("<tr>");out.print("<td>"+rs.getString(1)+"</td>");out.print("<td>"+rs.getString(2)+"</td>");out.print("<td>"+rs.getString(3)+"</td>");out.print("<td>"+rs.getString(4)+"</td>");out.print("<td>"+rs.getString(5)+"</td>");out.print("<td>"+rs.getString(6)+"</td>");out.print("<td>"+rs.getString(7)+"</td>");out.print("</tr>");}out.print("</table>");con.close();}catch(SQLException e){ out.print(e);}
%>
<BR>请完整输入要添加的内容
<FORM action="addmobileServlet" method="post">
<table border=1>
<tr><td>输入添加的手机版本:</td><td><Input type=text name="mobile_version" ></td></tr>
<tr><td>输入添加的手机名:</td><td><Input type=text name="mobile_name" ></td></tr>
<tr><td>输入添加的手机制造公司:</td><td><Input type=text name="mobile_made" ></td></tr>
<tr><td>输入添加的手机价格:</td><td><Input type=text name="mobile_price" ></td></tr>
<tr><td>输入添加的手机信息:</td><td><Input type=text name="mobile_mess" ></td></tr>
<tr><td>输入添加的手机图片:</td><td><Input type=text name="mobile_pic" ></td></tr>
<tr><td>输入添加的手机id:</td><td><Input type=text name="id" ></td></tr>
</table>
<br><Input type="submit" name="g" value="添加">
<p> 添加反馈:
<jsp:getProperty name="userBean"  property="backNews" />
</BODY></HTML>

Servlet文件(AddMobile)。通过addmobileform.jsp传输过来的信息直接插入数据库。

package myservlet.control;
import mybean.data.*;import java.sql.*;
import java.io.*;import javax.servlet.*;
import javax.servlet.http.*;import java.util.*;
public class AddMobile 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 {Connection con; Statement sql; ResultSet rs;Mobile userBean=new Mobile();  //创建的Javabean模型request.setAttribute("userBean",userBean);String mobile_version=request.getParameter("mobile_version").trim();String mobile_name=request.getParameter("mobile_name").trim();String mobile_made=request.getParameter("mobile_made").trim();String mobile_price=request.getParameter("mobile_price").trim();String mobile_mess=request.getParameter("mobile_mess").trim();String mobile_pic=request.getParameter("mobile_pic").trim();String id=request.getParameter("id").trim();if(mobile_version==null)mobile_version="";if(mobile_name==null)mobile_name="";if(mobile_made==null)mobile_made="";if(mobile_price==null)mobile_price="";if(mobile_mess==null)mobile_mess="";if(mobile_pic==null)mobile_pic="";if(id==null)id="";mobile_version=handleString(mobile_version);mobile_name=handleString(mobile_name);mobile_made=handleString(mobile_made);mobile_price=handleString(mobile_price);mobile_mess=handleString(mobile_mess);mobile_pic=handleString(mobile_pic);id=handleString(id);String uri="jdbc:mysql://127.0.0.1/mobileshop?"+"user=root&password=111111&characterEncoding=gb2312";String backNews="";try{   String Condition="INSERT INTO mobileform VALUES"+"("+"'"+mobile_version+"','"+mobile_name+"','"+mobile_made+"','"+mobile_price+"','"+mobile_mess+"','"+mobile_pic+"','"+id+"')";con=DriverManager.getConnection(uri);sql=con.createStatement(); sql.executeUpdate(Condition);backNews="添加成功";userBean.setBackNews(backNews);con.close();}catch(SQLException e){backNews="添加失败!"+e;userBean.setBackNews(backNews); }RequestDispatcher dispatcher= request.getRequestDispatcher("addmobileform.jsp");dispatcher.forward(request, response);//转发}public  void  doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {doPost(request,response);}
}

Javabean文件(Mobile)。用来存储手机信息。

package mybean.data;public class Mobile {String mobile_version="",mobile_name="",mobile_made="",mobile_mess="",mobile_pic="",backNews="请输入信息",mobile_price="0",id="0";public String getMobile_price() {return mobile_price;}public void setMobile_price(String mobile_price) {this.mobile_price = mobile_price;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getBackNews() {return backNews;}public void setBackNews(String backNews) {this.backNews = backNews;}public String getMobile_version() {return mobile_version;}public void setMobile_version(String mobile_version) {this.mobile_version = mobile_version;}public String getMobile_name() {return mobile_name;}public void setMobile_name(String mobile_name) {this.mobile_name = mobile_name;}public String getMobile_made() {return mobile_made;}public void setMobile_made(String mobile_made) {this.mobile_made = mobile_made;}public String getMobile_mess() {return mobile_mess;}public void setMobile_mess(String mobile_mess) {this.mobile_mess = mobile_mess;}public String getMobile_pic() {return mobile_pic;}public void setMobile_pic(String mobile_pic) {this.mobile_pic = mobile_pic;}}

手机添加前

手机添加后

对于手机类型的添加也是以这个手机信息添加的代码为模板去更改的。

关于其他表的代码就不讲解了。只给出运行结果。

1.订单表

查看订单

删除订单

查询订单

2.手机信息表

查看手机信息

添加手机信息

更新手机信息

删除手机信息

查询手机信息

手机类型表的结果和手机信息表差不多(所以就不发了),对于手机类型本人觉得手机的类型不会有太多数据所以就没有添加查询的功能。

ps:所有的源代码书本上都有,关于servlet对数据库的操作的代码在书本的第六章,把tag文件中的Java程序片改了放到servlet里面就可以了,我后台管理的所有代码都是根据ch10和第六章的改。

 


http://chatgpt.dhexx.cn/article/I9jxrxcl.shtml

相关文章

手机销售网

一、前台 前台的实现用了老师给的ch10源代码(即课本第10章代码)运行界面如下: 首页 注册 登录 浏览手机 查询手机 查看购物车 查看订单

手机销售网设计说明书

包含项目内容、目的、er图、流程图、总结 代码在文末 1 项目背景 1.1项目内容 用JSP技术建立一个简单的手机销售网&#xff0c;为用户提供一个购买手机的平台。系统的主要功能模块为注册、登录、购物车、浏览、查询等。在网站的设计中&#xff0c;系统采用MVC模式实现各个模块…

智能手机销售网

代码 <% page contentType"text/html;charsetGB2312" %> <HTML> <BODY> <HEAD><% include file"head.txt" %></HEAD> <title>首页</title> <CENTER> <h1><font Size4 colorblue> …

网上手机销售系统

系统设计思想 对于本系统&#xff0c;以网页销售模式为主&#xff0c;通过网络平台来达到手机产品的销售&#xff0c;为各大手机商提供了一个综合平台进行产品销售。浏览器作为客户端、手机购买者作为用户、后台管理员有独立的后台管理系统。因为相关手机信息较为综合&#xf…

web课程设计——手机销售网

一、实验要求 使用JSP技术建立一个简单的手机销售网。 采用MVC模式实现各个模块&#xff0c;数据库使用MySQL数据库 系统后台开发 1、 在导航条中添加一个后台管理菜单 2、 后台页面分成左右两个框&#xff0c;左边显示一个树形菜单&#xff0c;右边根据菜单选择显示相应的…

Java、JSP手机销售网

技术&#xff1a;Java、JSP等 摘要&#xff1a;本文讲述了基于B/S模式的网上购物系统的设计与实现。所谓的网上购物系统是通过网站推广互联企业的商品和技术服务&#xff0c;并使客户随时可以了解企业和企业的产品&#xff0c;为客户提供在线服务和订单处理功能。从长期的战略目…

《JSP程序设计》手机销售网后台设计

一、实验要求 系统后台开发具体要求(课本第10章的项目基础上)&#xff1a; 1.在导航条中添加一个后台管理菜单。 2.后台页面分成左右两个框&#xff0c;左边显示一个树形菜单&#xff0c;右边根据菜单选择显示相应的交互界面。 3.实现对用户&#xff0c;产品分类&#xff0c;产…

JSP程序设计——手机销售网后台设计

信管1172 高颖 201711671206 一、实验要求 系统后台开发具体要求(课本第10章的项目基础上): 1.在导航条中添加一个后台管理菜单。 2.后台页面分成左右两个框,左边显示一个树形菜单,右边根据菜单选择显示相应的交互界面。 3.实现对用户,产品分类,产品,订单等的后台管理。…

vue3中ref的理解

1.什么是ref? ref和reactive一样,也是用来实现响应式数据的方法由于reactive必须传递一个对象,所以在实际开发中如果只是想让某个变量实现响应式的时候回非常麻烦所以Vue3提供了ref方法实现简单值得监听 2.ref本质 ref底层其实还是reactive,所以当运行时系统会自动根据传入…

Vue中的ref属性

一、引出ref 大家在使用原生JS对DOM进行操作时肯定第一步是需要获取DOM元素的&#xff0c;比如通过id获取document.getElementById(“idName")&#xff0c;或者使用jQuery获取 jQuery对象$("#idName”)&#xff0c;vue对此也实现了比较方便的获取操作DOM的用法 — re…

Vue与ref属性与refs

ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用&#xff0c;引用信息就是元素; 如果用在子组件上&#xff0c;引用信息就是组件实例 注意&#xff1a;只要想要在Vue中直接操作DOM元素&#xff0c;就必须用r…

ref和out的区别

ref 关键字 是作用是把一个变量的引用传入函数&#xff0c;和 C/C 中的指针几乎一样&#xff0c;就是传入了这个变量的栈指针。 out 关键字 的作用是当你需要返回多个变量的时候&#xff0c;可以把一个变量加上 out 关键字&#xff0c;并在函数内对它赋值&#xff0c;以实现返…

vue ref介绍

基本用法 ref 有三种用法&#xff1a; 1、ref 加在普通的元素上&#xff0c;用this.ref.name 获取到的是dom元素 2、ref 加在子组件上&#xff0c;用this.ref.name 获取到的是组件实例&#xff0c;可以使用组件的所有方法。 3、如何利用 v-for 和 ref 获取一组数组或者dom …

vue3中ref的使用

一.定义一个数据的响应式 <template><h2>{{count}}</h2><hr><button click"update">更新</button> </template><script> import {ref } from vue export default {setup () {// 定义响应式数据 ref对象const count …

ref和reactive

一&#xff0c;前言 1.ref和reactive是vue3基于组合式api模式下&#xff0c;在setup中用于声明的具有响应式的数据的方法。 二&#xff0c;ref 1.ref通常用于声明基础类型响应式数据。 import { ref } from vue const age ref(10) //声明响应式数据2.ref返回的是被包装过的…

Vue中ref的用法

1、ref 加在普通的元素上&#xff0c;用this.$refs.&#xff08;ref值&#xff09; 获取到的是dom元素 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div id"app"…

c#引用(ref)的用法和应用实例

无论是浅拷贝与深拷贝&#xff0c;C#都将源对象中的所有字段复制到新的对象中。不过&#xff0c;对于值类型字段&#xff0c;引用类型字段以及字符串类型字段的处理&#xff0c;两种拷贝方式存在一定的区别&#xff08;见下表&#xff09;。 1. 一般对C#中传值调用和传引用调用…

什么时候用ref,怎么用ref

文章目录 用refref是一个字符串ref是一个内联函数ref是一个回调函数ref通过调用React.createRef()生成 不用ref 用ref “打在我身&#xff0c;疼在她心”时&#xff0c;用ref。比如&#xff0c;点击事件绑定在某个标签上&#xff0c;事件处理函数中却要访问另一个完全不相关的…

[Vue]ref属性

前言 系列文章目录&#xff1a; [Vue]目录 老师的课件笔记&#xff0c;不含视频 https://www.aliyundrive.com/s/B8sDe5u56BU 笔记在线版&#xff1a; https://note.youdao.com/s/5vP46EPC 视频&#xff1a;尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 文章目录 前言1. ref…

什么是 ref 引用

1. 什么是 ref 引用 ref 用来辅助开发者在 不依赖于 jQuery 的情况下 &#xff0c;获取 DOM 元素或组件的引用。 每个 vue 的组件实例上&#xff0c;都包含一个 $refs 对象 &#xff0c;里面存储着对应的 DOM 元素或组件的引用。默认情况下&#xff0c; 组件的 $refs 指向一…