购物车模块设计及实现(SSH架构)

一、系统需求分析

1.系统介绍

2.系统功能性需求

①用户浏览应用,即登录首页,在首页中主页列出最新出版的4本书,和几本主编推荐的书。

②在首页中提供购物车的链接、分类浏览的链接、结账的链接、查看订单的链接和其它相关的链接;首页中还应提供搜索的功能,方便用户者找到想要的商品。

③用户者通过搜索得到的商品和通过分类浏览得到的商品都应该提供一个放入购物车的链接,和一些商品的简单描述。当访问者点击此链接时,向购物车增加一本书。如果选择的书已在购物车中,购物车中的数量增1,而不是增加一个新商品。如果用户还想进一步了解商品的详细信息,用户可以点击商品的名字或者商品的图片进入商品的详细信息页面,此页面同样应该提供放入购物车的页面。在商品的详细信息页面中,商品的图片应该控制大小,并提供放大图片的链接,用户点击链接即可查看大图。

④用户点击放入购物车的按钮后,进入管理购物车的页面,其页面显示当前购物车的内容。这个页面(即管理购物车的页面)会列出购物车中的商品及每件商品的数量和价格。在列表的底部是购物车内商品的总价。每件商品的数量以用户可修改的方式列出。列表底部有一个“更新”按钮,可以刷新页面并用新的数量更新用户的购物车。如果在购物车的数量中输入0,则将该商品从购物车中删除。在每一件商品的右边还有一个移除的链接,如果点击这个链接,则可以把这件商品从购物车中移除。

⑤如果用户进入到管理购物车页面,而购物车中没有任何商品,就要显示一条消息,指示购物车中没有商品,并提供返回的链接。

⑥在管理购物车页面中,用户可以选择清除整个购物车,删除购物车中所有的商品。当用户选择此链接时,就会删除购物车中的所有商品,并为用户显三分类列表。

⑦用户从菜单中选择“结账”按钮,或选择在管理购物车中的“结账”按钮,得到一个收集个人信息和信用卡号信息的表单。表单确保输入了所有的值,对邮政编码和信用卡号做适当的验证。在表单的底部,会再次显示当前订单的内容和总价。

⑧如果用户选择结账但购物车中没有商品,就不会显示表单,并用一条消息指示没有要结账的商品。

⑨在结账表单中输入所有值后,用户点击“结账”按钮,订单提交给系统。如果允许信用卡方式结账,就为用户显示一个确认屏幕并将当前购物车清空。如果不允许信用卡购买,就为用户显示一条消息,请求再次尝试或联系银行。在拒绝的情况下,不会清空购物车。

⑩ 客户需要跟踪被拒绝的订单,所以即使被拒绝,也应当记录下来,并标记为被拒绝。

11在应用的所有页面中,要有一小块单独的区域显示购物车中当前商品的数○

量和价格。

12系统应当确保图书价格的改变不会影响已经记录订单的订单总价,也不应○

影响用户已经增加到购物车中的图书的价格。

13另外用户使用的语言可能不只是中文,所以还要提供英语语言的界面,方○

便用户顺利完成购物活动。

3.软硬件环境需求

因为任务只是实现购物车模块,因此对软硬件的要求都可以不用太高。 硬件环境:普通的个人计算机作为服务器

操作系统:Windows XP或以上版本

数据库系统:MySql 5.0或以上版本

Web服务器:Apache Tomcat 6.018或以上版本

Java运行环境:JDK 1.5

客户端:浏览器(可用不同浏览器进行测试)

二、系统设计

1.系统概述

此项目要完成的是购物车模块的设计和实现,由于购物车不是孤立存在的,是个某个具体的系统的一个重要的模块,所以在设计时把此模块的设计说成是系统的设计。

这个系统要完成的功能只要是商品的管理、购物车的管理和其它辅助功能的管理。

2.系统总体结构;3.子系统的结构与功能;4.系统业务流程图;5.技术方案选择;目前,比较流行的B/S设计有基于JSP、ASP.;因为该模块尚未与其他系统进行太多的交互,所以使用;序,所以这里暂时不考虑J2EE;而选择了JSP技术后,再经过考虑,选择了MVC设;在持久持,选用Hibernate,是考虑到了其高;在视同层,因为考虑到整个应用的风格应保持一致,而


2.系统总体结构

3.子系统的结构与功能

4.系统业务流程图

5.技术方案选择

目前,比较流行的B/S设计有基于JSP、ASP.NET、PHP、CGI及J2EE等模式。相比较而言PHP的功能相对简单,不适合做大程序,此模块虽然不大,但考虑到此模块的拓展性,不选择PHP;而CGI效率相对较低,所以也不考虑。

因为该模块尚未与其他系统进行太多的交互,所以使用J2EE的模式并不能够体现出J2EE本身的优势。而JSP又是J2EE的核心技术之一,可以随时升级为J2EE程

序,所以这里暂时不考虑J2EE。而JSP与ASP.NET中进行选择时,考虑到JSP具有Java语言的各种优势,并且有很多免费的JSP服务器,所以最终选择JSP。

而选择了JSP技术后,再经过考虑,选择了MVC设计模式作为整个应用的开发模式;而Struts提供了MVC的完整实现,可以提高开发效率,所以选择了Struts作为MVC的实现。

在持久持,选用Hibernate,是考虑到了其高速的开发效率,及代码重用性高、易于维护等各种优势。

在视同层,因为考虑到整个应用的风格应保持一致,而无需大量复制粘贴代码,选用了Tile作为应用的布局。

综上所述,该模块的实现技术为:Struts+Hibernate+Tiles。

6.开发环境配置

为了提高开发的效率,本模块使用NetBeans 6.5 集成环境进行开发。其中Apache Tomcat可以在安装NetBeans时一同安装。在安装NetBeans前,先安装JDK,然后配置JDK的环境变量。当安装好JDK和NetBeans后就可以进行应用的开发。

三、数据库设计

1.概念设计(E-R图)

根据前面的需求分析,得出需要保存在数据库中的对象有图书(book),图书分类 (category),客户订单(customerorder),订单商品(orderitem)及订单状态(orderstatus)。它 们 的关系如下(省略了各实体的属性):

2.逻辑关系设计

将上面的E-R图转换成逻辑关系表,如下: book() category() customerorder() orderitem()

orderstatus()

3.物理设计

category表

customerorder表

orderitem表

status表

4.数据库实现(在具体数据库中实现)

DROP DATABASE IF EXISTS `bookstore`; CREATE database bookstore; USE bookstore;

SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for book -- ---------------------------- DROP TABLE IF EXISTS `book`; CREATE TABLE `book` (

`id` int(11) NOT NULL AUTO_INCREMENT, `ISBN` varchar(20) NOT NULL, `author` varchar(20) NOT NULL, `name` varchar(100) NOT NULL, `category` int(11) NOT NULL, `unitprice` float NOT NULL, `publish` varchar(50) NOT NULL, `publishdate` datetime NOT NULL, `picture` varchar(50) NOT NULL, `description` varchar(2000) NOT NULL,

PRIMARY KEY (`id`), KEY `category` (`category`),

CONSTRAINT `book_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8;

-- ---------------------------- -- Table structure for category -- ----------------------------

DROP TABLE IF EXISTS `category`; CREATE TABLE `category` (

`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL DEFAULT '''''', `description` varchar(200) NOT NULL DEFAULT '''''', PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Table structure for customerorder -- ----------------------------

DROP TABLE IF EXISTS `customerorder`; CREATE TABLE `customerorder` (

`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(10) NOT NULL, `phonenum` varchar(20) NOT NULL, `email` varchar(50) NOT NULL, `address` varchar(100) NOT NULL, `zipcode` varchar(10) NOT NULL, `orderdate` datetime NOT NULL, `status` int(11) NOT NULL,

`cardnumber` varchar(20) NOT NULL, PRIMARY KEY (`id`), KEY `status` (`status`),

CONSTRAINT`customerorder;)ENGINE=InnoDBAUTO_INCRE;------------------------;--Tablestructurefororder;------------------------;DROPTABLEIFEXISTS`orderi;CREATETABLE`orderitem`(;`id`in


CONSTRAINT `customerorder_ibfk_1` FOREIGN KEY (`status`) REFERENCES `orderstatus` (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Table structure for orderitem

-- ----------------------------

DROP TABLE IF EXISTS `orderitem`;

CREATE TABLE `orderitem` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`bookid` int(11) NOT NULL DEFAULT '0',

`orderid` int(11) DEFAULT '0',

`qty` int(11) NOT NULL DEFAULT '0',

`unitprice` float NOT NULL DEFAULT '0',

PRIMARY KEY (`id`),

KEY `bookid` (`bookid`),

KEY `orderid` (`orderid`),

CONSTRAINT `orderitem_ibfk_1` FOREIGN KEY (`bookid`) REFERENCES `book` (`id`),

CONSTRAINT `orderitem_ibfk_2` FOREIGN KEY (`orderid`) REFERENCES `customerorder` (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Table structure for orderstatus

-- ----------------------------

DROP TABLE IF EXISTS `orderstatus`;

CREATE TABLE `orderstatus` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) NOT NULL COMMENT '订单状态名字(接受或拒绝)', PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

四、界面设计

整体布局首页界面设计

根据这个基本布局,可以设计出其它的页面,每个页面不同的地方是主体部分,其余的都一样。

其中首页的效果图如下:

五、系统代码编写

1.系统文件目录结构

(1)应用目录

build目录存放应用编译的文件

dist目录存放应用打包后的war文件

src目录存放源程序

test目录存放测试代码程序

web目录存放JSP

(2)Java类的包结构

缺省:存放Hibernate配置文件和实体类的映射

文件

com.bookstore.entity:存放实体类的对象,如

Book、Category等。

com.bookstore.filter::存放应用程序的过滤

器,像字符集的过滤器。

com.bookstore.persist:存放数据库中持久对象

中所涉及的对象,包括数据的存取,修改。

com.bookstore.struts:存放应用的国际化文件,其中包括三个资源文件(默认、中文、英文)。

com.bookstore.action:存放Action类。

com.bookstore.form:存放Form类。

com.bookstore.util:存放应用的工具类。

2.关键实体对象的实现

实体对象的代码和Hibernate配置文件和

Hibernate映射文件主要由NetBeans生成,生成的代

码目录如下,下面只给出实体对象的主要代码和增加

的方法,详细的代码见附录。

Hibernate.cfg.xml的主要代码如下:

<session-factory>

<property

name="hibernate.dialect">org.hiberna

te.dialect.MySQLDialect</property>

<property

name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property

name="hibernate.connection.url">jdbc:mysql://localhost:3306/bookstore</property>

<property

name="hibernate.connection.username">root</property>

<property

name="hibernate.connection.password">root</property>

<property name="show_sql">false</property>

<property

name="hibernate.connection.pool_size">100</property>

<mapping resource="Orderstatus.hbm.xml"/>

<mapping resource="Book.hbm.xml"/>

<mapping resource="Category.hbm.xml"/>

<mapping resource="Customerorder.hbm.xml"/>

<mapping resource="Orderitem.hbm.xml"/>

</session-factory>

Book中覆盖了hasCode()和toString()方法。

@Override

public int hashCode() {

return getId();

}

@Override

public boolean equals(Object o) {

Book b = (Book) o;

if (getId() == b.getId()) {

return true;

}

return false;

}

Category中新增了统计图书数量的方法。

public int getBookCount() {

return books.size();

}

Customerorder中新增了统计商品的总金;publicfloatgetValue(){;Iterator<Orderitem>;while(it.hasNext()){;Orderitemitem=it.next();;rs+=item.getValue();;returnrs;;Orderitem中增加的方法如下:;publicfloat

Customerorder中新增了统计商品的总金额的方法。

public float getValue() {

Iterator<Orderitem> it = orderitems.iterator(); float rs = 0.0f;

while (it.hasNext()) {

Orderitem item = it.next();

rs += item.getValue();

}

return rs;

}

Orderitem中增加的方法如下:

public float getValue() {

return qty * unitprice;

}

public int getBookId() {

return book.getId();

}

public int getOrderId() {

return customerorder.getId();

}

@Override

public int hashCode() {

return getBook().getId();

}

@Override

public boolean equals(Object o) {

Orderitem i = (Orderitem) o;

return book.equals(i.getBook());

}

ShoppingCart.表示的是购物车对象,其生命周期从客户第一次进入网站一直到离开或结束订单。购物车维护商品的一个java.util.Set。Set接口的实现可以确保商品集合的唯一性,这样Set中就不会有相同的对象。ShoppingCart还需要提供方法让应用管理购物车的内容,如增加商品、替换商品和删除商品。

购物车对象是整个购物车模块的核心,其详细的代码如下:

package com.bookstore.entity;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

public class ShoppingCart {

private Set<Orderitem> items = null;//订单商品

public ShoppingCart() {

items = new HashSet<Orderitem>();

}

/**

* 增加订单商品。

* @param toAdd

*/

public void addOrIncrementItem(Orderitem toAdd) {

Orderitem existing =

getItemByBookID(toAdd.getBook().getId());

if (existing != null) {

removeItem(existing);

int qty = existing.getQty();

toAdd.setQty(toAdd.getQty() + qty);

}

addItem(toAdd);

}

/**

* 替换订单商品

* @param toReplace

*/

public void replaceItem(Orderitem toReplace) {

Orderitem existing =

getItemByBookID(toReplace.getBook().getId());

if (existing != null) {

removeItem(existing);

}

addItem(toReplace);

}

/**

* 增加订单商品,使用此方法时需先验证购物车中是否已经存在此种

商品

* @param item

*/

private void addItem(Orderitem item) {

items.add(item);

}

public void removeItem(Orderitem item) {

items.remove(item);

}

/**

* 清空购物车

*/

public void clear() {

items.clear();

}

public Set<Orderitem> getItems() {

return items;

}

/**

* 购物车中订单商品的数量

* @return

*/

public int getItemCount() {

return items.size();

}

/**

* 根据Book的ID,在购物车中查找订单商品

* @param bookId

* @return

*/

public Orderitem getItemByBookID(int bookId) {

Iterator<Orderitem> it = getItems().iterator(); while (it.hasNext()) {

Orderitem item = it.next();

if (item.getBookId() == bookId) {

return item;

}

}

return null;

}

/**

*

* @return 购物车中商品的总金额

*/

public float getValue() {

Set<Orderitem> item = getItems();

float result = 0.0f;

Iterator<Orderitem> it = item.iterator();

while (it.hasNext()) {

Orderitem i = it.next();

result += i.getValue();

}

return result;

}

}

3.持久性管理实现

持久性管理主要是完成各实体的持久化

操作,如 查询、删除、更新等。因为本模块采用了Hibernate技术,对各实体的管理的操作简化了很多。这一部分的代码放在右图的类包中,其中EntityManager对象是具体的对各实体的持久化操作,EntityManagerFactory是一个工厂类,提供具体的实体持久化操作的对象。HibernateSessionFactory对象是一个管理Hiernate的Session的类,提供的方法主要有产生Session,关闭Session。HiernateFactory的代码是由MyEclipse插件生成。

EntityManager提供的方法如图所示。其中getObjects(String hsql, int pageSize, int pageNo)是分页查询实现的方法。

@SuppressWarnings("unchecked")

protected EntityManager(Class c) {

this.c = c;

}

@SuppressWarnings("unchecked")

public List findAll() {

Session s = null;

try {

s = HibernateSessionFactory.getSession(); Criteria crit = s.createCriteria(c); return crit.list();

} finally {

HibernateSessionFactory.closeSession(); }

}

/**

* 使用HQL语句进行查询

* @param hsql 查询语句

* @return 符合条件的对象集合

*/

@SuppressWarnings("unchecked")

public List getObjects(String hsql) {

Session s = null;

try {

s = HibernateSessionFactory.getSession(); return s.createQuery(hsql).list(); } finally {

HibernateSessionFactory.closeSession(); }

}

/**

* 根据ID值得到持久化的对象

* @param id ID值

* @return 指定ID的对象

*/;publicObjectfindById(int;Sessions=null;;try{;s=HibernateSessionFactor;returns.get(c,newInteger;}finally{;HibernateSessionFactory.;/**;*通过HQL语句进行分页查询;*@paramhsql要执行的HQL语句;*@param


*/

public Object findById(int id) {

Session s = null;

try {

s = HibernateSessionFactory.getSession();

return s.get(c, new Integer(id));

} finally {

HibernateSessionFactory.closeSession();

}

}

/**

* 通过HQL语句进行分页查询

* @param hsql 要执行的HQL语句

* @param pageSize 每页的大小

* @param pageNo 第几页

* @return 符合条件的结果

*/

public Pager getObjects(String hsql, int pageSize, int pageNo) {

Session s = null;

try {

s = HibernateSessionFactory.getSession();

int startIndex = pageSize * (pageNo - 1);

int rowCount =

s.createQuery(hsql).list().size();

List result =

s.createQuery(hsql).setFirstResult(startIndex).setMaxResults(pageSize).list();

return new Pager(pageSize, pageNo, rowCount,

result);

} finally {

HibernateSessionFactory.closeSession();

}

}

public Object saveOrUpdate(Object ob) {

Session s = null;

try {

s = HibernateSessionFactory.getSession();

Transaction tx = (Transaction)

s.beginTransaction();

s.saveOrUpdate(ob);

tx.commit();

18

return ob;

} finally {

HibernateSessionFactory.closeSession();

}

}

EntityManagerFactory类的实现比较简单,它的方法如下,主要是提供各

EntityManager对象。其中的一个方法的代码如下:

public static EntityManager getBookManagerInstance() {

return new EntityManager(Book.class);

}

4.控制器对象实现

控制器主要是控制整个操作的流程,它所在类包如图,其中BaseAction是抽象类,其它的Action类都继承自BaseAction。在BaseAction主要是做一些初始化工作,如保

方法,

public ActionForward execute(ActionMapping mapping, 持每个会话中都有一个ShoppingCart。BaseAction类实现了Action的execute

ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

19

intialize(request);

ActionForward fwd = doAction(mapping, form, request, response);

saveToken(request);

return fwd;

}

BaseAction中的doAction是抽象方法,继承BaseAction的类必须实现这个方法。saveToken方法是保存令牌,如果需要防止重复提交,可以先进行判断Token是否有效,然后再进行业务操作。

5.各模块的具体实现

按照系统的功能,可以把系统的实现按各模块来实现。由于采用了Struts模式,所以各模块的实现还需要在struts-config.xml文件里配置,配置的结果如下图所示。示图中采用了Tiles,所有还需要tiles-defs..xml文件,这两个文件的配置具体的代码见附录。

20

(1)商品展示模块

这个模块主要是实现从数据库中提取出最新出版的书即可。对应的文件是DefaultAction.java。关键代码如下:

EntityManager bookdao =

EntityManagerFactory.getBookManagerInstance();

List<Book> books = null;

books = bookdao.getObjects("from Book order by publishdate desc", 4, 1).getResultList();

request.setAttribute("books", books);

21

(2)商品搜索模块

商品的搜索最重要的是从表单的数据中构造出语句来,然后把查询结果分页显示出来。搜索表单的文件是com/bookstore/struts./form/SearchForm.java,它的属性如下:

private String property; // 要查询的属性

private String key; // 要查询的值

private String priceCtx; // 价格复选标记

private String start ; // 最低价格

private String end ; // 最高价格

private String sortRadio;//排序方式

com/bookstore/struts./form/GetHQL.java文件是构造查询HQL语句的类的实现,它有一个静态的方法,实现的功能是根据SearchForm中的数据返回一条HQL语句。实现的思路是逐步判断表单中的每一个值,然后根据此值来判断如何构造HQL语句。具体的代码见附录。

得到了HQL语句后,就要从数据库中查询数据,因为查询的结果可能比较多,所有要进行分页查询。关键代码如下:

EntityManager bookdao =

EntityManagerFactory.getBookManagerInstance();

Pager pager2 = null;

if (pageNo != null) {

pager2 =

bookdao.getObjects(GetHQL.getHQL(searchForm), 5, new

Integer(pageNo).intValue());

} else {

pager2 =

bookdao.getObjects(GetHQL.getHQL(searchForm), 5, 1);

}

Pager是存储分页信息的类,它有如下属性:

protected int pageSize = BookstoreConstants.pageSize;// 每页大小

protected int pageNo = BookstoreConstants.pageNo; // 当前页码

protected int[] pageSizeList = {5, 10, 15, 20, 30, 40, 50};

protected int rowCount = 0; // 记录总数

protected int pageCount = 1; // 总页数

protected int startIndex = 1; // 起始行数

protected int endIndex = 1; // 结束行数

22

protectedintfirstPageNo=;protectedintprePageNo=1;;protectedintnextPageNo=1;protectedintlastPageNo=1;protectedListresultList;;Pager的这些属性主要在构造函数中实现,它的构;publicPager(intpageSize,;resul


protected int firstPageNo = 1; // 第一页页码

protected int prePageNo = 1; // 上一页页码

protected int nextPageNo = 1; // 下一页页码

protected int lastPageNo = 1; // 最后页页码

protected List resultList; // 结果集存放List

Pager的这些属性主要在构造函数中实现,它的构造函数如下:

public Pager(int pageSize, int pageNo, int rowCount, List

resultList) {

this.pageSize = pageSize;

this.pageNo = pageNo;

this.rowCount = rowCount;

this.resultList = resultList;

this.pageCount = (rowCount % pageSize == 0) ?

(rowCount / pageSize)

: (rowCount / pageSize) + 1;

this.startIndex = pageSize * (pageNo - 1);

this.endIndex = this.startIndex +

resultList.size();

this.lastPageNo = this.pageCount;

if (this.pageNo > 1) {

this.prePageNo = this.pageNo - 1;

}

if (this.pageNo == this.lastPageNo) {

this.nextPageNo = this.lastPageNo;

} else {

this.nextPageNo = this.pageNo + 1;

}

}

(3)购物车管理模块

购物车的管理主要是实现添加商品、移除商品、修改数量、清空购物车。

实现这些功能的类是ManagerItemAction和ManageCartAction,其中

ManagerItemAction主要是实现添加商品、移除商品和清空购物车。做完这三

个动作中的每一个动作后,把业务的流程交给另一个类来处理,即

ManageCartAction。在这个Action中还有另外一个功能——修改数量。因为把

添加、移除和清空动作后的流程都指向ManagerAction,而这些操作并不需要

进行数量的修改,所以这个Action要加一个是否需要修改数量的判断,以免做

不必要的数量修改操作。关键代码如下:

public ActionForward doAction(ActionMapping mapping,

ActionForm form,

HttpServletRequest request, HttpServletResponse

response)

throws Exception {

ManageCartForm cartForm = (ManageCartForm) form;

String update = cartForm.getAction();

ShoppingCart cart = getOrCreateCart(request);

//update不为空,即表示此请求取是从showCart.jsp发出,否

则是其他页面发出。

//如果是从showCart.jsp发出,即意味着点击了更新按钮,所有

要进行购物车的更新

if (update != null && update.equals("update")) {

updateCart(request, cartForm);

}

initializeForm(cartForm, cart);

return mapping.findForward("success");

}

initializeForm(cartForm, cart);做的工作是初始化表单,以正确显示出当前

购物车中订单商品的数量。

updateCart(request, cartForm);方法为修改数量的具体实现。实现的思路是

从表单中获取新的商品的数量,然后逐一设置对应订单商品的数量。难点是

如今区分开不同订单商品的不同数量。在这里使用了Map集合,其中Key为图

书的ID,Value为订单商品的数量。由于图书的ID的惟一的,所以可以用Map

正确区分出各订单商品的数量。另外如果把订单商品的数量设为0或者为负数,

就把这个订单商品从购物车中移除。如果订单商品的数量中出现了不合法的数

据,如小数点或者字母,则要不修改订单商品的数量。实现的代码如下:

private void updateCart(HttpServletRequest request,

ManageCartForm form) {

ShoppingCart cart = getOrCreateCart(request);

Map values = form.getValues();

Set<Orderitem> items = cart.getItems();

List<Orderitem> itemArr = new ArrayList(items);

for (int i = 0; i < itemArr.size(); i++) {

Orderitem item = itemArr.get(i);

String newQty = (String)

values.get(String.valueOf(item.getBookId()));

if (MyTools.isInteger(newQty)) {

Integer qty = new Integer(newQty);

if (qty.intValue() > 0) {

item.setQty(qty);

cart.replaceItem(item);

} else {

cart.removeItem(item);

}

}

}//End of for

}

(4)结账(收银台)模块

结账要完成的是收集客户的资料,然后把客户的订单保持到数据库中。收

集客户资料需要一个表单,表单的验证如果手动编写代码比较复杂,所以选择

了动态验证表单,这只需要在struts-config.xml文件中配置如下表单。

<form-bean name="checkOutForm"

type="org.apache.struts.validator.DynaValidatorForm">

<form-property name="userName"

type="java.lang.String"/>

<form-property name="phoneNum"

type="java.lang.String"/>

<form-property name="email"

type="java.lang.String"/>

<form-property name="address"

type="java.lang.String"/>

<form-property name="zipCode"

type="java.lang.String"/>

<form-property name="cardNumber"

type="java.lang.String"/>

</form-bean>

这个表单的验证在validation.xml文件中实现,内容如下:

<form name="checkOutForm">

<field property="userName" depends="required"> <arg0 key="user.name"/>

</field>

<field property="phoneNum"

depends="required,mask">

<arg0 name="required" key="user.phoneNum"/>

<msg name="mask"

key="checkout.error.phoneNum"/>

<var>

<var-name>mask</var-name>

<var-value>^1[0-9]{10}$</var-value>

</var>

</field>

<field property="email"

depends="required,email">

<arg0 name="required" key="user.email"/>

<arg0 name="email" key="user.email"/>

</field>

<field property="address" depends="required"> <arg0 key="user.address"/>

</field>

<field property="zipCode"

depends="required,mask">

<arg0 name="required" key="user.zipCode"/>

<msg name="mask"

key="checkout.error.zipcode"/>

<var>

<var-name>mask</var-name>

<var-value>^[0-9]{6}$</var-value>

</var>

</field>

<field property="cardNumber"

depends="required,creditCard">

<arg0 name="required"

key="user.cartNumber"/>

<msg name="creditCard"

key="checkout.error.cardNumber"/>

</field>

</form>

表单的验证首先在客户端进行,如果客户端没有禁止JavaScript,就可以在

客户端的浏览器中进行验证,然后再由服务器验证。如果客户端禁止了

JavaScript,就只能由服务器进行验证。这种双重验证比单纯使用JavaScript或

者服务器的验证是有好处的:如果只用服务器端进行验证,会加大服务器的负

担;如果只用客户端进行验证,万一用户禁用了JavaScript,就不能进行验证。

开启客户端的验证比较简单,只要进行如下设置即可

<html:javascript formName="checkOutForm"/>

<html:form action="completeOrder.do" method="post"

οnsubmit="return

validateCheckOutForm(this);">

得到验证的表单信息提交到服务器后,就要根据表单中的信用卡号是否有效进行订单状态的设置。如果信用卡号有效并且有足够的余额,就把订单状态设置为接受支付,否则为拒绝支付。这一部分只是进行了模拟操作,因为在现实中支付功能通常由第三方来完成。

(5)订单查询

此功能由SalesReportAction完成,具体要做的事不多,只是把订单按时间的降序排序进行查询。代码如下:

public ActionForward doAction(ActionMapping mapping,

ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

EntityManager manager =

EntityManagerFactory.getOrderManagerInstance();

List<Customerorder> orders =

manager.getObjects("from Customerorder order by orderdate desc");

request.setAttribute("orders", orders);

return mapping.findForward("success");

}

(6)语言转换

语言转换的实现首先要创建不同语言的资源文件,在这个系统中,一共设置了三个资源文件:默认、中文和英文。转换的操作由ChangeLocaleAction完成,这个Action是Struts提供的例子中的文件,要使用这个Action,需要提供两个链接:

<html:link

action="/ChangeLocale?language=en&country=US">English</html:link>

<html:link

action="/ChangeLocale?language=zh&country=CN">简体中文

</html:link>

(7)另:字符集过滤器的配置;字符集过滤器使用了Tomcat提供的例子中的代码;SetCharacterEncodingFilt;<filter>;<filter-name>SetCh;<filter-class>com.;<init-param>;<param-name>encodi;<pa


(7) 另:字符集过滤器的配置。

字符集过滤器使用了Tomcat提供的例子中的代码,具体的做法是把

SetCharacterEncodingFilter.java文件放到某个包中,这里为com.bookstore.filter,然后在web.xml中配置这个过滤器,配置如下:

<filter>

<filter-name>SetCharacterEncodingFilter</filter-name>

<filter-class>com.bookstore.filter.SetCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>ignore</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>SetCharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

使用了字符集过滤器后就不需要在持久化操作前进行字符集的转换。

六、测试

1.功能测试

(1)链接测试

链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所有链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面(只有知道正确的URL地址才能访问的页面)。

本模块的所涉及的页面不多,可以采用手工的方法进行测试,并且可以在测试的过程中改正出现的问题。

(2)表单测试

在本模块中需要进行表单测试的有搜索表单和订单信息表单。在搜索表单中需重点测试的是价格的值的测试,因为在进行数据库查询的时候,价格的数据类型为浮点,需要把字符型的转换为浮点,其间有可能出现异常。

订单信息表单中需要验证的输入格式比较多,有邮政编码、有手机号码、有信用卡号等,在测试时需要尽量假设出用户可能出现的各种错误,测试服务器是否可能给出正确的错误提示信息。

表单的测试也用手工测试。

(3)数据库测试

在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或者程序设计问题等引起的。所以在测试时,针对这两种情况分别进行测试。

(4)应用程序特定的功能需求

本模块最重要的功能是购物车的实现,所有在进行这方面的测试时,要着重测试整个购物的流程是否正确,是否顺畅,操作是否方便。

2.性能测试

(1)链接速度测试

(2)负载测试

(3)压力测试

以上三方面的测试需要有专门的测试软件进行,暂时先不考虑。

3.接口测试

(1)服务器接口测试

第一个需要测试的接口是浏览器与服务器的接口。测试可以这样进行:测试人员提交事务,然后查看服务器记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。

(2)错误测试

尝试在处理过程中中断事务,看看会发生什么情况?订单是否完成?尝试中断用户到服务器的网络链接。常识中断Web服务器到信用卡验证服务器的链接。在这些情况下,系统能否正确处理这些错误。如果用户自己中断事务处理,在订单已保存而用户没有返回网站确认的时候,需要由客户代表致电用户进行订单确认。

4.可用性测试

(1)导航测试

导航测试主要是测试Web应用系统的页面结构、导航、菜单、链接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。

当Web应用系统的层次一旦决定,就可以着手测试用户导航功能,让最终用户参与这种测试,效果更好。

(2)图形测试

本模块在这方面的测试主要有:一,要确保图形有明确的用途,图片或动画不要胡乱地堆在一起。图书的图片的尺寸要控制在一定范围内,尽量小一点,并且提供到一个大图的链接;二,验证所有页面字体的风格是否一致;三、背景颜色应该与字体颜色和前景颜色想搭配;四,图片的大小和质量也要考虑,可以采用JPG格式存储图书图片。

(3)内容测试

内容测试用来检验Web应用系统提供的信息的正确性、准确性和相关性。例如图书的信息是否正确、准确,不能发生张冠李戴的错误。特别是图书的价格和图书的图片不能弄错。

(4)整体界面测试

整体界面是指整个Web应用系统的页面结构设计,给用户的一个整体感。例如,当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方,整个Web应用系统的设计风格是否一致。

对所有的可用性测试,都需要外部人员的参与,最好是最终用户的参与,因为Web应用系统最终要面对的就是最终用户。

5.兼容性测试

(1)平台测试

平台测试,是指在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。Web应用系统的最终用户使用的操作系统可能不是统一的,同一个应用可能在某些系统性下能正常运行,但在另外的操作系统下可能会失败。

(2)浏览器测试

浏览器是Web客户端最核心的构件,来自不同厂商的流览器对Java、JavaScript、CSS、HTML有不同层次的支持。而用户使用的浏览器也很可能是不同的,所以需要进行浏览器的测试。这方面的测试可以使用市场中占有大比例的浏览器进行测试,如IE的各种版本、Firefox、Mozilla、Opera、Netscape Navigetor等。

七、总结

这个项目基本上实现了系统的需求,但仍存在着其它的问题。

界面方面。整个系统的整体风格大致统一,但还有很大的改进空间。整个界面不能给人一种很舒适的感觉。文字的字体、大小、颜色与背景并不十分协调,并且过于呆板,未能以丰富的形式展示给用户。

流程方面。

分页方面。订单查询结果未进行分页。分页的结果中未实现随意跳转页面的链接,只能进行首页、上一页、下一页、尾页的跳转。分页还不能灵活,例如每页显示的结果数不能由用户决定,只能由系统决定,比较好的做法是,每页显示的结果数由用户自己决定。

性能方面

测试方面。测试的项目还不完全,像安全测试等没有进行。测试的工具采用的基本上是手工,这样比较容易出错,不能测试出系统潜在的错误。系统的性能方面的测试基本上没有得到很好的测试,因为缺少测试工具。测试中最终用户的参与人数不多,反馈信息有些不足。

安全方面。用户订单的信息包含了敏感数据,像手机号码、信用卡号等,在传输的过程中未采用安全传输技术,如HTTPS协议。购物车未经登录的用户也可以使用,更好的做法是在使用购物车前首先验证用户是否为合法的用户。

功能方面。(1)语言转换应该由下拉框完成,这样不但可以节省空间,而且可以使页面更美观。如果是两种语言的选择,采用链接的方法还可以接受;如果是几种语言的选择的话,这种做法就真的不可取了。(2)点击放入购物车后的页面

应该停留在当前页面,并且把购物车的数据更新。而目前的做法是点击放入购物车后,页面跳转到管理购物车的页面,而用户可能并不希望在此时见到这个页面,而是在最后结账的时候看到这个页面。


  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印   util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以改进做成小工具。 Java右键弹出菜单源码 简单 Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟   用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有帮助。 Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例   Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式   //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener   在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话……   还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器   Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例   各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java源码,网络相关,UDP   基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实世界模型   基于EJB的真实世界模型,附源代码,部分功能需JSP配合完成。 J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理   这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu   Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看   Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,系统相关,数字签名,数字证书   Java 数字签名、数字证书的相关实例。   关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于验证签名。   数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录   一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器   Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:   可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序   Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,   当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。   QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏   Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测   用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字   Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。 Java吃豆子游戏源代码 6个目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码   JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板   使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制   Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制   Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰效果   Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密   WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书   Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和客户端 2个目标文件,如题。 Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视   用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择   Java语言开发的简洁实用的日期选择控件,源码文件功能说明:   [DateChooser.java] Java 日期选择控件(主体类) [public]   [TablePanel.java] 日历表格面板   [ConfigLine.java] 控制条类   [RoundBox.java] 限定选择控件   [MonthMaker.java] 月份表算法类   [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP   Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个目标文件 摘要:Java源码,网络相关,FTP   Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。   部分源代码摘录:   ftpClient = new FtpClient(); //实例化FtpClient对象   String serverAddr=jtfServer.getText(); //得到服务器地址   String user=jtfUser.getText(); //得到用户名   String pass=jtfPass.getPassword().toString(); //得到密码   ftpClient.openServer(serverAddr); //连接到服务器   ftpClient.login(user,pass); //在服务器上注册   InputStream is=ftpClient.list(); //得到服务器目录与文件列表输入流   StringBuffer info=new StringBuffer(); //实例化StringBuffer对象,用于输出信息   int ch;   while ((ch=is.read())>=0){ //未读完列表,则继续   info.append((char)ch); //增加信息   …… Java实现的点对点短消息发送协议(smpp)开发包源码 70个目标文件,如题。 Java实现的放大镜效果附有源文件 1个目标文件 内容索引:Java源码,初学实例,放大镜,哈哈镜   Java实现的放大镜效果附有源文件,编译环境最近出了问题,因此没有测试,也没有抓到图,希望各位自行测试一下。 Java实现跟踪鼠标运行坐标的源码 1个目标文件 内容索引:JAVA源码,系统相关,鼠标钩子   Java编写的一个小程序,用以实现跟踪鼠标的运行位置(坐标),程序很小,很实用,暂时抓不到截图。 Java实现移动的遮照效果 1个目标文件 摘要:Java源码,初学实例,遮照效果   Java实现移动的遮照效果,先实现椭圆形的遮罩,实例化媒体加载器,最后在创建缓冲区中的图像形成遮罩效果,而且它是会移动的。 Java鼠标拖拽功能 1个目标文件 Netbeans平台下实现的JAVA 拖放效果的一个实例,包括源代码和所需的图片资源。 (运行后会全屏显示窗体,没有关闭按钮,可使用快捷键Ctrl + F4关闭~) Java图片倒影效果实例源码 1个目标文件 摘要:Java源码,图形操作,图片倒影   Java图片倒影效果实例源码,有意思也很有参考价值的一个Java图像处理小程序,先读取图像然后进行图像重绘,产生倒影的效果,仅供参考。 java网络五子棋的源代码 7个目标文件 AVA网络五子棋,实现基本功能,无多余花哨内容,适合大学生课程设计学习使用,内含完整可运行源代码及运行指导视频,Eclipse环境。 Java文件选择器源代码 2个目标文件 摘要:Java源码,文件操作,文件选择器   Java文件选择器源代码 Java文字跑马灯与信息窗口 1个目标文件 摘要:Java源码,文件操作,跑马灯   Java文字跑马灯效果与信息窗口,将一段文字按照滚动的方式显示出来,在网页设计中比较常见,本例使用Java实现文字跑马灯效果。 Java写的ATM机取款模拟程序 9个目标文件 内容索引:JAVA源码,综合应用,ATM,JAVA,模拟   基于Java技术,只实现了ATM机的取款过程,有兴趣和有能力的高手可以再加以改进,这样就更完美了。可作为Java初学者《面向对象》编程的一个很好范例。     在这个程序中,用到以下JAVA类库:      dataAccess(数据操作)类:包含用于数据库的相关操作   atmScreen(ATM屏幕)类:主要创建各操作窗体和相应按钮事件   Account(用户帐户)类:包含用户信息的验证、余额查询和扣钱等方法   readCard(读卡机)类:包含读取用户卡号和退卡(退出系统)   moneyMac(取钱机)类:只用于打印清单   Atm(系统)类:系统主方法的开始,负责调用其他类 Java写的巨型LCD液晶时钟显示屏 8个目标文件 内容索引:JAVA源码,综合应用,电子钟,LCD,液晶   一个巨型LCD数字电子时钟,用JAVA写的,运行截图如上示。它还带有右键菜单,LCD颜色可以变换等。 Java用GZIP压缩解压文件 1个目标文件 摘要:Java源码,文件操作,GZIP   Java使用GZIP压缩解压文件,如果你正在使用Java开发文件压缩或解压的功能,那么Gzip应该来说是比较值得参考的,那么本实例或许正是您需要的,Java基于Gzip的文件压缩与解压程序源代码,供源码下载者参考。 Java用Zip压缩多个文件实例源码 1个目标文件 摘要:Java源码,文件操作,压缩文件   Java用Zip压缩多个文件,一个Java文件操作小实例,用ZIP同进压缩多个文件,实际是打开文件读取,然后再利用ZipEntry实例化待压缩的条目列表,将ZIP条目列表写入输出流,从源文件得到文件输入流,写入缓冲数据等。 Java游戏使命的召唤源码 5个目标文件 内容索引:JAVA源码,游戏娱乐,Java游戏源码,使命的召唤   Java游戏使命的召唤源码,又名:Call of Duty,MFORMA超精典游戏,有兴趣的可以重新编译学习一下。 Java源码的仿QQ聊天程序 如题 Java中的Blowfish对称密钥加密算法类和实例 2个目标文件 内容索引:Java源码,算法相关,Blowfish,JAVA加密,对称密钥算法   JAVA中的Blowfish加密属于对称密钥算法,如果知道密钥,则可以对加密后的数据解密,但如果如果不知道密钥,基本上是不可能的,因此,这就决定了它的先天不足,就是带来的密钥的管理问题。 Java中的SSL及HTTPS协议实例源码 1个目标文件 摘要:Java源码,网络相关,HTTPS协议   Java中的SSL及HTTPS协议实例源码,使用SSL套接字的HTTPS服务器端,接受客户端的一个连接,并返回Hello,world.   本例中使用8080端口创建SSL服务器套接字,返回缺省的SocketFactory对象,生成PrintWriter对象,用于输出信息。 Java自定义光标程序源码 1个目标文件 摘要:Java源码,窗体界面,自定义光标   Java自定义光标程序源码,将光标定义成其它形式的图标,利用ToolKit对象得到图像,实例化自定义光标对象,增加组件等。 Jav动画图标源码(显示GIF图像) 1个目标文件 摘要:Java源码,图形操作,动画图标   Jav动画图标源码(显示GIF图像),学习如何连续加载GIF图像从而生成动画图标,先创建一个用于显示动画图标的数组,创建构造函数,初始化数组,重载组件绘制方法,实例化Timer对象显示动画,增加组件到窗口上。 JSP树型菜单 DTree html+js实现 Notebook源码,Java记事本 2个目标文件 摘要:Java源码,文字字符,Java记事本   Java记事本:Notebook源码下载,虽然是个功能不多的记事本,但通过这个Java程序你可以学习到不少小技巧呢!比如创建界面、安装各种监听器,在窗体上布局主菜单,保存用户编辑的文件,以及如何使用"另存为"对话框保存文件,如何新建和打开一个文档等,源代码内包括了相当多的注释,是Java新手学习JAVA编程的好范例。   当用户按下窗口的“关闭”时,会自动调用此方法。 PDF分割与合并源代码 3个目标文件 能把一个PDF分割成多个单页的PDF,把多个PDF合并成一个PDF。 QR解码的Java实现程序 25个目标文件 内容索引:JAVA源码,媒体网络,QR解码,Java   用Java实现QR解码的源程序代码。 编译原理--LR(1)分析表构造(JAVA) 8个目标文件 如题 传奇私服登录器Java版附源代码 2个目标文件,如题。 单机版java五子棋V1.1 5个目标文件 完整的单机版java五子棋游戏,主要是判定胜负的算法,使用数组进行遍历,很容易理解。 很强的Java加密解密算法源码 3个目标文件 内容索引:Java源码,算法相关,JAVA算法,加密解密   很强的JAVA加密、解密算法源码,一共有6种算法可供选择,另外还可以直接生成ZIP压缩文件。 简单的注册与登录功能 6个目标文件 一个简单的用户登录界面 要连接数据库的 有登陆 注册功能 仅供初学者学习 简单模拟的J2ME潜艇大战源代码 4个目标文件 内容索引:JAVA源码,游戏娱乐,J2ME手机游戏,潜艇大战   简单模拟的J2ME手机游戏潜艇大战的源代码,界面有些粗糙,不过基本功能都实现了,发弹,躲闪等,可以帮助新手提高J2ME技术。 局域网广播系统java源码 如题 java游戏 可实现网上对战和人机对战 7个目标文件 雷电游戏JAVA版源程序 8个目标文件 这是一个简单的Java仿雷电游戏(源码见包内),共设置有三关三个小BOSS。采用有GreenJVM发布,因此可以运行在未装载JRE的Windows系统之上。 网络蚂蚁Java版 14个目标文件 用Java实现的网络蚂蚁,功能强大,方便上传下载,断点续传等操作 网页浏览器 如题 java学生成绩系统(图形界面) 14个目标文件 如题。 java学生课程管理系统 6个目标文件 如题。 一个较初级的EJB商业应用的例子 如题 一个支持servlet的web服务器 14个目标文件 如题。 用Java加密类实现DES、RSA及SHA的加密算法 9个目标文件 如题。 用java写的SFTP代码 用java实现的Tftp(Sftp)客户端与服务器程序。在这个程序中用到了一个“状态”的机制:客户端与服务器端在开始运行时有相同的状态,通过用户的输入或程序内部运行的机制,程序可以转到不同的状态,在不同的状态下程序实现了不同的功能。 用jdom解析xml 1个目标文件 要使用jdom解析xml文件,需要下载jdom的包,我使用的是jdom-1.1。解压之后,将lib文件夹下的.jar文件以及build文件夹下的jdom.jar拷贝到工程文件夹下,然后就可以使用jdom操作xml文件了。 copass源代码 Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架. Compass实现了通过注册Hibernate的相关事件实现了数据的实时索引.. DataBuffer在Java中使用ADO.NET 本源码的作者对ADO.Net有着相当深厚的感情,有着对JAVA中DataBuffer类库运用的出色理解。它是开源项目javadesktop中的一个子项目,通过它你可以真正的理解DataSet、DataTable、DataRow……类库的使用。对这方面不太熟的开发者绝对有帮助。 HAHA CHAT Java仿QQ聊天程序源代码 iCHAT聊天室基于Java 内容索引:JAVA源码,媒体网络,iChat,Java聊天室   iChat LE 1.1版源码,一个比较大型的JAVA版聊天室程序,可能要用到DLL文件,压缩包内已经有了,一年前的程序。 IP定位器 J2ME黑白棋游戏手机版 v2.1完整源码 J2ME冒险游戏CASPER源代码 J2me月光战机游戏源码 JasperReports 报表类库v3.5 Java24点游戏逼真图形版代码 Java 3D魔方游戏源码及中文注释包 内容索引:JAVA源码,游戏娱乐,JAVA3D,魔方游戏   很强的JAVA 3D魔方游戏,这是源码及中文注释包,作者的开发文档和思路都在里面,对学习很有帮助! allin.dev 重载了ListView,更好的实现! copass源代码 Java (Jsp)制作简单的表单程序 java Socket通信实现 Java 版的酒店系统,貌似完整 Java 电梯模拟程序 v2.0 Java 飞机订票 Java 高考信息管理系统 SQL数据库 java 一个消息发布网站 Java+MsSQL超市进销存(毕业设计及答辩资料) Java+sqlserver2000做的员工管理系统 Java+SQL信用卡管理系统源代码 Java+XML日程提醒系统 Java+XML写的RSS阅读器 JAVA版Swing星际争霸游戏源代码 Java半透明图片实现的步骤及源代码 JAVA帮助视图组件库 Help GUI 1.1源代码 Java毕业论文:搜索引擎系统附源代码 JAVA毕业设计_员工管理系统含文档 Java毕业设计一款J2me飞行射击游戏 Java仓库管理系统,Access数据库 Java超市管理,SQL2000+源代码 Java超市进销存系统 Java大型CERP进销存系统 Java电子相册源码 Java赌神游戏网络版源代码 JAVA短信网关平台(值得一看) Java多用户聊天室程序(毕业设计) Java仿Vista界面风格的登录窗口 Java仿千千静听音乐播放器源代码 Java火影忍者游戏源代码 Java机车狂飙源代码 JAVA开发的打字软件源程序 Java开发的简单WEB服务器源码 Java聊天程序(JBuilder) Java聊天软件Visual Chat v1.91源码 Java模仿的MSN聊天软件 Java企业人事管理系统源码 JAVA轻量级的MVC框架应用实例 Java软件度量源码 Java声音播放程序源代码 JAVA实现CLDC与MIDP底层编程的代码 JAVA实现超级玛丽 Java实现的视频播放程序源码 Java手机短信项目源码 Java手机游戏大富翁源代码+注释 Java手机与计算机互发彩信源码 Java坦克大战网络对战版源代码 Java跳棋(基于SWT) Java通讯录手机版源码 Java图片翻折,将图像压扁 Java图书馆管理系统源程序 JAVA图书馆管理系统源码 Java图像文件的缩小与放大 Java推箱子游戏(50关+音效) JAVA网络抓包程序 Java文件切割器源代码 java项目源码在线相册系统 Java写的天气预报软件 Java写的图片幻灯片切换特效 Java写的一个mp3播放器 Java学生信息管理系统源码包 Java用的在线地图浏览模块 Java游戏沙丘城堡源代码 Java游戏中斜视角编辑器及引擎源代码 Java约瑟夫环演示Applet源码 Java中的EJB编程实例代码 Java转换xml JLoading Java版的Mp3下载工具 JSP 动态数据菜单 JSP 学生管理系统(全部代码+数据库) jsp+servlet+javabean+mysql党员信息管理系统 jsp高校科研项目管理系统 JSP开发的项目跟踪系统 jsp生产管理系统 msn聊天程序Java仿真代码 P2P--多用户在线聊天室(Java源码) P2P源码 Azureus 2.5.0.2(JAVA) Skype 4.0 Java版源码及开发文档 SnakeScript Java游戏脚本引擎 v1.1 Tsinghua IP 清华大学学生写的一个有关IP的Java程序 Visualvm 基于JAVA的CPU硬件资源管理器源程序 weblogic+j2ee构建音乐网站(原代码+数据库) web综合教学管理系统 YOYOPlayer 基于Java的网络播放器源代码 宾馆管理系统 餐饮门户 超市购物系统 车间管控 打地鼠游戏 单位固定资产登记管理系统JAVA版 电子书店管理系统 分离SQL Server数据库 基于BS结构的Java可视化工作流定制软件 基于J2ME的Java游戏梦幻炸弹人源程序 基于JAVA的ICQ系统 基于Java的mp3播放器源代码 基于JAVA的日程提醒簿 基于Java的小型人事管理系统,带数据库 基于Java的邮件服务器源程序 基于MVC的Java资源管理器 v2.0 季风进销存管理系统(JSP版) 家庭多媒体播放器 开源Winzip压缩工具Java版源码 客户管理系统 Alfresco Content Management 乐趣大型购物系统 类似QQ的聊天软件JAVA版源码(附设计文档) 连接postsql数据库的java代码 泡泡堂战车游戏JAVA版源码 配置ODBC数据源 企业进销存管理系统 轻松商城系统 手机游戏J2ME毕业设计 书籍管理系统 网络电视源代码TV-Browser 蜀山剑侠传游戏J2ME手机版源代码 网上书店 物业管理系统毕业设计+源码 销售预测系统PDP系统 选修课程管理系统V1.2.3 阳光酒店管理系统 一款Java网络格斗游戏源码 用iText类库制作PDF文档 用JAVA做的聊天软件,有安装程序和源代码 在Servlet中连接数据库的Java代码 中国移动业务管理系统源码(SSH框架)
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印   util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以改进做成小工具。 Java右键弹出菜单源码 简单 Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟   用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有帮助。 Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例   Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式   //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener   在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话……   还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器   Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例   各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java源码,网络相关,UDP   基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实世界模型   基于EJB的真实世界模型,附源代码,部分功能需JSP配合完成。 J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理   这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu   Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看   Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,系统相关,数字签名,数字证书   Java 数字签名、数字证书的相关实例。   关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于验证签名。   数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录   一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器   Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:   可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序   Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,   当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。   QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏   Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测   用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字   Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。 Java吃豆子游戏源代码 6个目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码   JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板   使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制   Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制   Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰效果   Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密   WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书   Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和客户端 2个目标文件,如题。 Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视   用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择   Java语言开发的简洁实用的日期选择控件,源码文件功能说明:   [DateChooser.java] Java 日期选择控件(主体类) [public]   [TablePanel.java] 日历表格面板   [ConfigLine.java] 控制条类   [RoundBox.java] 限定选择控件   [MonthMaker.java] 月份表算法类   [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP   Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个目标文件 摘要:Java源码,网络相关,FTP   Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。   部分源代码摘录:   ftpClient = new FtpClient(); //实例化FtpClient对象   String serverAddr=jtfServer.getText(); //得到服务器地址   String user=jtfUser.getText(); //得到用户名   String pass=jtfPass.getPassword().toString(); //得到密码   ftpClient.openServer(serverAddr); //连接到服务器   ftpClient.login(user,pass); //在服务器上注册   InputStream is=ftpClient.list(); //得到服务器目录与文件列表输入流   StringBuffer info=new StringBuffer(); //实例化StringBuffer对象,用于输出信息   int ch;   while ((ch=is.read())>=0){ //未读完列表,则继续   info.append((char)ch); //增加信息   …… Java实现的点对点短消息发送协议(smpp)开发包源码 70个目标文件,如题。 Java实现的放大镜效果附有源文件 1个目标文件 内容索引:Java源码,初学实例,放大镜,哈哈镜   Java实现的放大镜效果附有源文件,编译环境最近出了问题,因此没有测试,也没有抓到图,希望各位自行测试一下。 Java实现跟踪鼠标运行坐标的源码 1个目标文件 内容索引:JAVA源码,系统相关,鼠标钩子   Java编写的一个小程序,用以实现跟踪鼠标的运行位置(坐标),程序很小,很实用,暂时抓不到截图。 Java实现移动的遮照效果 1个目标文件 摘要:Java源码,初学实例,遮照效果   Java实现移动的遮照效果,先实现椭圆形的遮罩,实例化媒体加载器,最后在创建缓冲区中的图像形成遮罩效果,而且它是会移动的。 Java鼠标拖拽功能 1个目标文件 Netbeans平台下实现的JAVA 拖放效果的一个实例,包括源代码和所需的图片资源。 (运行后会全屏显示窗体,没有关闭按钮,可使用快捷键Ctrl + F4关闭~) Java图片倒影效果实例源码 1个目标文件 摘要:Java源码,图形操作,图片倒影   Java图片倒影效果实例源码,有意思也很有参考价值的一个Java图像处理小程序,先读取图像然后进行图像重绘,产生倒影的效果,仅供参考。 java网络五子棋的源代码 7个目标文件 AVA网络五子棋,实现基本功能,无多余花哨内容,适合大学生课程设计学习使用,内含完整可运行源代码及运行指导视频,Eclipse环境。 Java文件选择器源代码 2个目标文件 摘要:Java源码,文件操作,文件选择器   Java文件选择器源代码 Java文字跑马灯与信息窗口 1个目标文件 摘要:Java源码,文件操作,跑马灯   Java文字跑马灯效果与信息窗口,将一段文字按照滚动的方式显示出来,在网页设计中比较常见,本例使用Java实现文字跑马灯效果。 Java写的ATM机取款模拟程序 9个目标文件 内容索引:JAVA源码,综合应用,ATM,JAVA,模拟   基于Java技术,只实现了ATM机的取款过程,有兴趣和有能力的高手可以再加以改进,这样就更完美了。可作为Java初学者《面向对象》编程的一个很好范例。     在这个程序中,用到以下JAVA类库:      dataAccess(数据操作)类:包含用于数据库的相关操作   atmScreen(ATM屏幕)类:主要创建各操作窗体和相应按钮事件   Account(用户帐户)类:包含用户信息的验证、余额查询和扣钱等方法   readCard(读卡机)类:包含读取用户卡号和退卡(退出系统)   moneyMac(取钱机)类:只用于打印清单   Atm(系统)类:系统主方法的开始,负责调用其他类 Java写的巨型LCD液晶时钟显示屏 8个目标文件 内容索引:JAVA源码,综合应用,电子钟,LCD,液晶   一个巨型LCD数字电子时钟,用JAVA写的,运行截图如上示。它还带有右键菜单,LCD颜色可以变换等。 Java用GZIP压缩解压文件 1个目标文件 摘要:Java源码,文件操作,GZIP   Java使用GZIP压缩解压文件,如果你正在使用Java开发文件压缩或解压的功能,那么Gzip应该来说是比较值得参考的,那么本实例或许正是您需要的,Java基于Gzip的文件压缩与解压程序源代码,供源码下载者参考。 Java用Zip压缩多个文件实例源码 1个目标文件 摘要:Java源码,文件操作,压缩文件   Java用Zip压缩多个文件,一个Java文件操作小实例,用ZIP同进压缩多个文件,实际是打开文件读取,然后再利用ZipEntry实例化待压缩的条目列表,将ZIP条目列表写入输出流,从源文件得到文件输入流,写入缓冲数据等。 Java游戏使命的召唤源码 5个目标文件 内容索引:JAVA源码,游戏娱乐,Java游戏源码,使命的召唤   Java游戏使命的召唤源码,又名:Call of Duty,MFORMA超精典游戏,有兴趣的可以重新编译学习一下。 Java源码的仿QQ聊天程序 如题 Java中的Blowfish对称密钥加密算法类和实例 2个目标文件 内容索引:Java源码,算法相关,Blowfish,JAVA加密,对称密钥算法   JAVA中的Blowfish加密属于对称密钥算法,如果知道密钥,则可以对加密后的数据解密,但如果如果不知道密钥,基本上是不可能的,因此,这就决定了它的先天不足,就是带来的密钥的管理问题。 Java中的SSL及HTTPS协议实例源码 1个目标文件 摘要:Java源码,网络相关,HTTPS协议   Java中的SSL及HTTPS协议实例源码,使用SSL套接字的HTTPS服务器端,接受客户端的一个连接,并返回Hello,world.   本例中使用8080端口创建SSL服务器套接字,返回缺省的SocketFactory对象,生成PrintWriter对象,用于输出信息。 Java自定义光标程序源码 1个目标文件 摘要:Java源码,窗体界面,自定义光标   Java自定义光标程序源码,将光标定义成其它形式的图标,利用ToolKit对象得到图像,实例化自定义光标对象,增加组件等。 Jav动画图标源码(显示GIF图像) 1个目标文件 摘要:Java源码,图形操作,动画图标   Jav动画图标源码(显示GIF图像),学习如何连续加载GIF图像从而生成动画图标,先创建一个用于显示动画图标的数组,创建构造函数,初始化数组,重载组件绘制方法,实例化Timer对象显示动画,增加组件到窗口上。 JSP树型菜单 DTree html+js实现 Notebook源码,Java记事本 2个目标文件 摘要:Java源码,文字字符,Java记事本   Java记事本:Notebook源码下载,虽然是个功能不多的记事本,但通过这个Java程序你可以学习到不少小技巧呢!比如创建界面、安装各种监听器,在窗体上布局主菜单,保存用户编辑的文件,以及如何使用"另存为"对话框保存文件,如何新建和打开一个文档等,源代码内包括了相当多的注释,是Java新手学习JAVA编程的好范例。   当用户按下窗口的“关闭”时,会自动调用此方法。 PDF分割与合并源代码 3个目标文件 能把一个PDF分割成多个单页的PDF,把多个PDF合并成一个PDF。 QR解码的Java实现程序 25个目标文件 内容索引:JAVA源码,媒体网络,QR解码,Java   用Java实现QR解码的源程序代码。 编译原理--LR(1)分析表构造(JAVA) 8个目标文件 如题 传奇私服登录器Java版附源代码 2个目标文件,如题。 单机版java五子棋V1.1 5个目标文件 完整的单机版java五子棋游戏,主要是判定胜负的算法,使用数组进行遍历,很容易理解。 很强的Java加密解密算法源码 3个目标文件 内容索引:Java源码,算法相关,JAVA算法,加密解密   很强的JAVA加密、解密算法源码,一共有6种算法可供选择,另外还可以直接生成ZIP压缩文件。 简单的注册与登录功能 6个目标文件 一个简单的用户登录界面 要连接数据库的 有登陆 注册功能 仅供初学者学习 简单模拟的J2ME潜艇大战源代码 4个目标文件 内容索引:JAVA源码,游戏娱乐,J2ME手机游戏,潜艇大战   简单模拟的J2ME手机游戏潜艇大战的源代码,界面有些粗糙,不过基本功能都实现了,发弹,躲闪等,可以帮助新手提高J2ME技术。 局域网广播系统java源码 如题 java游戏 可实现网上对战和人机对战 7个目标文件 雷电游戏JAVA版源程序 8个目标文件 这是一个简单的Java仿雷电游戏(源码见包内),共设置有三关三个小BOSS。采用有GreenJVM发布,因此可以运行在未装载JRE的Windows系统之上。 网络蚂蚁Java版 14个目标文件 用Java实现的网络蚂蚁,功能强大,方便上传下载,断点续传等操作 网页浏览器 如题 java学生成绩系统(图形界面) 14个目标文件 如题。 java学生课程管理系统 6个目标文件 如题。 一个较初级的EJB商业应用的例子 如题 一个支持servlet的web服务器 14个目标文件 如题。 用Java加密类实现DES、RSA及SHA的加密算法 9个目标文件 如题。 用java写的SFTP代码 用java实现的Tftp(Sftp)客户端与服务器程序。在这个程序中用到了一个“状态”的机制:客户端与服务器端在开始运行时有相同的状态,通过用户的输入或程序内部运行的机制,程序可以转到不同的状态,在不同的状态下程序实现了不同的功能。 用jdom解析xml 1个目标文件 要使用jdom解析xml文件,需要下载jdom的包,我使用的是jdom-1.1。解压之后,将lib文件夹下的.jar文件以及build文件夹下的jdom.jar拷贝到工程文件夹下,然后就可以使用jdom操作xml文件了。 copass源代码 Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架. Compass实现了通过注册Hibernate的相关事件实现了数据的实时索引.. DataBuffer在Java中使用ADO.NET 本源码的作者对ADO.Net有着相当深厚的感情,有着对JAVA中DataBuffer类库运用的出色理解。它是开源项目javadesktop中的一个子项目,通过它你可以真正的理解DataSet、DataTable、DataRow……类库的使用。对这方面不太熟的开发者绝对有帮助。 HAHA CHAT Java仿QQ聊天程序源代码 iCHAT聊天室基于Java 内容索引:JAVA源码,媒体网络,iChat,Java聊天室   iChat LE 1.1版源码,一个比较大型的JAVA版聊天室程序,可能要用到DLL文件,压缩包内已经有了,一年前的程序。 IP定位器 J2ME黑白棋游戏手机版 v2.1完整源码 J2ME冒险游戏CASPER源代码 J2me月光战机游戏源码 JasperReports 报表类库v3.5 Java24点游戏逼真图形版代码 Java 3D魔方游戏源码及中文注释包 内容索引:JAVA源码,游戏娱乐,JAVA3D,魔方游戏   很强的JAVA 3D魔方游戏,这是源码及中文注释包,作者的开发文档和思路都在里面,对学习很有帮助! allin.dev 重载了ListView,更好的实现! copass源代码 Java (Jsp)制作简单的表单程序 java Socket通信实现 Java 版的酒店系统,貌似完整 Java 电梯模拟程序 v2.0 Java 飞机订票 Java 高考信息管理系统 SQL数据库 java 一个消息发布网站 Java+MsSQL超市进销存(毕业设计及答辩资料) Java+sqlserver2000做的员工管理系统 Java+SQL信用卡管理系统源代码 Java+XML日程提醒系统 Java+XML写的RSS阅读器 JAVA版Swing星际争霸游戏源代码 Java半透明图片实现的步骤及源代码 JAVA帮助视图组件库 Help GUI 1.1源代码 Java毕业论文:搜索引擎系统附源代码 JAVA毕业设计_员工管理系统含文档 Java毕业设计一款J2me飞行射击游戏 Java仓库管理系统,Access数据库 Java超市管理,SQL2000+源代码 Java超市进销存系统 Java大型CERP进销存系统 Java电子相册源码 Java赌神游戏网络版源代码 JAVA短信网关平台(值得一看) Java多用户聊天室程序(毕业设计) Java仿Vista界面风格的登录窗口 Java仿千千静听音乐播放器源代码 Java火影忍者游戏源代码 Java机车狂飙源代码 JAVA开发的打字软件源程序 Java开发的简单WEB服务器源码 Java聊天程序(JBuilder) Java聊天软件Visual Chat v1.91源码 Java模仿的MSN聊天软件 Java企业人事管理系统源码 JAVA轻量级的MVC框架应用实例 Java软件度量源码 Java声音播放程序源代码 JAVA实现CLDC与MIDP底层编程的代码 JAVA实现超级玛丽 Java实现的视频播放程序源码 Java手机短信项目源码 Java手机游戏大富翁源代码+注释 Java手机与计算机互发彩信源码 Java坦克大战网络对战版源代码 Java跳棋(基于SWT) Java通讯录手机版源码 Java图片翻折,将图像压扁 Java图书馆管理系统源程序 JAVA图书馆管理系统源码 Java图像文件的缩小与放大 Java推箱子游戏(50关+音效) JAVA网络抓包程序 Java文件切割器源代码 java项目源码在线相册系统 Java写的天气预报软件 Java写的图片幻灯片切换特效 Java写的一个mp3播放器 Java学生信息管理系统源码包 Java用的在线地图浏览模块 Java游戏沙丘城堡源代码 Java游戏中斜视角编辑器及引擎源代码 Java约瑟夫环演示Applet源码 Java中的EJB编程实例代码 Java转换xml JLoading Java版的Mp3下载工具 JSP 动态数据菜单 JSP 学生管理系统(全部代码+数据库) jsp+servlet+javabean+mysql党员信息管理系统 jsp高校科研项目管理系统 JSP开发的项目跟踪系统 jsp生产管理系统 msn聊天程序Java仿真代码 P2P--多用户在线聊天室(Java源码) P2P源码 Azureus 2.5.0.2(JAVA) Skype 4.0 Java版源码及开发文档 SnakeScript Java游戏脚本引擎 v1.1 Tsinghua IP 清华大学学生写的一个有关IP的Java程序 Visualvm 基于JAVA的CPU硬件资源管理器源程序 weblogic+j2ee构建音乐网站(原代码+数据库) web综合教学管理系统 YOYOPlayer 基于Java的网络播放器源代码 宾馆管理系统 餐饮门户 超市购物系统 车间管控 打地鼠游戏 单位固定资产登记管理系统JAVA版 电子书店管理系统 分离SQL Server数据库 基于BS结构的Java可视化工作流定制软件 基于J2ME的Java游戏梦幻炸弹人源程序 基于JAVA的ICQ系统 基于Java的mp3播放器源代码 基于JAVA的日程提醒簿 基于Java的小型人事管理系统,带数据库 基于Java的邮件服务器源程序 基于MVC的Java资源管理器 v2.0 季风进销存管理系统(JSP版) 家庭多媒体播放器 开源Winzip压缩工具Java版源码 客户管理系统 Alfresco Content Management 乐趣大型购物系统 类似QQ的聊天软件JAVA版源码(附设计文档) 连接postsql数据库的java代码 泡泡堂战车游戏JAVA版源码 配置ODBC数据源 企业进销存管理系统 轻松商城系统 手机游戏J2ME毕业设计 书籍管理系统 网络电视源代码TV-Browser 蜀山剑侠传游戏J2ME手机版源代码 网上书店 物业管理系统毕业设计+源码 销售预测系统PDP系统 选修课程管理系统V1.2.3 阳光酒店管理系统 一款Java网络格斗游戏源码 用iText类库制作PDF文档 用JAVA做的聊天软件,有安装程序和源代码 在Servlet中连接数据库的Java代码 中国移动业务管理系统源码(SSH框架)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值