??xml version="1.0" encoding="utf-8" standalone="yes"?>精品久久视频,精品不卡视频,国产中文字幕在线播放http://www.aygfsteel.com/iask/category/2341.html<font color='blue'>菩提本无树,明镜亦非?本来无一物,何处惹尘?lt;/font>zh-cnTue, 13 Nov 2007 10:54:48 GMTTue, 13 Nov 2007 10:54:48 GMT60- struts spring hibernate开发的一个webpȝQ?Q?-数据库介l?/title>http://www.aygfsteel.com/iask/archive/2007/06/08/122855.html城市劣h城市劣hFri, 08 Jun 2007 06:50:00 GMThttp://www.aygfsteel.com/iask/archive/2007/06/08/122855.htmlhttp://www.aygfsteel.com/iask/comments/122855.htmlhttp://www.aygfsteel.com/iask/archive/2007/06/08/122855.html#Feedback2http://www.aygfsteel.com/iask/comments/commentRss/122855.htmlhttp://www.aygfsteel.com/iask/services/trackbacks/122855.html已经转移?q之徒--我的博客、我的生z?/a>
有关内置数据库的表的一些说明:
每个表中都有一个叫GUID的字D,它是唯一的ID
ROLE(GUID,ROLENAME)
一个非常简单的权限表,ROLENAME是它的权限名Uͼ内置了user、adminQ不用去变动?/p>
USER(GUID,ROLEID,USERID,PASSWORD,USERNAME,FLG)
用户列表QROLEID兌至ROLE表的GUIDQ其中的USERNAME只是一个用于显C的用户名称Q真正登录需要的是USERIDQFLG是个标志?/p>
USER表中的信息是有管理员分配的,如果需要删除,只是逻辑删除Q所以通过FLG来设|,AREA表中也是cM?/p>
AREA(GUID,AREANAME,TIMENUM,USERID,FLG)
区域信息表,订单理中要涉及到各个不同的地区Q比如:上v、华南地区等{,USERID兌至USER表的GUIDQ一个用户关联几个地区)
FLG用于逻辑删除
以上三个表相对基Q是有admin来统一理的。在pȝ的管理者画面可以创建新用户、新地区、分配用户对应的地区
CUSTOMER(GUID,AREAID,USERID,CUSTOMERNAME,。。?
客户信息表,需要关联的表有AREAQAREAIDQ、USERQUSERIDQ?/p>
WAREHOUSE(GUID,WAREHOUSEID,WAREHOUSENAME ,。。?)
发货仓库表,记录商品发货的仓库信息,没有特别的关?/p>
SALESPERSONS(GUID,PERSONNAME ,。。?)
销售h员,很简单,׃个h员的名称
ORDERINFO(GUID,AREAID ,USERID ,ORDERNO ,ORDERDATE ,CUSTOMERNAME ,ADDRESS ,WAREHOUSEID INPUTDATE ,EFFECTIVEINFO ,PRINTINGDATE ,HANDMADE ,HANDMADEFLG ,REMARK ,SHORTING ,AMOUNT ,TRACK SALESPERSONS ,OK ,CREATETIME ,UPDATETIME )
订单信息Q比较复杂:需要关联的表有AREAQAREAIDQ、USERQUSERIDQ,ORDERNO--订单PORDERDATE--订单日期
CUSTOMERNAME ,ADDRESS是客L名称和地址Qؓ了简单化Q就没有和CUSTOMER表关联v?/p>
WAREHOUSEID是WAREHOUSE表中的一个对应字D,Z单化Q也没有采用兌Q用GUIDQ?/p>
INPUTDATE--输单日期QEFFECTIVEINFO--生效信息QPRINTINGDATE--打印装箱单时_
HANDMADE--手工单,HANDMADEFLG--判断是否手工单的标志
SHORTING--~情况QAMOUNT--~数量QTRACK--q踪QSALESPERSONS--对应销售h员,没有和SALESPERSONS表关?/p>
OK--一个标志位Q用于表C单是否处理完毕,CREATETIME--创徏旉QUPDATETIME--更新旉
PAYMENT(GUID,USERID ,PAYDATE ,CUSTOMERNAME ,CASH ,REMARK ,CREATETIME ,UPDATETIME )
货款的管理信息,USERID--需要和USER兌Q对应它的GUIDQ,PAYDATE--付款旉QCUSTOMERNAME--客户
q是所有表的信息,׃pȝ比较,所以表的设计上向于简单化

]]>- 整合Struts 与Springhttp://www.aygfsteel.com/iask/archive/2006/09/29/72747.html城市劣h城市劣hFri, 29 Sep 2006 03:08:00 GMThttp://www.aygfsteel.com/iask/archive/2006/09/29/72747.htmlhttp://www.aygfsteel.com/iask/comments/72747.htmlhttp://www.aygfsteel.com/iask/archive/2006/09/29/72747.html#Feedback0http://www.aygfsteel.com/iask/comments/commentRss/72747.htmlhttp://www.aygfsteel.com/iask/services/trackbacks/72747.htmlq之徒--我的博客、我的生z?/a>
1、?Spring ?ActionSupport cL?Structs 2、?Spring ?DelegatingRequestProcessor 覆盖 Struts ?RequestProcessor 3、将 Struts Action 理委托l?Spring 框架 首先要徏?装蝲应用E序环境" 无论您用哪U技术,都需要?Spring ?ContextLoaderPlugin ?Struts ?ActionServlet 装蝲 Spring 应用E序环境。就像添加Q何其他插件一P单地向您的struts-config.xml 文gd该插Ӟ如下所C: H门 1. 使用 Spring ?ActionSupport 手动创徏一?Spring 环境是一U整?Struts ?Spring 的最直观的方式。ؓ了它变得更单,Spring 提供了一些帮助。ؓ了方便地获得 Spring 环境Qorg.springframework.web.struts.ActionSupport cL供了一?getWebApplicationContext() Ҏ。您所做的只是?Spring ?ActionSupport 而不?Struts Action cL展您的动作,如清?1 所C: 清单 1. 使用 ActionSupport 整合 Struts package ca.nexcel.books.actions; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; import org.springframework.context.ApplicationContext; import org.springframework.web.struts.ActionSupport; import ca.nexcel.books.beans.Book; import ca.nexcel.books.business.BookService; public class SearchSubmit extends ActionSupport { |(1) public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { DynaActionForm searchForm = (DynaActionForm) form; String isbn = (String) searchForm.get("isbn"); //the old fashion way //BookService bookService = new BookServiceImpl(); ApplicationContext ctx = getWebApplicationContext(); |(2) BookService bookService = (BookService) ctx.getBean("bookService"); |(3) Book book = bookService.read(isbn.trim()); if (null == book) { ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR,new ActionError ("message.notfound")); saveErrors(request, errors); return mapping.findForward("failure") ; } request.setAttribute("book", book); return mapping.findForward("success"); } } 让我们快速思考一下这里到底发生了什么。在 (1) 处,我通过?Spring ?ActionSupport c而不?Struts ?Action c进行扩展,创徏了一个新?Action。在 (2) 处,我?getWebApplicationContext() Ҏ获得一?ApplicationContext。ؓ了获得业务服务,我用在 (2) 处获得的环境?(3) 处查找一?Spring bean?q种技术很单ƈ且易于理解。不q的是,它将 Struts 动作?Spring 框架耦合在一赗如果您x换掉 SpringQ那么您必须重写代码。ƈ且,׃ Struts 动作不在 Spring 的控制之下,所以它不能获得 Spring AOP 的优ѝ当使用多重独立?Spring 环境Ӟq种技术可能有用,但是在大多数情况下,q种Ҏ不如另外两种Ҏ合适?H门 2. 覆盖 RequestProcessor ?Spring ?Struts 动作中分L一个更巧妙的设计选择。分ȝ一U方法是使用 org.springframework.web.struts.DelegatingRequestProcessor cL覆盖 Struts ?RequestProcessor 处理E序Q如清单 2 所C: 清单 2. 通过 Spring ?DelegatingRequestProcessor q行整合 |(1) 我利用了 标记来用 DelegatingRequestProcessor 覆盖默认?Struts RequestProcessor。下一步是在我?Spring 配置文g中注册该动作Q如清单 3 所C: 清单 3. ?Spring 配置文g中注册一个动?|(1) 注意Q在 (1) 处,我用名U属性注册了一?beanQ以匚w struts-config 动作映射名称。SearchSubmit 动作揭示了一?JavaBean 属性,允许 Spring 在运行时填充属性,如清?4 所C: 清单 4. h JavaBean 属性的 Struts 动作 package ca.nexcel.books.actions; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; import ca.nexcel.books.beans.Book; import ca.nexcel.books.business.BookService; public class SearchSubmit extends Action { private BookService bookService; public BookService getBookService() { return bookService; } public void setBookService(BookService bookService) { | (1) this.bookService = bookService; } public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { DynaActionForm searchForm = (DynaActionForm) form; String isbn = (String) searchForm.get("isbn"); Book book = getBookService().read(isbn.trim()); |(2) if (null == book) { ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("message.notfound")); saveErrors(request, errors); return mapping.findForward("failure") ; } request.setAttribute("book", book); return mapping.findForward("success"); } } 在清?4 中,您可以了解到如何创徏 Struts 动作。在 (1) 处,我创Z一?JavaBean 属性。DelegatingRequestProcessor自动地配|这U属性。这U设计 Struts 动作q不知道它正?Spring 理Qƈ且您能够利?Sping 的动作管理框架的所有优炏V由于您?Struts 动作注意不到 Spring 的存在,所以您不需要重写您?Struts 代码可以用其他控制反转容器来替换?Spring?DelegatingRequestProcessor Ҏ的确比第一U方法好Q但是仍然存在一些问题。如果您使用一个不同的 RequestProcessorQ则需要手动整?Spring ?DelegatingRequestProcessor。添加的代码会造成l护的麻烦ƈ且将来会降低您的应用E序的灵zL。此外,q有q一些用一pd命o来代B?Struts RequestProcessor 的传闅R?q种改变会对这U解x法的使用寿命造成负面的媄响?H门 3. 动作管理委托给 Spring 一个更好的解决Ҏ是将 Strut 动作理委托l?Spring。您可以通过?struts-config 动作映射中注册一个代理来实现。代理负责在 Spring 环境中查?Struts 动作。由于动作在 Spring 的控制之下,所以它可以填充动作?JavaBean 属性,qؓ应用诸如 Spring ?AOP 拦截器之cȝҎ带来了可能?清单 5 中的 Action cM清单 4 中的相同。但?struts-config 有一些不同: 清单 5. Spring 整合的委托方?清单 5 是一个典型的 struts-config.xml 文gQ只有一个小的差别。它注册 Spring 代理cȝ名称Q而不是声明动作的cdQ如Q?Q处所C。DelegatingActionProxy cM用动作映名U查?Spring 环境中的动作。这是我们使用 ContextLoaderPlugIn 声明的环境?一?Struts 动作注册Z?Spring bean 是非常直观的Q如清单 6 所C。我利用动作映射使用 标记的名U属性(在这个例子中?"/searchSubmit"Q简单地创徏了一?bean。这个动作的 JavaBean 属性像M Spring bean 一栯填充Q?清单 6. ?Spring 环境中注册一?Struts 动作 动作委托的优?动作委托解决Ҏ是这三种Ҏ中最好的。Struts 动作不了?SpringQ不对代码作M改变可用于?Spring 应用E序中。RequestProcessor 的改变不会媄响它Qƈ且它可以利用 Spring AOP Ҏ的优点?动作委托的优点不止如此。一旦让 Spring 控制您的 Struts 动作Q您可以?Spring l动作补充更强的zd。例如,没有 Spring 的话Q所有的 Struts 动作都必LU程安全的。如果您讄 标记?singleton 属性ؓ"false"Q那么不用何种ҎQ您的应用程序都在每一个请求上有一个新生成的动作对象。您可能不需要这U特性,但是把它攑֜您的工具׃也很好。您也可以利?Spring 的生命周期方法。例如,当实例化 Struts 动作Ӟ 标记?init-method 属性被用于q行一个方法。类似地Q在从容器中删除 bean 之前Qdestroy-method 属性执行一个方法。这些方法是理昂贵对象的好办法Q它们以一U与 Servlet 生命周期相同的方式进行管理?在本文中Q您已经学习了将 Struts 动作整合?Spring 框架中的三种H门。?Spring ?ActionSupport 来整?StrutsQ第一U窍门中是q样做的Q简单而快P但是会将 Struts 动作?Spring 框架耦合在一赗如果您需要将应用E序ULC个不同的框架Q则需要重写代码。第二种解决Ҏ通过委托 RequestProcessor 巧妙地解开代码的耦合Q但是它的可扩展性不强,q且?Struts ?RequestProcessor 变成一pd命oӞq种Ҏ持l不了很长时间。第三种Ҏ是这三种Ҏ中最好的Q将 Struts 动作委托l?Spring 框架可以使代码解耦,从而您可以在您的 Struts 应用E序中利?Spring 的特性(比如日志记录拦截器)?lg所qͼ也会采用W三U方式来整合?
已经转移?q之徒--我的博客、我的生z?/a>
]]>
վ֩ģ壺
|
ϰ|
ɯ|
ײ|
|
|
˼|
|
|
|
|
|
|
ͺ|
ͼ|
|
|
|
ֶ|
|
Ұ|
|
|
ϻ|
|
|
|
ͭϿ|
IJ|
|
|
|
|
|
|
ɽ|
Դ|
|
|
Ϫ|
|