[java] Struts基本原理与核心配置

来源:互联网 发布:逆战源码 编辑:程序博客网 时间:2024/06/05 20:46

 在使用JSP/Servlet时,原理为:

       JSP –>web.xml中配置的 servletServlet-mapping –> Servlet(接受参数,验证,调用DAO等操作à跳转到不同的页面

 

使用Struts时,原理为:

       JSP à web.xml àActionServlet(url-pattern:*.do) àstruts-config.xml(根据path路径找对应的actionactionForm) àActionForm àValidate方法验证(如果通过进入action,否则返回input错误页)àaction à调用DAO进行逻辑判断 à成功时跳转某个页面(struts-config.xmlforward),失败时可以返回到错误也(input

Struts基本原理与核心配置 - 沧海月明 - 沧海月明
 

  

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中包含的属性:

nameattribute表示该aciton所对应的actionFormname属性;

一个aciton只能对应一个form,而一个form可以有多个action使用;

input用来作为错误页的,当validate方法执行后有错误,则自动跳转到该页面;

所有struts-config.xml中配置的路径必须先加 / ,表示路径从WebRoot下开始定义;

path表示该action的虚拟路径,必须加 / ,而且不需要加.do的后缀;

scope=request表示action所保存的属性范围,request表示每次请求重新建立新的action

type表示该action的包.类名;

action中可以包含多个不同的forward路径。

Forward中的属性:

Nameforward的唯一标识,在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属性默认路径为根路径,所以要加上所在的文件夹得路径。