课程设计项目购物网站的后台管理班级软件1307
学号
姓名刘帅
上课时间 2015.9.8——2015.9.18实训教师(签名)
辅导教师签名
一实训每日报告
第一天
Jdbc
Tes t 1packagecom.sun.jdbc;importjava.sql .Connection;importjava.sql .DriverManager;import java.sql .PreparedStatement;import java.sql .ResultSet;import java.sql .SQLException;publ ic classTest1{publ ic staticvoid main(String[] args)throws InstantiationException,
I l legalAccessException,ClassNotFoundException,SQLException{
//一个基本JDBC操作步骤
String className="com.mysql .jdbc.Driver";
Stringurl="jdbc:mysql ://127.0.0.1:3306/goodsdb?useUnicode=true&characterEncoding=utf8";
//1 创建数据库连接对象java.sql .Connection他是一个规范。具体的实现是由各数据库厂商提供的。
Class.forName(className).newInstance();//类加载。加载数据库的驱动类。
Connection conn=DriverManager.getConnection(url, "root", "") ;
// System.out.println(conn);
//2操作发送SQL。需要使用PreparedStatement对象。
String sql="select* from goods inner join types on goods.goodsType=types. id";
PreparedStatement pstat=conn.prepareStatement(sql);
//如果操作的增删改与查询执行的方法不同
//pstat.executeUpdate();
//3接收查询结果,接收数据库查询结果的对象叫结果集对象。 rs二维表格
ResultSet rs= pstat.executeQuery();whi le(rs.next()){
System.out.println("商品编号 "+rs.getInt("id"));
System.out.println(rs.getString("goodsName"));
System.out.println(rs.getFloat("goodsPrice"));
System.out.println(rs.getInt("goodsNum"));
System.out.println(rs.getInt("goodsType"));
System.out.println(rs.getString("type Name"));
System.out.println("---------------");
}
//4关闭
conn.close();
System.out.println("end");
}
}
Tes t 2packagecom.sun.jdbc;importjava.sql .Connection;importjava.sql .DriverManager;import java.sql .PreparedStatement;import java.sql .ResultSet;import java.sql .SQLException;publ ic classTest2{publ ic static void main(String[] args)throws InstantiationException,
I l legalAccessException,ClassNotFoundException,SQLException{
//一个基本JDBC操作步骤
String className="com.mysql .jdbc.Driver";
Stringurl="jdbc:mysql ://127.0.0.1:3306/goodsdb?useUnicode=true&characterEncoding=utf8";
//1 创建数据库连接对象java.sql .Connection他是一个规范。具体的实现是由各数据库厂商提供的。
Class.forName(className).newInstance();//类加载。加载数据库的驱动类。
Connection conn=DriverManager.getConnection(url, "root", "") ;
// System.out.println(conn);
//2操作发送SQL。需要使用PreparedStatement对象。
//在Pstat中可以使用参数。在SQL语句中使用号占位在
String sql="insert into goods(goodsName,goodsPrice,goodsNum,goodsType)values(?,?,?,?)";
PreparedStatement pstat=conn.prepareStatement(sql);
//如果操作的增删改与查询执行的方法不同pstat.setString(1, "手电筒");pstat.setFloat(2, 15.2f);pstat.setInt(3, 100);pstat.setInt(4,2);int i=pstat.executeUpdate();
System.out.println("操作影响了"+i+"行");
//4关闭conn.close();
System.out.println("end");
}
}
Utilspackagecom.sun.uti ls;importjava.sql .Connection;
importjava.sql .DriverManager;import java.sql .SQLException;
**
*数据库连接的工具类封装了数据库连接的创建和关闭的同一个线程中没关闭数据库连接之间获得数据库连接对象都是同一个。
*
*@author Boss
*
*/publ ic classConnectionUti ls {
//本地线程对象。一个线程中只有一个本地线程对象本地线程对象中可以存放一个对象。private staticThreadLocal<Connection>threadLocal=new
ThreadLocal<Connection>();private static final String CLASS_NAME="com.mysql .jdbc.Driver";private staticfinal String URL=
"jdbc:mysql ://127.0.0.1:3306/goodsdb?useUnicode=true&characterEncoding=utf8";static{try{
//类加载。加载数据库的驱动类。
Class.forName(CLASS_NAME).newInstance();
}catch(InstantiationException | I l legalAccessException
| ClassNotFoundException e) {e.pri ntSta ckTra ce();
}
}publ ic static Connection getConnection() throws SQLException{
Connection conn=threadLocal .get();//先从本地线程对象取数据库连接对象if(conn==nul l | | conn. isClosed()){//如果本地线程中没有连接对象
//创建连接
System.out.println("创建数据库连接 ");conn=DriverManager.getConnection(URL, "root", "");
//将连接放到本地线程threadLocal .set(conn);
}return conn;
}publ ic staticvoid closeConnection(){try{
Connection conn=getConnection();if(conn !=nul l&&!conn. isClosed()){conn.close();
}
}catch(SQLException e) {e.pri ntSta ckTra ce();
}final ly{threadLocal .set(nul l);
}
}
}
Te stpackage com.test;import java.sql .SQLException;import com.sun.uti ls.ConnectionUti ls;publ ic classTest {publ ic static void main(String[] args)throws SQLException{//TODO Auto-generated method stub
System.out.println(ConnectionUti ls.getConnection());System.out.println(ConnectionUti ls.getConnection());ConnectionUti ls.closeConnection();
System.out.println(ConnectionUti ls.getConnection());}
}
第二天
DBCP
Te stpackage com.test;importjava.sql .Connection;import com.uti ls.ConnectionUti ls;publ ic classTest {publ ic static void main(String[] args)throws Exception{//TODO Auto-generated method stub
Connection conn=ConnectionUti ls.getConnection();System.out.println(conn);
ConnectionUti ls.closeConnection();
}
}
Utilspackage com.uti ls;importjava. io. IOException;import java. io. InputStream;importjava.sql .Connection;import java.sql .SQLException;importjava.uti l .Properties;import javax.sql .DataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;
**
*在这个类中连接对象的管理1获取连接对象2释放连接对象
*
*@author Boss
*/publ ic classConnectionUti ls {
//加载资源文件的内容private static Properties properties=new Properties();//加载资源文件的对象static{
//is对象是一个输入流对象try{
//is对象负责连接jdbc.properties文件
InputStream is=ConnectionUti ls.class
.getResourceAsStream("/jdbc.properties");
//将资源文件的内容加载到properties对象中properties. load(is);
//关闭is流对象is.close();
}catch(IOException e) {
//TODO Auto-generated catch blocke.pri ntSta ckTra ce();
}//加载资源文件
}private staticConnection conn=nul l;
**
*获取数据库连接的方法
*@return数据库连接对象
*@throws Exception
*/publ ic static Connection getConnection() throws Exception{
//连接的创建是有条件的连接不存在或连接已经关闭if (conn==nul l | | conn. isClosed()) {
//ds是数据源对象。在这个对象中管理和维护了大量数据库连接对象
DataSource ds=BasicDataSourceFactory.createDataSource(properties);conn=ds.getConnection();
}return conn;
}
**
*释放数据库连接的方法
*/publ ic staticvoid closeConnection() {try{
if (conn !=nul l&&!conn. isClosed()) {conn.close();
}
}catch(SQLException e) {e.pri ntSta ckTra ce();
}
}
}
Webroot
<%@page import="java.text.SimpleDateFormat"%>
<%@page language="java" import="java.uti l .*" pageEncoding="utf-8"%>
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerNa me()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML4.01Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>MyJSP' 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">
<!--
<l ink rel="stylesheet" type="text/css"href="styles.css">
-->
</head>
<body>
This is myJSP page.<br>
系统当前时间
<%
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date=new Date();
String str =sdf.format(date);out.println(str);
%>
</body>
</html>
第三天
Co m.d aogoodsDAO:packagecom.dao;importjava.sql .Connection;import java.sql .PreparedStatement;import java.sql .ResultSet;import java.uti l .ArrayList;importjava.uti l .List;importcom.domain.Goods;import com.domain.Types;import com.uti ls.ConnectionUti ls;
**
*封装针对Goods表CURD的操作
*
*@author Boss
*
*/publ ic class GoodsDAO{
**
*查询所有商品的方法
*
*@return所有商品信息的集合对象
*@throws Exception
*/publ ic List<Goods>findAl l() throws Exception{try{
List<Goods>goodsList=new ArrayList<Goods>();
Connection conn=ConnectionUti ls.getConnection();
String sql="select* from goods innerjoin types on goods.goodsType=types. id";
PreparedStatement pstat=conn.prepareStatement(sql);
ResultSet rs=pstat.executeQuery();whi le(rs.next()) {
Goods goods=new Goods();goods.setId(rs.getInt("id"));goods.setGoodsName(rs.getString("goodsName"));goods.setGoodsPrice(rs.getFloat("goodsPrice"));goods.setGoodsNum(rs.getInt("goodsNum"));
Types types=new Types();types.setId(rs.getInt("goodsType"));types.setTypeName(rs.getString("typeName"));goods.setTypes(types);goodsList.add(goods);
}
return goodsList;
}final ly{
ConnectionUti ls.closeConnection();}
}
}
Com.domain:
Goods:packagecom.domain;
**
*封装goods表的数据的对象
*@author Boss
*
*/publ icclassGoods {private int id;private String goodsName;private float goodsPrice;private int goodsNum;private Types types;//对应商品的类型publ ic Goods() {
//TODO Auto-generated constructor stub}publ ic intgetId() {return id;
}publ icvoidsetId(int id) {this. id=id;
}publ ic String getGoodsName() {return goodsName;
}publ ic void setGoodsName(String goodsName) {this.goodsName=goodsName;
}publ ic floatgetGoodsPrice() {return goodsPrice;
}publ ic void setGoodsPrice(float goodsPrice) {this.goodsPrice=goodsPrice;
}publ ic intgetGoodsNum() {return goodsNum;
}
VPSDime是2013年成立的国外VPS主机商,以大内存闻名业界,主营基于OpenVZ和KVM虚拟化的Linux套餐,大内存、10Gbps大带宽、大硬盘,有美国西雅图、达拉斯、新泽西、英国、荷兰机房可选。在上个月搞了一款达拉斯Linux系统VPS促销,详情查看:VPSDime夏季促销:美国达拉斯VPS/2G内存/2核/20gSSD/1T流量/$20/年,此次推出一款Windows VPS,依然是...
达州创梦网络怎么样,达州创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,一手四川托管服务商,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网封UDP,无视UDP攻击,机房集群高达1.2TB,单机可提供1...
Letbox 云服务商在前面的文章中其实也有多次介绍,这个服务商其实也算是比较老牌的海外服务商,几年前我也一直有使用过他们家的VPS主机,早年那时候低至年付15-35美元左右的VPS算式比较稀缺的。后来由于服务商确实比较多,而且也没有太多的网站需要用到,所以就没有续费,最近这个服务商好像有点活动就躁动的发布希望引起他人注意。这不有看到所谓的家中有喜事,应该是团队中有生宝宝了,所以也有借此来发布一些...