在使用JSP/Servlet时,原理为:
JSP –>web.xml中配置的 servlet与Servlet-mapping –> Servlet(接受参数,验证,调用DAO等操作) à跳转到不同的页面
使用Struts时,原理为:
JSP à web.xml àActionServlet(url-pattern:*.do) àstruts-config.xml(根据path路径找对应的action与actionForm) àActionForm àValidate方法验证(如果通过进入action,否则返回input错误页)àaction à调用DAO进行逻辑判断 à成功时跳转某个页面(struts-config.xml:forward),失败时可以返回到错误也(input)
Struts-config.xml中的配置组成:
<form-beans > <form-bean name="loginForm" type="com.wll.struts.form.LoginForm" /> </form-beans> |
以上配置针对的是Action的配置。
<action-mappings > <action attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request" type="com.wll.struts.action.LoginAction"> <forward name="succ" path="/succ.jsp" /> <forward name="fail" path="/login.jsp" /> </action> </action-mappings> |
action-mappings:可包含多个aciton
action中包含的属性:
name、attribute表示该aciton所对应的actionForm的name属性;
一个aciton只能对应一个form,而一个form可以有多个action使用;
input:用来作为错误页的,当validate方法执行后有错误,则自动跳转到该页面;
所有struts-config.xml中配置的路径必须先加 / ,表示路径从WebRoot下开始定义;
path:表示该action的虚拟路径,必须加 / ,而且不需要加.do的后缀;
scope=“request”:表示action所保存的属性范围,request表示每次请求重新建立新的action;
type:表示该action的包.类名;
在action中可以包含多个不同的forward路径。
Forward中的属性:
Name:该forward的唯一标识,在action代码中执行跳转时需要通过该name来查找对应的路径;
Path:表示该forward所要跳转的路径,必须加 /。
<message-resources parameter="com.wll.struts.ApplicationResources" /> |
配置资源文件所在的路径,资源文件的后缀名必须为properties
<data-sources />
通过data-sources可以配置数据源连接,但struts开发中不使用
<global-exceptions> <exception key="num" type="java.lang.NumberFormatException" path="excep"> </exception> </global-exceptions> <global-forwards> <forward name="excep" path="/error.jsp"></forward> </global-forwards> |
以上是配置公共跳转路径和公共异常处理的配置,一般不使用。
struts-config.xml 文件中的,action元素中的path属性表示的是浏览器地址栏中相对于应用程序根目录的请求路径,
与form 中提交表单以后有谁处理的action属性指定的根路径一致。
例如:form表单的提交处理请求是classesAdd.do,其在ie地址栏中的路径如下所示,
http://localhost:9000/Struts_study/classesMan/classesAdd.do
红色部分表示的根路径,所以,action中的classesAdd.do请求的完整路径是classesMan/classesAdd.do
<form name="form1" action="classesAdd.do" method=post>
所以 struts 中的action 的path路径是指/classesMan/classesAdd。
大家可以看着浏览器的地址栏加以配置。
补充一下吧,form中的action的默认路径就是当前路径,
而struts中的action 的path属性默认路径为根路径,所以要加上所在的文件夹得路径。