Struts工作原理和核心配置
(一)
strurs的工作原理
1.
在 使用Jsp/Servlet时的流程
Jspà web.xml中配置的servlet 和Servlet-mapping找到对应的Servlet à Servlet(接受参数 验证 调用DAO等操作)à
跳转到不同的页面
2.
使用Struts时的流程
Jsp(提交到*.do) --> web.xml(通过*.do找到ActionServlet)
-->ActionServlet(通过web.xml中ActionServlet所在的配置中找到struts-config.xml)-->struts-config.xml (通过struts-config中的path路径找到
AcionForm和Action ) -->
ActionForm(通过ActionForm中的validate方法验证,如果通过则进入Action 失败则通过input返回错误页) -->
验证通过:Action(调用DAO进行逻辑判断,验证失败则通过input返回错误页) -->验证成功则通过Struts-config.xml中的forward跳转到相应的页面.
Struts流程图:
(二)
Struts的核心配置(struts-config.xml)
Struts-config.xml中的配置组
(1).
<form-beans >
<form-bean name="loginForm"
type="org.cgz.struts.form.LoginForm"
/>
</form-beans>
|
以上为ActionForm的配置
1.<form-beans/>中可以包含多个<form-bean/>
2.<form-bean/>中包含了2个属性: name->该bean的名称 是此bean的唯一标识;type->该bean的包.类名称
注:通过此段代码可以读到form-bean 但看不出是如何跳转到form-bean中的.如何跳转到form-bean中在下面的
Action中会有体现
(2).
以上是可以用来配置数据源连接,但struts中开发中一般不会去使用。
(3).
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="org.cgz.struts.action.LoginAction"
>
<forward name="login_success"
path="/login_success.jsp" />
</action>
</action-mappings>
|
以上为Action的配置
1.<action-mappings />中可以包含多个<action>...</action>
2.name和attribute表示该Action对应的Actionform的name属性(由此可以看出一个Action只能对应一个ActionForm,而一个ActionForm可以对应多个Action)
3.input 后面的页面是用来作为错误页的 当validate方法验证失败后 会自动跳转到该页面
注:所有struts-config中配置的路径都必须加 / 表示从WebRoot下开始定义
4.path
表示该 Action的虚拟路径 必须加 /,且不能加.do的后缀(和
servlet-mapping中的url-path 类似)
5.scope 表示action 所保存的属性范围 request表示每次请求重新建立新的action
6.type 表示action的包.类名
7. <forward
... />在 action中可以包含多个不同的forward 路径 forward中的属性
Name 该forwar的唯一标识 在Action代码中执行跳转时 需要通过其来查找对应的路径
Path 表示该 forward 所要跳转的路径
(4).
<message-resources parameter="org.cgz.struts.ApplicationResources"
/>
|
以上是用来配置资源文件所在的路径
资源文件的后缀名必须为 properties
(5)
<global-exceptions >
<exception key="num" type="java.lang.NumberFormatException"
path="exception"></exception>
</global-exceptions>
<global-forwards >
<forward name="exception" path="/errors.jsp"></forward>
</global-forwards>
|
.以上是公共跳转路径和公共异常处理 一般不去使用
注:一般情况下 需要手工配置的是Action中的 forward