内容概括:
用户网上注册,注册信息写入数据库。
用户登陆后,进入网上购物系统,选择书籍,加入购物车,购物完毕进入结账界面(可模拟一下,简单输出一些信息);在用户购物的期间内,可随时查看购物车的状 态,进入购物车后,也可返回再选择商品;在购物期间,用户也可以注销。
已解决参数传递和与数据库连接汉字乱码问题
数据库:
product 用户表
六项内容
private String id;
private String name;
private String password;
private String sex;
private String xueli;
private String registTime;
book 书表
七项
private String bookid;
private String bookname;
private String publisher;
private String author;
private String price;
private String publishDate;
private int count;
源代码:
bean 里的代码:
UserBean.java
package bean;
public class UserBean {
private String id;
private String name;
private String password;
private String sex;
private String xueli;
private String registTime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getXueli() {
return xueli;
}
public void setXueli(String xueli) {
this.xueli = xueli;
}
public String getRegistTime() {
return registTime;
}
public void setRegistTime(String registTime) {
this.registTime = registTime;
}
}
BookBean.java
package bean;
public class UserBean {
private String id;
private String name;
private String password;
private String sex;
private String xueli;
private String registTime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getXueli() {
return xueli;
}
public void setXueli(String xueli) {
this.xueli = xueli;
}
public String getRegistTime() {
return registTime;
}
public void setRegistTime(String registTime) {
this.registTime = registTime;
}
}
Cart.java
package bean;
import java.util.HashMap;
public class CartBean {
private String userName;
private HashMap<String,Integer> items=new HashMap<String, Integer>();
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public HashMap<String, Integer> getItems() {
return items;
}
public void setItems(HashMap<String, Integer> items) {
this.items = items;
}
public void addItem(String bookId)
{
if(items.containsKey(bookId))
{
int count=items.get(bookId);
count++;
items.remove(bookId);
items.put(bookId, count);
}
else
{
items.put(bookId, 1);
}
}
public void subItem(String bookId)
{
int count=items.get(bookId);
items.remove(bookId);
count--;
if(count>0)
{
items.put(bookId, count);
}
}
public void clearItems()
{
items.clear();
}
}
dao 里的代码:
base.java
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class BaseDao {
Connection con;
public Connection getConn()
{
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=mystar","sa","sa");
System.out.print("连接成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.print("连接失败一");
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.print("连接失败二");
e.printStackTrace();
}
return con;
}
}
UserDao.java
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import bean.UserBean;
public class UserDao {
public boolean selectUserByNameAndPass(String name,String pass)
{Connection con=(new BaseDao()).getConn();
boolean flag=false;
String selectSql="select * from product where tName=? and tPwd=?";
System.out.println("select sql 成功");
try {
System.out.println("select sql 成功");
System.out.println(name+" "+pass);
PreparedStatement pst=con.prepareStatement(selectSql);
System.out.println("select sql pre 成功");
pst.setString(1, name);
pst.setString(2,pass);
System.out.println("select sql 1 2 成功");
ResultSet rs=pst.executeQuery();
System.out.println("select query 成功");
if(rs.next())
{
flag=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
public boolean selectUserByName(String name)
{Connection con=(new BaseDao()).getConn();
boolean flag=false;
String selectSql="select * from product where tName=?";
try {
PreparedStatement pst=con.prepareStatement(selectSql);
pst.setString(1, name);
System.out.println(name);
ResultSet rs=pst.executeQuery();
if(rs.next())
{
flag=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
public int insertToUser(UserBean user)
{Connection con=(new BaseDao()).getConn();
int count=0;
String insertSql="insert into product values(?,?,?,?,?)";
try {
PreparedStatement pst=con.prepareStatement(insertSql);
pst.setString(1, user.getName());
pst.setString(2, user.getPassword());
pst.setString(3, user.getSex());
pst.setString(4, user.getXueli());
//java.sql.Date date=new java.sql.Date((new Date()).getTime());
pst.setString(5,user.getRegistTime() );
count=pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
}
}
BookDao.java
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import bean.BookBean;
public class BookDao {
Connection con=new BaseDao().getConn();
public ArrayList selectAllBooks()
{
ArrayList<BookBean> list=new ArrayList();
String selectSql="select * from book";
try {
PreparedStatement pst=con.prepareStatement(selectSql);
ResultSet rs=pst.executeQuery();
while(rs.next())
{
BookBean book=new BookBean();
book.setBookid(rs.getString(1));
book.setBookname(rs.getString(2));
book.setPublisher(rs.getString(3));
book.setAuthor(rs.getString(4));
book.setPrice(rs.getString(5));
book.setPublishDate(rs.getString(6));
book.setCount(rs.getInt(7));
list.add(book);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public String selectBookById(String bookId)
{
String bookName=null;
String selectSql="select bookname from book where bookid=?";
try {
PreparedStatement pst=con.prepareStatement(selectSql);
pst.setString(1, bookId);
ResultSet rs=pst.executeQuery();
if(rs.next())
{
bookName=rs.getString(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bookName;
}
}
CartDao.java
package dao;
import java.sql.Connection;
public class CartDao {
Connection con=(new BaseDao()).getConn();
}
JSP 页面:
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); %>
<form action="loginAccept.jsp" method="post">
<table>
<tr><td colspan="2" align="center">请登录</td></tr>
<tr><td>用户名:</td><td><input type="text" name="name"/></td></tr>
<tr><td>密码:</td><td><input type="password" name="password"/></td></tr>
<tr>
<td ><input type="submit" value=" 登陆"/></td>
<td align="right"><a href="regist.jsp">注册</a></td>
</tr>
</table>
</form>
</body>
</html>
登录处理页面 loginAccept.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="dao.UserDao"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'loginAccept.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="user" class="bean.UserBean" scope="session"></jsp:useBean>
<jsp:setProperty property="*" name="user"/>
<%
UserDao dao=new UserDao();
//System.out.println("new 成功");
// System.out.println(user.getName()+" "+user.getPassword());
boolean flag=dao.selectUserByNameAndPass(user.getName(),user.getPassword());
System.out.println("flag 初始化成功");
if(flag)
{
response.sendRedirect("displayBook.jsp");
}
else
{
response.sendRedirect("index.jsp");
}
%>
</body>
</html>
书目录展示 displayBook.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="dao.BookDao"%>
<%@page import="bean.BookBean"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'displayBooks.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<jsp:useBean id="user" class="bean.UserBean" scope="session"></jsp:useBean>
欢迎您 <jsp:getProperty property="name" name="user"/>前来购书,请挑选您喜欢的书
<form action="cart.jsp" method="post">"
<table border="1">
<tr><td>请选择</td>
<td>书名</td>
<td>出版社</td>
<td>作者</td>
<td>价格</td>
<td>出版日期</td>
<td>库存数量</td>
</tr>
<%
BookDao bookDao=new BookDao();
ArrayList list=bookDao.selectAllBooks();
Iterator it=list.iterator();
while(it.hasNext())
{
BookBean book=(BookBean)it.next();
%>
<tr>
<td><input type="checkbox" name="bookid" value="<%=book.getBookid() %>"/> </td>
<td><%=book.getBookname() %></td>
<td><%=book.getPublisher() %></td>
<td><%=book.getAuthor() %></td>
<td><%=book.getPrice() %></td>
<td><%=book.getPublishDate() %></td>
<td><%=book.getCount() %></td>
</tr>
<%
}
%>
<tr><td colspan="7" align="center">
<input type="submit" value="提交"/>
</td></tr>
</table></form>
</body>
</html>
增减书籍处理 cart.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="bean.CartBean"%>
<%@page import="dao.BookDao"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'cart.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<jsp:useBean id="user" class="bean.UserBean" scope="session"></jsp:useBean>
客户<jsp:getProperty property="name" name="user"/> 的购物车为:
<form method="post">
<table border="1">
<tr><td>请选择</td><td>书名</td><td>数量</td></tr>
<%
String[] bookids=request.getParameterValues("bookid");
//得到购物车
CartBean cart1=(CartBean)session.getAttribute("cart");
if(cart1==null)
{
//购物车为空,需要创建一个购物车bean
CartBean cartTemp=new CartBean();
cartTemp.setUserName(user.getName());
HashMap<String,Integer> items=new HashMap<String,Integer>();
for(String bookid:bookids)
{
items.put(bookid,1);
}
cartTemp.setItems(items);
session.setAttribute("cart",cartTemp);
cart1=(CartBean)session.getAttribute("cart");
}
else
{
String operateCart=request.getParameter("operateCart");
if(operateCart==null)
{
for(String bookid:bookids)
{
cart1.addItem(bookid);
}
}
else
{
if(operateCart.equals("add"))
{
for(String bookid:bookids)
{
cart1.addItem(bookid);
}
}
else
{
for(String bookid:bookids)
{
cart1.subItem(bookid);
}
}
}
session.setAttribute("cart",cart1);
}
//显示cart1购物车里的内容
HashMap<String,Integer> map=cart1.getItems();
Set set=map.keySet();
Iterator it1=set.iterator();
BookDao bookDao=new BookDao();
while(it1.hasNext())
{
String bookId=(String)it1.next();
String bookName=bookDao.selectBookById(bookId);
int count=map.get(bookId);
%>
<tr>
<td><input type="checkbox" name="bookid" value="<%=bookId%>"/></td>
<td><%=bookName %></td>
<td><%=count %></td>
</tr>
<%
}
%>
<tr><td colspan="3" align="center">
<input type="submit" value="add" name="operateCart"/>
<input type="submit" value="sub" name="operateCart"/>
</td></tr>
<tr><td colspan="3" align="center">
<a href="displayBook.jsp">重新购物</a>
<a href="logout.jsp">注销用户</a>
</td></tr>
</table>
</form>
</body>
</html>
注册页面 regist.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'regist.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); %>
<form action="registAccept.jsp" method="post">
<table>
<tr><td colspan="2" align="center">请注册</td></tr>
<tr><td>用户名:</td><td><input type="text" name="name"/></td></tr>
<tr><td>密码:</td><td><input type="password" name="password"/></td></tr>
<tr><td>性别:</td><td><input type="radio" name="sex" value="1"/>男
<input type="radio" name="sex" value="2"/>女</td></tr>
<tr><td>学历:</td><td><input type="text" name="xueli"/></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="提交"/></td></tr>
</table></form>
</body>
</html>
注册处理
registAccept.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="dao.UserDao"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'registAccept.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="user" class="bean.UserBean" scope="session"></jsp:useBean>
<jsp:setProperty property="*" name="user"/>
<%
UserDao dao=new UserDao();
if(!dao.selectUserByName(user.getName()))
{
System.out.println("用户名不存在");
dao.insertToUser(user);
response.sendRedirect("displayBook.jsp");
}
else
{
System.out.println("用户已经存在");
response.sendRedirect("index.jsp");
}
%>
</body>
</html>