Q1:在workbench中建立FK时,会有可勾选的选项(FK options):
(1)On Delete
Restrict :当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。
Cascade:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。
关于Casade有一个很详细的解释链接在这里~~
Set null:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)
No action:意思同restrict.即如果存在从数据,不允许删除主数据。
(2)On Update
restrict(约束):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。 no
action:意思同restrict.
cascade(级联):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。
set null:当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。
NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。
思考之后,选择两项都选择Cascade选项。
OK,数据库的创建到此为止。
Q2:配置struts.xml文件
这个文件的简单结构,大概可以分析为两部分:
(1)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
注:DTD(Document Type Definition)文档类型定义,是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。它是标准通用标记语言和可扩展标记语言1.0版规格的一部分,文档可根据某种DTD语法规则验证格式是否符合此规则。
所以该语句应该你所使用的struts版本相符合
(2)固定形式
<struts>
<package>
<action name="动作名称" class="Action类" method="调用Action类中的方法">
<result name="返回值1">/结果页面1.jsp</result>
<result name="返回值2">/结果页面2.jsp</result>
</action>
</package>
</struts>
1.关于package配置:
在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置。它的常用属性有:
name:必填属性,用来指定包的名字。
extends:可选属性,用来指定该包继承其他包。继承其它包,可以继承其它包中的Action定义、拦截器定义等。
namespace:可选属性,用来指定该包的命名空间。
2.关于命名空间namespace配置:
当同一个Web应用中需要同名的Action时,Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。
Struts2通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间。
注:如果某个包没有指定namespace属性,即该包使用默认的命名空间,默认的命名空间总是”“。
3.包含配置 include file:
<struts>
<include file="struts-default.xml"/>
</struts>
如果按照这个套路来写struts.xml文件的话好像也不是很难,emmm,收起我的flag。