--创建区域表
CREATE TABLE SITES (
SITECODE VARCHAR2(10) NOT NULL,
SITENAME VARCHAR2(30) NOT NULL
);
--添加主键
ALTER TABLE SITES
ADD ( CONSTRAINT SITES_PKSITECODE PRIMARY KEY (SITECODE)
USING INDEX );
--创建项目信息表
CREATE TABLE PROJECTS(
PROJECTCODE VARCHAR2(10) NOT NULL,
PROJECTNAME VARCHAR2(30) NOT NULL,
SITECODE VARCHAR2(10) NOT NULL,
DISCOUNT NUMBER NULL
);
--添加主键索引
ALTER TABLE PROJECTS
ADD ( CONSTRAINT PROJECTS_PKPROJECTCODE PRIMARY KEY (PROJECTCODE)
USING INDEX );
--添加外键索引
CREATE INDEX FK_PROJECTSSITECODE ON PROJECTS
(
SITECODE ASC
);
--添加外键约束
ALTER TABLE PROJECTS
ADD ( CONSTRAINT FK_PROJECTSSITECODE
FOREIGN KEY (SITECODE)
REFERENCES SITES ) ;
1.1 命名规范
1、 所有jsp,action映射路径均为小写字母,如有需要可以使用小写字母+数字:例如:
/projectlist,/projetlist.jsp
2、 所有<html:form>中的元素(如文本框,列表框等)名称都使用java规范的变量命名方式(变量由一个或多个单词组成,第一个单词小写,第一个单词后的单词首字母大写),例如:
<html:text styleClass="input" maxlength="10" property="projectCode" size="30"/>
3、 其它方面均遵守SUN推荐的编码规范。
1.2 文件
1.2.1 projectlist.jsp
该jsp页面用来显示项目信息列表,并提供查询功能。同时,提供按钮将用户导向到添加、修改、删除功能。
1.2.2 projectform.jsp
在执行添加、修改操作之前,需要提供一个form供用户输入数据,在执行删除操作之前,需要提供一个form将被删除数据显示出来,供用户确认。该jsp页面就是用来满足这些需要,提供对单条项目信息的显示,根据具体的操作类型(创建、修改、删除),数据被显示在可编辑的输入控件中或不可编辑的label(文本标签)上。
1.2.3 success.jsp
添加、修改、删除等操作正常完成后,提供一个页面显示“恭喜”信息,使得用户能够清楚知道自己的行为已经生效J。
1.2.4 failed.jsp
添加、修改、删除等操作异常失败,提供一个页面显示“失败”信息,使得用户能够清楚知道自己的行为已经失败L。
1.2.5 ProjectListSearchAction.java
“Project”+”List”+”Search”+”Action”,组成了这个Action的名字,这是我个人的命名风格,表示这个Action会处理项目列表和查询事务。在projectlist.jsp被装载之前,ProjectListSearchAction需要将数据加载到scope指定的地方,供projectlist.jsp显示,当用户从projectlist.jsp中提交查询请求,该Action需要处理查询,并加载数据,供projectlist.jsp显示。
1.2.6 ProjectFormLoadAction
这个Action用来处理在显示projectform.jsp之前,将所需要的数据加载到scope指定的范围中,供projectform使用。
1.2.7 ProjectFormSaveAction.java
这个Action用来处理用户在projectform.jsp中提交的数据,根据用户的操作类型,完成具体的操作,并将合适的提示页面(success.jsp or failed.jsp)显示给用户。
1.2.8 web.xml
在Struts安装那一节,我们已经知道web.xml文件的作用,通过这个文件,我们可以将ActionServlet配置好,用以截获用户对Struts应用的访问请求。下面是示例程序所用的web.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>simpledemo</display-name>
<description>Demo for using STRUTS to do some thing about CRUD(Create,Read,Update,Delete) and any more....</description>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>debugjsp</servlet-name>
<description>Added to compile JSPs with debug info</description>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>classdebuginfo</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>debugjsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>projectsearch.do</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
</web-app>