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: 树形菜单的样式
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和第六章的改。