Java Web 网络商城案例演示一、(环境搭建)

– 3.1 创建商品表

CREATE TABLE
product
(


pid
varchar(32) NOT NULL,


pname
varchar(50) DEFAULT NULL, #商品名称


market_price
double DEFAULT NULL, #市场价


shop_price
double DEFAULT NULL, #商城价


pimage
varchar(200) DEFAULT NULL, #商品图片路径


pdate
date DEFAULT NULL, #上架时间


is_hot
int(11) DEFAULT NULL, #是否热门:0=不热门,1=热门


pdesc
varchar(255) DEFAULT NULL, #商品描述


pflag
int(11) DEFAULT 0, #商品标记:0=未下架(默认值),1=已经下架


cid
varchar(32) DEFAULT NULL, #分类id

PRIMARY KEY (
pid
),

KEY
product_fk_0001
(
cid
),

CONSTRAINT
product_fk_0001
FOREIGN KEY (
cid
) REFERENCES
category
(
cid
)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

– 3.2 初始化商品默认数据

INSERT INTO
product
VALUES (‘1’,‘适用小米note m4小米4c小米3手机屏幕总成寄修维修单独换外屏触摸’,1399,1299,‘products/1/c_0001.jpg’,‘2015-11-02’,1,‘小米 4c 标准版 全网通 白色 移动联通电信4G手机 双卡双待’,0,‘1’),(‘10’,‘华为 Ascend Mate7’,2699,2599,‘products/1/c_0010.jpg’,‘2015-11-02’,1,‘华为 Ascend Mate7 月光银 移动4G手机 双卡双待双通6英寸高清大屏,纤薄机身,智能超八核,按压式指纹识别!!选择下方“移动老用户4G飞享合约”,无需换号,还有话费每月返还!’,0,‘1’),(‘11’,‘vivo X5Pro’,2399,2298,‘products/1/c_0014.jpg’,‘2015-11-02’,1,‘移动联通双4G手机 3G运存版 极光白【购机送蓝牙耳机+蓝牙自拍杆】新升级3G运行内存·双2.5D弧面玻璃·眼球识别技术’,0,‘1’),(‘12’,‘努比亚(nubia)My 布拉格’,1899,1799,‘products/1/c_0013.jpg’,‘2015-11-02’,0,‘努比亚(nubia)My 布拉格 银白 移动联通4G手机 双卡双待【嗨11,下单立减100】金属机身,快速充电!布拉格相机全新体验!’,0,‘1’),(‘13’,‘华为 麦芒4’,2599,2499,‘products/1/c_0012.jpg’,‘2015-11-02’,1,‘华为 麦芒4 晨曦金 全网通版4G手机 双卡双待金属机身 2.5D弧面屏 指纹解锁 光学防抖’,0,‘1’),(‘14’,‘vivo X5M’,1899,1799,‘products/1/c_0011.jpg’,‘2015-11-02’,0,‘vivo X5M 移动4G手机 双卡双待 香槟金【购机送蓝牙耳机+蓝牙自拍杆】5.0英寸大屏显示·八核双卡双待·Hi-Fi移动KTV’,0,‘1’),(‘15’,‘Apple iPhone 6 (A1586)’,4399,4288,‘products/1/c_0015.jpg’,‘2015-11-02’,1,‘Apple iPhone 6 (A1586) 16GB 金色 移动联通电信4G手机长期省才是真的省!点击购机送费版,月月送话费,月月享优惠,畅享4G网络,就在联通4G!’,0,‘1’),(‘16’,‘华为 HUAWEI Mate S 臻享版’,4200,4087,‘products/1/c_0016.jpg’,‘2015-11-03’,0,‘华为 HUAWEI Mate S 臻享版 手机 极昼金 移动联通双4G(高配)满星评价即返30元话费啦;买就送电源+清水套+创意手机支架;优雅弧屏,mate7升级版’,0,‘1’),(‘17’,‘索尼(SONY) E6533 Z3+’,4099,3999,‘products/1/c_0017.jpg’,‘2015-11-02’,0,‘索尼(SONY) E6533 Z3+ 双卡双4G手机 防水防尘 涧湖绿索尼z3专业防水 2070万像素 移动联通双4G’,0,‘1’),(‘18’,‘HTC One M9+’,3599,3499,‘products/1/c_0018.jpg’,‘2015-11-02’,0,‘HTC One M9+(M9pw) 金银汇 移动联通双4G手机5.2英寸,8核CPU,指纹识别,UltraPixel超像素前置相机+2000万/200万后置双镜头相机!降价特卖,惊喜不断!’,0,‘1’),(‘19’,‘HTC Desire 826d 32G 臻珠白’,1599,1469,‘products/1/c_0020.jpg’,‘2015-11-02’,1,‘后置1300万+UltraPixel超像素前置摄像头+【双】前置扬声器+5.5英寸【1080p】大屏!’,0,‘1’),(‘2’,‘中兴 AXON’,2899,2699,‘products/1/c_0002.jpg’,‘2015-11-05’,1,‘中兴 AXON 天机 mini 压力屏版 B2015 华尔金 移动联通电信4G 双卡双待’,0,‘1’),(‘20’,‘小米 红米2A 增强版 白色’,649,549,‘products/1/c_0019.jpg’,‘2015-11-02’,0,‘新增至2GB 内存+16GB容量!4G双卡双待,联芯 4 核 1.5GHz 处理器!’,0,‘1’),(‘21’,‘魅族 魅蓝note2 16GB 白色’,1099,999,‘products/1/c_0021.jpg’,‘2015-11-02’,0,‘现货速抢,抢完即止!5.5英寸1080P分辨率屏幕,64位八核1.3GHz处理器,1300万像素摄像头,双色温双闪光灯!’,0,‘1’),(‘22’,‘三星 Galaxy S5 (G9008W) 闪耀白’,2099,1999,‘products/1/c_0022.jpg’,‘2015-11-02’,1,‘5.1英寸全高清炫丽屏,2.5GHz四核处理器,1600万像素’,0,‘1’),(‘23’,‘sonim XP7700 4G手机’,1799,1699,‘products/1/c_0023.jpg’,‘2015-11-09’,1,‘三防智能手机 移动/联通双4G 安全 黑黄色 双4G美国军工IP69 30天长待机 3米防水防摔 北斗’,0,‘1’),(‘24’,‘努比亚(nubia)Z9精英版 金色’,3988,3888,‘products/1/c_0024.jpg’,‘2015-11-02’,1,‘移动联通电信4G手机 双卡双待真正的无边框!金色尊贵版!4GB+64GB大内存!’,0,‘1’),(‘25’,‘Apple iPhone 6 Plus (A1524) 16GB 金色’,5188,4988,‘products/1/c_0025.jpg’,‘2015-11-02’,0,‘Apple iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机 硬货 硬实力’,0,‘1’),(‘26’,‘Apple iPhone 6s (A1700) 64G 玫瑰金色’,6388,6088,‘products/1/c_0026.jpg’,‘2015-11-02’,0,‘Apple iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机 硬货 硬实力’,0,‘1’),(‘27’,‘三星 Galaxy Note5(N9200)32G版’,5588,5388,‘products/1/c_0027.jpg’,‘2015-11-02’,0,‘旗舰机型!5.7英寸大屏,4+32G内存!不一样的SPen更优化的浮窗指令!赠无线充电板!’,0,‘1’),(‘28’,‘三星 Galaxy S6 Edge+(G9280)32G版 铂光金’,5999,5888,‘products/1/c_0028.jpg’,‘2015-11-02’,0,‘赠移动电源+自拍杆+三星OTG金属U盘+无线充电器+透明保护壳’,0,‘1’),(‘29’,‘LG G4(H818)陶瓷白 国际版’,3018,2978,‘products/1/c_0029.jpg’,‘2015-11-02’,0,‘李敏镐代言,F1.8大光圈1600万后置摄像头,5.5英寸2K屏,3G+32G内存,LG年度旗舰机!’,0,‘1’),(‘3’,‘华为荣耀6’,1599,1499,‘products/1/c_0003.jpg’,‘2015-11-02’,0,‘荣耀 6 (H60-L01) 3GB内存标准版 黑色 移动4G手机’,0,‘1’),(‘30’,‘微软(Microsoft) Lumia 640 LTE DS (RM-1113)’,1099,999,‘products/1/c_0030.jpg’,‘2015-11-02’,0,‘微软首款双网双卡双4G手机,5.0英寸高清大屏,双网双卡双4G!’,0,‘1’),(‘31’,‘宏碁(acer)ATC705-N50 台式电脑’,2399,2299,‘products/1/c_0031.jpg’,‘2015-11-02’,0,‘爆款直降,满千减百,品质宏碁,特惠来袭,何必苦等11.11,早买早便宜!’,0,‘2’),(‘32’,‘Apple MacBook Air MJVE2CH/A 13.3英寸’,6788,6688,‘products/1/c_0032.jpg’,‘2015-11-02’,0,‘宽屏笔记本电脑 128GB 闪存’,0,‘2’),(‘33’,‘联想(ThinkPad) 轻薄系列E450C(20EH0001CD)’,4399,4199,‘products/1/c_0033.jpg’,‘2015-11-02’,0,‘联想(ThinkPad) 轻薄系列E450C(20EH0001CD)14英寸笔记本电脑(i5-4210U 4G 500G 2G独显 Win8.1)’,0,‘2’),(‘34’,‘联想(Lenovo)小新V3000经典版’,4599,4499,‘products/1/c_0034.jpg’,‘2015-11-02’,0,‘14英寸超薄笔记本电脑(i7-5500U 4G 500G+8G SSHD 2G独显 全高清屏)黑色满1000減100,狂减!火力全开,横扫3天!’,0,‘2’),(‘35’,‘华硕(ASUS)经典系列R557LI’,3799,3699,‘products/1/c_0035.jpg’,‘2015-11-02’,0,‘15.6英寸笔记本电脑(i5-5200U 4G 7200转500G 2G独显 D刻 蓝牙 Win8.1 黑色)’,0,‘2’),(‘36’,‘华硕(ASUS)X450J’,4599,4399,‘products/1/c_0036.jpg’,‘2015-11-02’,0,‘14英寸笔记本电脑 (i5-4200H 4G 1TB GT940M 2G独显 蓝牙4.0 D刻 Win8.1 黑色)’,0,‘2’),(‘37’,‘戴尔(DELL)灵越 飞匣3000系列’,3399,3299,‘products/1/c_0037.jpg’,‘2015-11-03’,0,’ Ins14C-4528B 14英寸笔记本(i5-5200U 4G 500G GT820M 2G独显 Win8)黑’,0,‘2’),(‘38’,‘惠普(HP)WASD 暗影精灵’,5699,5499,‘products/1/c_0038.jpg’,‘2015-11-02’,0,‘15.6英寸游戏笔记本电脑(i5-6300HQ 4G 1TB+128G SSD GTX950M 4G独显 Win10)’,0,‘2’),(‘39’,‘Apple 配备 Retina 显示屏的 MacBook’,11299,10288,‘products/1/c_0039.jpg’,‘2015-11-02’,0,‘Pro MF840CH/A 13.3英寸宽屏笔记本电脑 256GB 闪存’,0,‘2’),(‘4’,‘联想 P1’,2199,1999,‘products/1/c_0004.jpg’,‘2015-11-02’,0,‘联想 P1 16G 伯爵金 移动联通4G手机充电5分钟,通话3小时!科技源于超越!品质源于沉淀!5000mAh大电池!高端商务佳配!’,0,‘1’),(‘40’,‘机械革命(MECHREVO)MR X6S-M’,6799,6599,‘products/1/c_0040.jpg’,‘2015-11-02’,0,‘15.6英寸游戏本(I7-4710MQ 8G 64GSSD+1T GTX960M 2G独显 IPS屏 WIN7)黑色’,0,‘2’),(‘41’,‘神舟(HASEE) 战神K660D-i7D2’,5699,5499,‘products/1/c_0041.jpg’,‘2015-11-02’,0,‘15.6英寸游戏本(i7-4710MQ 8G 1TB GTX960M 2G独显 1080P)黑色’,0,‘2’),(‘42’,‘微星(MSI)GE62 2QC-264XCN’,6199,5999,‘products/1/c_0042.jpg’,‘2015-11-02’,0,‘15.6英寸游戏笔记本电脑(i5-4210H 8G 1T GTX960MG DDR5 2G 背光键盘)黑色’,0,‘2’),(‘43’,‘雷神(ThundeRobot)G150S’,5699,5499,‘products/1/c_0043.jpg’,‘2015-11-02’,0,‘15.6英寸游戏本 ( i7-4710MQ 4G 500G GTX950M 2G独显 包无亮点全高清屏) 金’,0,‘2’),(‘44’,‘惠普(HP)轻薄系列 HP’,3199,3099,‘products/1/c_0044.jpg’,‘2015-11-02’,0,‘15-r239TX 15.6英寸笔记本电脑(i5-5200U 4G 500G GT820M 2G独显 win8.1)金属灰’,0,‘2’),(‘45’,‘未来人类(Terrans Force)T5’,10999,9899,‘products/1/c_0045.jpg’,‘2015-11-02’,0,‘15.6英寸游戏本(i7-5700HQ 16G 120G固态+1TB GTX970M 3G GDDR5独显)黑’,0,‘2’),(‘46’,‘戴尔(DELL)Vostro 3800-R6308 台式电脑’,3299,3199,‘products/1/c_0046.jpg’,‘2015-11-02’,0,‘(i3-4170 4G 500G DVD 三年上门服务 Win7)黑’,0,‘2’),(‘47’,‘联想(Lenovo)H3050 台式电脑’,5099,4899,‘products/1/c_0047.jpg’,‘2015-11-11’,0,‘(i5-4460 4G 500G GT720 1G独显 DVD 千兆网卡 Win10)23英寸’,0,‘2’),(‘48’,‘Apple iPad mini 2 ME279CH/A’,2088,1888,‘products/1/c_0048.jpg’,‘2015-11-02’,0,‘(配备 Retina 显示屏 7.9英寸 16G WLAN 机型 银色)’,0,‘2’),(‘49’,‘小米(MI)7.9英寸平板’,1399,1299,‘products/1/c_0049.jpg’,‘2015-11-02’,0,‘WIFI 64GB(NVIDIA Tegra K1 2.2GHz 2G 64G 2048*1536视网膜屏 800W)白色’,0,‘2’),(‘5’,‘摩托罗拉 moto x(x+1)’,1799,1699,‘products/1/c_0005.jpg’,‘2015-11-01’,0,‘摩托罗拉 moto x(x+1)(XT1085) 32GB 天然竹 全网通4G手机11月11天!MOTO X震撼特惠来袭!1699元!带你玩转黑科技!天然材质,原生流畅系统!’,0,‘1’),(‘50’,‘Apple iPad Air 2 MGLW2CH/A’,2399,2299,‘products/1/c_0050.jpg’,‘2015-11-12’,0,‘(9.7英寸 16G WLAN 机型 银色)’,0,‘2’),(‘6’,‘魅族 MX5 16GB 银黑色’,1899,1799,‘products/1/c_0006.jpg’,‘2015-11-02’,0,‘魅族 MX5 16GB 银黑色 移动联通双4G手机 双卡双待送原厂钢化膜+保护壳+耳机!5.5英寸大屏幕,3G运行内存,2070万+500万像素摄像头!长期省才是真的省!’,0,‘1’),(‘7’,‘三星 Galaxy On7’,1499,1398,‘products/1/c_0007.jpg’,‘2015-11-14’,0,‘三星 Galaxy On7(G6000)昂小七 金色 全网通4G手机 双卡双待新品火爆抢购中!京东尊享千元良机!5.5英寸高清大屏!1300+500W像素!评价赢30元话费券!’,0,‘1’),(‘8’,‘NUU NU5’,1288,1190,‘products/1/c_0008.jpg’,‘2015-11-02’,0,‘NUU NU5 16GB 移动联通双4G智能手机 双卡双待 晒单有礼 晨光金香港品牌 2.5D弧度前后钢化玻璃 随机附赠手机套+钢化贴膜 晒单送移动电源+蓝牙耳机’,0,‘1’),(‘9’,‘乐视(Letv)乐1pro(X800)’,2399,2299,‘products/1/c_0009.jpg’,‘2015-11-02’,0,‘乐视(Letv)乐1pro(X800)64GB 金色 移动联通4G手机 双卡双待乐视生态UI+5.5英寸2K屏+高通8核处理器+4GB运行内存+64GB存储+1300万摄像头!’,0,‘1’);

– 4 创建订单表

CREATE TABLE
orders
(


oid
varchar(32) NOT NULL,


ordertime
datetime DEFAULT NULL, #下单时间


total
double DEFAULT NULL, #总价


state
int(11) DEFAULT NULL, #订单状态:1=未付款;2=已付款,未发货;3=已发货,没收货;4=收货,订单结束


address
varchar(30) DEFAULT NULL, #收获地址


name
varchar(20) DEFAULT NULL, #收获人


telephone
varchar(20) DEFAULT NULL, #收货人电话


uid
varchar(32) DEFAULT NULL,

PRIMARY KEY (
oid
),

KEY
order_fk_0001
(
uid
),

CONSTRAINT
order_fk_0001
FOREIGN KEY (
uid
) REFERENCES
user
(
uid
)

) ;

– 5 创建订单项表

CREATE TABLE
orderitem
(


itemid
varchar(32) NOT NULL,


quantity
int(11) DEFAULT NULL, #购买数量


total
double DEFAULT NULL, #小计


pid
varchar(32) DEFAULT NULL, #购买商品的id


oid
varchar(32) DEFAULT NULL, #订单项所在订单id

PRIMARY KEY (
itemid
),

KEY
order_item_fk_0001
(
pid
),

KEY
order_item_fk_0002
(
oid
),

CONSTRAINT
order_item_fk_0001
FOREIGN KEY (
pid
) REFERENCES
product
(
pid
),

CONSTRAINT
order_item_fk_0002
FOREIGN KEY (
oid
) REFERENCES
orders
(
oid
)

) ;

二、环境搭建


创建目录结构

导入架包

3、工具类的构建

package cn.itzheng.store.utils;

import javax.servlet.http.Cookie;

public class CookUtils {

/**

通过名称在cookie数组获取指定的cookie

@param name cookie名称

@param cookies cookie数组

@return

*/

public static Cookie getCookieByName(String name, Cookie[] cookies) {

if(cookies!=null){

for (Cookie c : cookies) {

//通过名称获取

if(name.equals(c.getName())){

//返回

return c;

}

}

}

return null;

}

}

package cn.itzheng.store.utils;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JDBCUtils {

private static ComboPooledDataSource ds = new ComboPooledDataSource();

private static ThreadLocal tl=new ThreadLocal<>();

/**

从线程中获取连接

@return

@throws SQLException

*/

public static Connection getConnection() throws SQLException {

//从线程中获取conneciton

Connection conn = tl.get();

if(conn==null){

conn=ds.getConnection();

//和当前线程绑定

tl.set(conn);

}

return conn;

}

// 获取数据源

public static DataSource getDataSource() {

return ds;

}

// 释放资源

public static void closeResource( Statement st, ResultSet rs) {

closeResultSet(rs);

closeStatement(st);

}

// 释放资源

public static void closeResource(Connection conn, Statement st, ResultSet rs) {

closeResource(st, rs);

closeConn(conn);

}

// 释放 connection

public static void closeConn(Connection conn) {

if (conn != null) {

try {

conn.close();

//和线程解绑

tl.remove();

} catch (SQLException e) {

e.printStackTrace();

}

conn = null;

}

}

// 释放 statement ctrl + shift + f 格式化代码

public static void closeStatement(Statement st) {

if (st != null) {

try {

st.close();

} catch (SQLException e) {

e.printStackTrace();

}

st = null;

}

}

// 释放结果集

public static void closeResultSet(ResultSet rs) {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

rs = null;

}

}

//开启事务

public static void startTransaction() throws SQLException{

getConnection().setAutoCommit(false);

}

/**

事务提交且释放连接

*/

public static void commitAndClose(){

Connection conn = null;

try {

conn=getConnection();

//事务提交

conn.commit();

//关闭资源

conn.close();

//解除版定

tl.remove();

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

事务回滚且释放资源

*/

public static void rollbackAndClose(){

Connection conn = null;

try {

conn=getConnection();

//事务回滚

conn.rollback();

//关闭资源

conn.close();

//解除版定

tl.remove();

} catch (SQLException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws SQLException {

System.out.println(getConnection().toString());

}

}

package cn.itzheng.store.utils;

import java.util.Properties;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;

public class MailUtils {

public static void sendMail(String email, String emailMsg)

throws AddressException, MessagingException {

// 1.创建一个程序与邮件服务器会话对象 Session

Properties props = new Properties();

//设置发送的协议

//props.setProperty(“mail.transport.protocol”, “SMTP”);

//设置发送邮件的服务器

//props.setProperty(“mail.host”, “smtp.126.com”);

//props.setProperty(“mail.smtp.auth”, “true”);// 指定验证为true

// 创建验证器

Authenticator auth = new Authenticator() {

public PasswordAuthentication getPasswordAuthentication() {

//设置发送人的帐号和密码

return new PasswordAuthentication(“admin”, “admin@store.com”);

}

};

Session session = Session.getInstance(props, auth);

// 2.创建一个Message,它相当于是邮件内容

Message message = new MimeMessage(session);

//设置发送者

message.setFrom(new InternetAddress(“admin@store.com”));

//设置发送方式与接收者

message.setRecipient(RecipientType.TO, new InternetAddress(email));

//设置邮件主题

message.setSubject(“用户激活”);

// message.setText(“这是一封激活邮件,请点击”);

String url=“http://localhost:8080/MyTomcat/UserServlet?method=active&code=”+emailMsg;

String content=“

来自购物天堂的激活邮件!激活请点击以下链接!

”+url+“

”;

//设置邮件内容

message.setContent(content, “text/html;charset=utf-8”);

// 3.创建 Transport用于将邮件发送

Transport.send(message);

}

public static void main(String[] args) throws AddressException, MessagingException {

MailUtils.sendMail(“aaa@store.com”, “abcdefg”);

}

}

package cn.itzheng.store.utils;

import java.math.BigInteger;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

public class MD5Utils {

/**

使用md5的算法进行加密

*/

public static String md5(String plainText) {

byte[] secretBytes = null;

try {

secretBytes = MessageDigest.getInstance(“md5”).digest(

plainText.getBytes());

} catch (NoSuchAlgorithmException e) {

throw new RuntimeException(“没有md5这个算法!”);

}

String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字

// 如果生成数字未满32位,需要前面补0

for (int i = 0; i < 32 – md5code.length(); i++) {

md5code = “0” + md5code;

}

return md5code;

}

}

package cn.itzheng.store.utils;

import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;

import org.apache.commons.beanutils.ConvertUtils;

import org.apache.commons.beanutils.converters.DateConverter;

public class MyBeanUtils {

public static void populate(Object obj, Map<String, String[]> map) {

try {

// 由于BeanUtils将字符串”1992-3-3″向user对象的setBithday();方法传递参数有问题,手动向BeanUtils注册一个时间类型转换器

// 1_创建时间类型的转换器

DateConverter dt = new DateConverter();

// 2_设置转换的格式

dt.setPattern(“yyyy-MM-dd”);

// 3_注册转换器

ConvertUtils.register(dt, java.util.Date.class);

BeanUtils.populate(obj, map);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

public static T populate(Class clazz, Map<String, String[]> map) {

try {

T obj=clazz.newInstance();

// 由于BeanUtils将字符串”1992-3-3″向user对象的setBithday();方法传递参数有问题,手动向BeanUtils注册一个时间类型转换器

// 1_创建时间类型的转换器

DateConverter dt = new DateConverter();

// 2_设置转换的格式

dt.setPattern(“yyyy-MM-dd”);

// 3_注册转换器

ConvertUtils.register(dt, java.util.Date.class);

BeanUtils.populate(obj, map);

return obj;

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

package cn.itzheng.store.utils;

import java.util.UUID;

public class UploadUtils {

/**

获取随机名称

@param realName 真实名称

@return uuid

*/

public static String getUUIDName(String realName){

//realname 可能是 1.jpg 也可能是 1

//获取后缀名

int index = realName.lastIndexOf(“.”);

if(index==-1){

return UUID.randomUUID().toString().replace(“-”, “”).toUpperCase();

}else{

return UUID.randomUUID().toString().replace(“-”, “”).toUpperCase()+realName.substring(index);

}

}

/**

获取文件真实名称

@param name

@return

*/

public static String getRealName(String name){

// c:/upload/1.jpg 1.jpg

//获取最后一个”/”

int index = name.lastIndexOf(“”);

return name.substring(index+1);

}

/**

获取文件目录

@param name 文件名称

@return 目录

*/

public static String getDir(String name){

int i = name.hashCode();

String hex = Integer.toHexString(i);

int j=hex.length();

for(int k=0;k<8-j;k++){

hex=“0”+hex;

}

return “/”+hex.charAt(0)+“/”+hex.charAt(1);

}

@SuppressWarnings(“unused”)

public static void main(String[] args) {

//String s=“G:day17-基础加强
esource1.jpg”;

String s=“1.jgp”;

String realName = getRealName(s);

//System.out.println(realName);

String uuidName = getUUIDName(realName);

//System.out.println(uuidName);

String dir = getDir(realName);

System.out.println(dir);

}

}

package cn.itzheng.store.utils;

import java.util.UUID;

public class UUIDUtils {

/**

随机生成id

@return

*/

public static String getId() {

return UUID.randomUUID().toString().replace(“-”, “”).toUpperCase();

}

public static String getUUID64() {

return getId() + getId();

}

/**

生成随机码

@return

*/

public static String getCode() {

return getId();

}

public static void main(String[] args) {

System.out.println(getId());

/*

String str = UUID.randomUUID().toString(); System.out.println(str);

*/

}

}

c3p0配置文件

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/store_40

root

root

30000

30

10

30

100

10

200

10

1

0

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/store_40

root

root

5

20

10

40

0

5

导入最后一个工具类解决编码乱码的问题,导入到filter

package cn.itzheng.store.web.filter;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.util.Map;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

import javax.servlet.http.HttpServletResponse;

/**

统一编码

@author Administrator

*/

public class EncodingFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

// TODO Auto-generated method stub

}

@Override

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

//1.强转

HttpServletRequest request=(HttpServletRequest) req;

HttpServletResponse response=(HttpServletResponse) resp;

//System.out.println(“@@@@@@@@@@@@@@@@@@”);

//2.放行

chain.doFilter(new MyRequest(request), response);

}

@Override

public void destroy() {

// TODO Auto-generated method stub

}

}

//之前的MyRequest增强了request.getParameter(“name”);方法

//增强了所有的获取参数的方法request.getParameterValues(“name”);

//增强了所有的获取参数的方法request.getParameterMap();

class MyRequest extends HttpServletRequestWrapper{

private HttpServletRequest request;

private boolean flag=true;

public MyRequest(HttpServletRequest request) {

super(request);

this.request=request;

}

@Override

public String getParameter(String name) {

if(name==null || name.trim().length()==0){

return null;

}

String[] values = getParameterValues(name);

if(valuesnull || values.length0){

return null;

}

return values[0];

}

@Override

/**

hobby=[eat,drink]

*/

public String[] getParameterValues(String name) {

if(name==null || name.trim().length()==0){

return null;

}

Map<String, String[]> map = getParameterMap();

if(map==null || map.size()==0){

return null;

}

return map.get(name);

}

@Override

/**

map{ username=[tom],password=[123],hobby=[eat,drink]}

*/

public Map<String,String[]> getParameterMap() {

/**

首先判断请求方式

若为post request.setchar…(utf-8)

若为get 将map中的值遍历编码就可以了

*/

String method = request.getMethod();

if(“post”.equalsIgnoreCase(method)){

try {

request.setCharacterEncoding(“utf-8”);

return request.getParameterMap();

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容