简单购书网(崔老课程笔记)
项目源码包下载地址:http://dl.dbank.com/c0rhpnjrm2
brwBook项目开发文档:http://dl.dbank.com/c08jp2n6ib
文件结构
界面
见项目文件,略。。。。。。
后台
数据库表设计
数据表.sql
create table Book(
id number primary key,
name varchar2(50) not null,
price number not null)
create table customer(
id number primary key,
name varchar2(50) not null,
password varchar2(50) not null,
zip varchar2(100),
address varchar2(200),
telephone varchar2(50),
email varchar2(100))
create table orderform(
id number primary key,
cost number not null,
orderdate date,
customer_id references customer(id))
create table orderline(
id number primary key,
book_id number references book(id),
orderform_id number references orderform(id),
num number not null)
create sequence order_seq
create sequence orderLine_seq
create sequence customer_seq
select * from customer
--delete from customer
JavaBean层 (com.bean)
Book.java
package com.book.bean;
public class Book {
private long id;
private String name;
private Double price;
.......
}
Customer.java
package com.book.bean;
public class Customer {
private long id;
private String name;
private String password;
private String zip;
private String address;
private String telephone;
private String email;
......
}
OrderForm.java
package com.book.bean;
import java.util.Date;
public class OrderForm {
private long id;
private Customer customer;
private Double cost;
private Date orderdate;
......
}
OrderLine.java
package com.book.bean;
public class OrderLine {
private long id;
private Book book;
private long OrderForm_id;
private long num;
......
}
ShoppingCart.java
见项目文件,略。。。。。。
常用类 (com.common)
异常处理(exception)
CustomerException.java
package com.book.common.exception;
public class CustomerException extends Exception{
public CustomerException()
{
super();
}
public CustomerException(String message)
{
super(message);
}
}
OrderException.java
package com.book.common.exception;
public class OrderException extends Exception{
public OrderException() {
super();
}
public OrderException(String message)
{
super(message);
}
}
连接数据库相关(jdbc)
JdbcConnectionFactory.java
package com.book.common.jdbc;
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 java.util.Properties;
public class JdbcConnectionFactory {
private static String username=null;
private static String password=null;
private static String url=null;
private static String driver=null;
private static Properties properties=new Properties();
static{
try {
properties.load(JdbcConnectionFactory.class.getResourceAsStream("jdbc.properties"));
username=properties.getProperty("username");
password=properties.getProperty("password");
url=properties.getProperty("url");
driver=properties.getProperty("driver");
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection()
{
Connection conn=null;
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void close(ResultSet rs,Statement st,Connection conn)
{
try {
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs,PreparedStatement pst,Connection conn)
{
try {
if(rs!=null)
rs.close();
if(pst!=null)
pst.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(Statement st,Connection conn)
{
try {
if(st!=null)
st.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(PreparedStatement pst,Connection conn)
{
try {
if(pst!=null)
pst.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String []args) {
System.out.println(JdbcConnectionFactory.getConnection());
}
}
jdbc.properties
url=jdbc:oracle:thin:@192.168.5.200:1521:XE
driver=oracle.jdbc.driver.OracleDriver
username=luowei
password=luowei
工具类(util)
DaoFactory.java
package com.book.common.util;
import com.book.dao.ICustomerDao;
import com.book.dao.IOrderDao;
import com.book.dao.impl.CustomerDaoImpl;
import com.book.dao.impl.OrderDaoImpl;
public class DaoFactory {
private static ICustomerDao customerDao=new CustomerDaoImpl();
private static IOrderDao orderDao=new OrderDaoImpl();
public static ICustomerDao getCustomerDao() {
return customerDao;
}
public static IOrderDao getOrderDao() {
return orderDao;
}
}
MD5.java
package com.book.common.util;
public class MD5 {
private static MD5 md5 = null;
static final int S11 = 7;
static final int S12 = 12;
static final int S13 = 17;
static final int S14 = 22;
static final int S21 = 5;
static final int S22 = 9;
static final int S23 = 14;
static final int S24 = 20;
static final int S31 = 4;
static final int S32 = 11;
static final int S33 = 16;
static final int S34 = 23;
static final int S41 = 6;
static final int S42 = 10;
static final int S43 = 15;
static final int S44 = 21;
static final byte PADDING[] = { -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0 };
private long state[];
private long count[];
private byte buffer[];
public String digestHexStr;
private byte digest[];
public static synchronized MD5 getInstance() {
if (md5 == null)
md5 = new MD5();
return md5;
}
public String getMD5ofStr(String s) {
md5Init();
md5Update(s.getBytes(), s.length());
md5Final();
digestHexStr = "";
for (int i = 0; i < 16; i++) {
digestHexStr += byteHEX(digest[i]);
}
return digestHexStr;
}
private MD5() {
state = new long[4];
count = new long[2];
buffer = new byte[64];
digest = new byte[16];
md5Init();
}
private void md5Init() {
count[0] = 0L;
count[1] = 0L;
state[0] = 0x67452301L;
state[1] = 0xefcdab89L;
state[2] = 0x98badcfeL;
state[3] = 0x10325476L;
}
private long F(long l, long l1, long l2) {
return l & l1 | ~l & l2;
}
private long G(long l, long l1, long l2) {
return l & l2 | l1 & ~l2;
}
private long H(long l, long l1, long l2) {
return l ^ l1 ^ l2;
}
private long I(long l, long l1, long l2) {
return l1 ^ (l | ~l2);
}
private long FF(long l, long l1, long l2, long l3, long l4, long l5, long l6) {
l += F(l1, l2, l3) + l4 + l6;
l = (int) l << (int) l5 | (int) l >>> (int) (32L - l5);
l += l1;
return l;
}
private long GG(long l, long l1, long l2, long l3, long l4, long l5, long l6) {
l += G(l1, l2, l3) + l4 + l6;
l = (int) l << (int) l5 | (int) l >>> (int) (32L - l5);
l += l1;
return l;
}
private long HH(long l, long l1, long l2, long l3, long l4, long l5, long l6) {
l += H(l1, l2, l3) + l4 + l6;
l = (int) l << (int) l5 | (int) l >>> (int) (32L - l5);
l += l1;
return l;
}
private long II(long l, long l1, long l2, long l3, long l4, long l5, long l6) {
l += I(l1, l2, l3) + l4 + l6;
l = (int) l << (int) l5 | (int) l >>> (int) (32L - l5);
l += l1;
return l;
}
private void md5Update(byte abyte0[], int i) {
byte abyte1[] = new byte[64];
int k = (int) (count[0] >>> 3) & 0x3f;
if ((count[0] += i << 3) < (long) (i << 3)) {
count[1]++;
}
count[1] += i >>> 29;
int l = 64 - k;
int j;
if (i >= l) {
md5Memcpy(buffer, abyte0, k, 0, l);
md5Transform(buffer);
for (j = l; j + 63 < i; j += 64) {
md5Memcpy(abyte1, abyte0, 0, j, 64);
md5Transform(abyte1);
}
k = 0;
} else {
j = 0;
}
md5Memcpy(buffer, abyte0, k, j, i - j);
}
private void md5Final() {
byte abyte0[] = new byte[8];
Encode(abyte0, count, 8);
int i = (int) (count[0] >>> 3) & 0x3f;
int j = i >= 56 ? 120 - i : 56 - i;
md5Update(PADDING, j);
md5Update(abyte0, 8);
Encode(digest, state, 16);
}
private void md5Memcpy(byte abyte0[], byte abyte1[], int i, int j, int k) {
for (int l = 0; l < k; l++) {
abyte0[i + l] = abyte1[j + l];
}
}
private void md5Transform(byte abyte0[]) {
long l = state[0];
long l1 = state[1];
long l2 = state[2];
long l3 = state[3];
long al[] = new long[16];
Decode(al, abyte0, 64);
l = FF(l, l1, l2, l3, al[0], 7L, 0xd76aa478L);
l3 = FF(l3, l, l1, l2, al[1], 12L, 0xe8c7b756L);
l2 = FF(l2, l3, l, l1, al[2], 17L, 0x242070dbL);
l1 = FF(l1, l2, l3, l, al[3], 22L, 0xc1bdceeeL);
l = FF(l, l1, l2, l3, al[4], 7L, 0xf57c0fafL);
l3 = FF(l3, l, l1, l2, al[5], 12L, 0x4787c62aL);
l2 = FF(l2, l3, l, l1, al[6], 17L, 0xa8304613L);
l1 = FF(l1, l2, l3, l, al[7], 22L, 0xfd469501L);
l = FF(l, l1, l2, l3, al[8], 7L, 0x698098d8L);
l3 = FF(l3, l, l1, l2, al[9], 12L, 0x8b44f7afL);
l2 = FF(l2, l3, l, l1, al[10], 17L, 0xffff5bb1L);
l1 = FF(l1, l2, l3, l, al[11], 22L, 0x895cd7beL);
l = FF(l, l1, l2, l3, al[12], 7L, 0x6b901122L);
l3 = FF(l3, l, l1, l2, al[13], 12L, 0xfd987193L);
l2 = FF(l2, l3, l, l1, al[14], 17L, 0xa679438eL);
l1 = FF(l1, l2, l3, l, al[15], 22L, 0x49b40821L);
l = GG(l, l1, l2, l3, al[1], 5L, 0xf61e2562L);
l3 = GG(l3, l, l1, l2, al[6], 9L, 0xc040b340L);
l2 = GG(l2, l3, l, l1, al[11], 14L, 0x265e5a51L);
l1 = GG(l1, l2, l3, l, al[0], 20L, 0xe9b6c7aaL);
l = GG(l, l1, l2, l3, al[5], 5L, 0xd62f105dL);
l3 = GG(l3, l, l1, l2, al[10], 9L, 0x2441453L);
l2 = GG(l2, l3, l, l1, al[15], 14L, 0xd8a1e681L);
l1 = GG(l1, l2, l3, l, al[4], 20L, 0xe7d3fbc8L);
l = GG(l, l1, l2, l3, al[9], 5L, 0x21e1cde6L);
l3 = GG(l3, l, l1, l2, al[14], 9L, 0xc33707d6L);
l2 = GG(l2, l3, l, l1, al[3], 14L, 0xf4d50d87L);
l1 = GG(l1, l2, l3, l, al[8], 20L, 0x455a14edL);
l = GG(l, l1, l2, l3, al[13], 5L, 0xa9e3e905L);
l3 = GG(l3, l, l1, l2, al[2], 9L, 0xfcefa3f8L);
l2 = GG(l2, l3, l, l1, al[7], 14L, 0x676f02d9L);
l1 = GG(l1, l2, l3, l, al[12], 20L, 0x8d2a4c8aL);
l = HH(l, l1, l2, l3, al[5], 4L, 0xfffa3942L);
l3 = HH(l3, l, l1, l2, al[8], 11L, 0x8771f681L);
l2 = HH(l2, l3, l, l1, al[11], 16L, 0x6d9d6122L);
l1 = HH(l1, l2, l3, l, al[14], 23L, 0xfde5380cL);
l = HH(l, l1, l2, l3, al[1], 4L, 0xa4beea44L);
l3 = HH(l3, l, l1, l2, al[4], 11L, 0x4bdecfa9L);
l2 = HH(l2, l3, l, l1, al[7], 16L, 0xf6bb4b60L);
l1 = HH(l1, l2, l3, l, al[10], 23L, 0xbebfbc70L);
l = HH(l, l1, l2, l3, al[13], 4L, 0x289b7ec6L);
l3 = HH(l3, l, l1, l2, al[0], 11L, 0xeaa127faL);
l2 = HH(l2, l3, l, l1, al[3], 16L, 0xd4ef3085L);
l1 = HH(l1, l2, l3, l, al[6], 23L, 0x4881d05L);
l = HH(l, l1, l2, l3, al[9], 4L, 0xd9d4d039L);
l3 = HH(l3, l, l1, l2, al[12], 11L, 0xe6db99e5L);
l2 = HH(l2, l3, l, l1, al[15], 16L, 0x1fa27cf8L);
l1 = HH(l1, l2, l3, l, al[2], 23L, 0xc4ac5665L);
l = II(l, l1, l2, l3, al[0], 6L, 0xf4292244L);
l3 = II(l3, l, l1, l2, al[7], 10L, 0x432aff97L);
l2 = II(l2, l3, l, l1, al[14], 15L, 0xab9423a7L);
l1 = II(l1, l2, l3, l, al[5], 21L, 0xfc93a039L);
l = II(l, l1, l2, l3, al[12], 6L, 0x655b59c3L);
l3 = II(l3, l, l1, l2, al[3], 10L, 0x8f0ccc92L);
l2 = II(l2, l3, l, l1, al[10], 15L, 0xffeff47dL);
l1 = II(l1, l2, l3, l, al[1], 21L, 0x85845dd1L);
l = II(l, l1, l2, l3, al[8], 6L, 0x6fa87e4fL);
l3 = II(l3, l, l1, l2, al[15], 10L, 0xfe2ce6e0L);
l2 = II(l2, l3, l, l1, al[6], 15L, 0xa3014314L);
l1 = II(l1, l2, l3, l, al[13], 21L, 0x4e0811a1L);
l = II(l, l1, l2, l3, al[4], 6L, 0xf7537e82L);
l3 = II(l3, l, l1, l2, al[11], 10L, 0xbd3af235L);
l2 = II(l2, l3, l, l1, al[2], 15L, 0x2ad7d2bbL);
l1 = II(l1, l2, l3, l, al[9], 21L, 0xeb86d391L);
state[0] += l;
state[1] += l1;
state[2] += l2;
state[3] += l3;
}
private void Encode(byte abyte0[], long al[], int i) {
int j = 0;
for (int k = 0; k < i; k += 4) {
abyte0[k] = (byte) (int) (al[j] & 255L);
abyte0[k + 1] = (byte) (int) (al[j] >>> 8 & 255L);
abyte0[k + 2] = (byte) (int) (al[j] >>> 16 & 255L);
abyte0[k + 3] = (byte) (int) (al[j] >>> 24 & 255L);
j++;
}
}
private void Decode(long al[], byte abyte0[], int i) {
int j = 0;
for (int k = 0; k < i; k += 4) {
al[j] = b2iu(abyte0[k]) | b2iu(abyte0[k + 1]) << 8
| b2iu(abyte0[k + 2]) << 16 | b2iu(abyte0[k + 3]) << 24;
j++;
}
}
public static long b2iu(byte byte0) {
return byte0 >= 0 ? byte0 : byte0 & 0xff;
}
public static String byteHEX(byte byte0) {
char ac[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
char ac1[] = new char[2];
ac1[0] = ac[byte0 >>> 4 & 0xf];
ac1[1] = ac[byte0 & 0xf];
String s = new String(ac1);
return s;
}
public static String getMD5Str(String string) {
return getInstance().getMD5ofStr(string);
}
public static void main(String args[]) {
MD5 md5 = new MD5();
System.out.println(md5.getMD5ofStr("goodluck"));
System.out.println(MD5.getMD5Str("HelloWorld"));
}
}
ServiceFactory.java
package com.book.common.util;
import com.book.service.ICustomerService;
import com.book.service.IOrderService;
import com.book.service.impl.CustomerServiceImpl;
import com.book.service.impl.OrderServiceImpl;
public class ServiceFactory {
private static ICustomerService customerService=new CustomerServiceImpl();
private static IOrderService orderService=new OrderServiceImpl();
public static ICustomerService getCustomerService() {
return customerService;
}
public static IOrderService getOrderService() {
return orderService;
}
}
访问操作数据库数据层(com.dao)
接口
ICustomerDao.java
package com.book.dao;
import com.book.bean.Customer;
public interface ICustomerDao {
void save(Customer customer)throws Exception;
Customer findCustomer(String username)throws Exception;
void register(Customer customer)throws Exception;
Customer login(String username,String password)throws Exception;
void update(Customer customer)throws Exception;
}
IOrderDao.java
见项目文件,略。。。。。。
实现
CustomerDaoImpl.java
package com.book.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.book.bean.Customer;
import com.book.common.exception.CustomerException;
import com.book.common.jdbc.JdbcConnectionFactory;
import com.book.dao.ICustomerDao;
public class CustomerDaoImpl implements ICustomerDao{
public Customer login(String username, String password) throws CustomerException{
return null;
}
public void register(Customer customer) throws CustomerException{
}
public void update(Customer customer) throws CustomerException{
}
//插入用户信息
public void save(Customer customer) throws CustomerException, SQLException {
//从工厂类里直接拿连接对象
Connection conn=JdbcConnectionFactory.getConnection();
//利用连接对象创建sql语句的执行环境
Statement st=conn.createStatement();
//利用Statement对象运行sql语句
st.executeQuery("insert into customer values(customer_seq.nextval,'"+customer.getName()
+"','"+customer.getPassword()+"','"+customer.getZip()+"','"+customer.getAddress()
+"','"+customer.getTelephone()+"','"+customer.getEmail()+"')");
JdbcConnectionFactory.close(st, conn);
}
//根据用户名查找用户
public Customer findCustomer(String username) throws CustomerException, SQLException {
Connection conn=JdbcConnectionFactory.getConnection();
Statement st=conn.createStatement();
//保存集果集
ResultSet rs=st.executeQuery("select * from customer where name='"+username+"'");
Customer customer=null;
while(rs.next())
{
customer=new Customer(rs.getLong("id"),
rs.getString("name"),
rs.getString("password"),
rs.getString("zip"),
rs.getString("address"),
rs.getString("telephone"),
rs.getString("email")
);
}
JdbcConnectionFactory.close(st, conn);
return customer;
}
}
OrderDaoImpl.java
见项目文件,略。。。。。。
业务逻辑提供服务层
接口
ICustomerService.java
package com.book.service;
import com.book.bean.Customer;
import com.book.common.exception.CustomerException;
public interface ICustomerService {
void register(Customer customer) throws CustomerException;
Customer login(String username,String password)throws CustomerException;
void update(Customer customer)throws CustomerException;
Customer findCustomer(String username)throws CustomerException;
}
IOrderService.java
见项目文件,略。。。。。。
实现
CustomerServiceImpl.java
package com.book.service.impl;
import com.book.bean.Customer;
import com.book.common.exception.CustomerException;
import com.book.dao.ICustomerDao;
import com.book.dao.impl.CustomerDaoImpl;
import com.book.service.ICustomerService;
public class CustomerServiceImpl implements ICustomerService{
ICustomerDao customerDao=new CustomerDaoImpl();
public Customer login(String username, String password)
throws CustomerException {
Customer customer=this.findCustomer(username);
//登录判断
if(customer==null)
{
throw new CustomerException("用户名不存在!");
}
if(!customer.getPassword().equals(password))
{
throw new CustomerException("密码不正确!");
}
return customer;
}
public void register(Customer customer) throws CustomerException {
//注册处理
if(this.findCustomer(customer.getName())!=null)
{
throw new CustomerException("该用户名已存在!");
}
try {
//保存用户提交后,由servlet传过来的数据
customerDao.save(customer);
} catch (Exception e) {
throw new CustomerException(e.getMessage());
}
}
public void update(Customer customer) throws CustomerException {
}
/**
* 根据用户查找用户
*/
public Customer findCustomer(String username) throws CustomerException {
Customer cus;
try {
//调用数据访问层(dao)的findCustomer方法查找用户
cus=customerDao.findCustomer(username);
} catch (Exception e) {
throw new CustomerException(e.getMessage());
}
return cus;
}
}
OrderServiceImpl.java
见项目文件,略。。。。。。
页面处理层(com.web)
Servlet
RegisterServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.book.bean.Customer;
import com.book.common.exception.CustomerException;
import com.book.common.util.ServiceFactory;
import com.book.service.ICustomerService;
import com.book.service.impl.CustomerServiceImpl;
public class RegisterServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
ICustomerService customerService=ServiceFactory.getCustomerService();
Customer customer=new Customer(
request.getParameter("name"),
request.getParameter("password"),
request.getParameter("zip"),
request.getParameter("address"),
request.getParameter("telephone"),
request.getParameter("email")
);
try {
customerService.register(customer);
RequestDispatcher rd=request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
} catch (CustomerException e) {
e.printStackTrace();
request.setAttribute("message",e.getMessage());
RequestDispatcher rd=request.getRequestDispatcher("register.jsp");
rd.forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
LoginServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.book.bean.Customer;
import com.book.common.exception.CustomerException;
import com.book.common.util.ServiceFactory;
import com.book.service.ICustomerService;
public class LoginServlet extends HttpServlet {
private ICustomerService customerService=ServiceFactory.getCustomerService();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//转码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取参数
String username=request.getParameter("name");
String password=request.getParameter("password");
try {
//登录处理
Customer customer=customerService.login(username, password);
//准备session
HttpSession session=request.getSession();
session.setAttribute("customer", customer);
//转发
RequestDispatcher rd=request.getRequestDispatcher("listBookStore.jsp");
rd.forward(request, response);
} catch (CustomerException e) {
//异常消息
request.setAttribute("message", e.getMessage());
e.printStackTrace();
RequestDispatcher rd=request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
}
}
}
AddOrderLineServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.book.bean.Book;
import com.book.bean.OrderLine;
import com.book.bean.ShoppingCart;
public class AddOrderLineServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
Long bookid=Long.parseLong(request.getParameter("bookid"));
Long num=Long.parseLong(request.getParameter("num"));
ServletContext sc=super.getServletContext();
Map<Long,Book> books=(Map<Long,Book>)sc.getAttribute("books");
Book book=books.get(bookid);
//OrderLine orderLine=new OrderLine(book,1,num);
//System.out.println(book.getId());
OrderLine orderLine=new OrderLine();
orderLine.setId(bookid);
orderLine.setBook(book);
orderLine.setNum(num);
//System.out.println(orderLine.getBook().getName());
HttpSession session=request.getSession(); //取得session
ShoppingCart cart=(ShoppingCart) session.getAttribute("shoppingCart");
//System.out.println(orderLine.getBook().getId());
if(cart==null){
cart=new ShoppingCart();
session.setAttribute("shoppingCart", cart);
}
cart.add(orderLine);
RequestDispatcher rd=request.getRequestDispatcher("listBookStore.jsp");
rd.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
EditLineServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.book.bean.OrderLine;
import com.book.bean.ShoppingCart;
public class EditLineServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
Long bookid=Long.parseLong(request.getParameter("bookid"));
Long num=Long.parseLong(request.getParameter("num"));
HttpSession session=request.getSession(); //取得session
ShoppingCart cart=(ShoppingCart) session.getAttribute("shoppingCart");
OrderLine orderLine=cart.findOrderLine(bookid);
orderLine.setNum(num);
RequestDispatcher rd=request.getRequestDispatcher("listCart.jsp");
rd.forward(request, response);
}
}
DelLineServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.book.bean.OrderLine;
import com.book.bean.ShoppingCart;
public class DelLineServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
Long bookid=Long.parseLong(request.getParameter("bookid"));
HttpSession session=request.getSession(); //取得session
ShoppingCart cart=(ShoppingCart) session.getAttribute("shoppingCart");
System.out.println("-----------");
cart.remove(bookid);
RequestDispatcher rd=request.getRequestDispatcher("listCart.jsp");
rd.forward(request, response);
}
}
ClearCartServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.book.bean.ShoppingCart;
public class ClearCartServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
HttpSession session=request.getSession(); //取得session
ShoppingCart cart=(ShoppingCart) session.getAttribute("shoppingCart");
cart.clear();
RequestDispatcher rd=request.getRequestDispatcher("listBookStore.jsp");
rd.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
ConfirmOrderServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.book.bean.Customer;
import com.book.bean.OrderForm;
import com.book.bean.OrderLine;
import com.book.bean.ShoppingCart;
import com.book.common.util.ServiceFactory;
import com.book.service.IOrderService;
public class ConfirmOrderServlet extends HttpServlet {
IOrderService orderService=ServiceFactory.getOrderService();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
HttpSession session=request.getSession(); //取得session
ShoppingCart cart=(ShoppingCart) session.getAttribute("shoppingCart");
Collection<OrderLine> orderLines=cart.getOrderLines();
Customer customer=(Customer) session.getAttribute("customer");
Date date=new Date();
double cost=cart.getCost();
OrderForm orderForm=new OrderForm(customer,cost,date,orderLines);
try {
orderService.save(orderForm);
request.getRequestDispatcher("confirm.jsp").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ListOrderServlet.java
package com.book.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.book.bean.Customer;
import com.book.bean.OrderForm;
import com.book.common.exception.OrderException;
import com.book.common.util.ServiceFactory;
import com.book.service.IOrderService;
public class ListOrderServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
IOrderService service=ServiceFactory.getOrderService();
HttpSession session=request.getSession();
Customer customer=(Customer) session.getAttribute("customer");
long customerId=customer.getId();
try {
Collection<OrderForm> orders=service.listAllOrder(customerId);
request.setAttribute("orders", orders);
request.getRequestDispatcher("listOrder.jsp").forward(request, response);
} catch (OrderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Listerner(监听器)
ContextListener.java
package com.book.web.listener;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.book.bean.Book;
import com.book.common.exception.OrderException;
import com.book.common.util.ServiceFactory;
import com.book.service.IOrderService;
import com.book.service.impl.OrderServiceImpl;
public class ContextListener implements ServletContextListener {
private IOrderService orderService=ServiceFactory.getOrderService();
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc=sce.getServletContext();
Map<Long, Book> books;
try {
books = orderService.listAllBooks();
sc.setAttribute("books", books);
System.out.println(books.size());
} catch (OrderException e) {
e.printStackTrace();
}
}
}
SessionListener.java
package com.book.web.listener;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import com.book.bean.OrderLine;
import com.book.bean.ShoppingCart;
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent hse) {
System.out.println("SessionListener加载。。。。。。");
HttpSession session=hse.getSession();
ShoppingCart shoppingCart=new ShoppingCart();
session.setAttribute("shoppingCart", shoppingCart);
}
public void sessionDestroyed(HttpSessionEvent hse) {
HttpSession session=hse.getSession();
session.removeAttribute("shoppingCart");
}
}
Filter(过滤器)
见项目文件,略。。。。。。
Servlet
LoginServlet.java
见项目文件,略。。。。。。
RegisterServlet.java