Struts2学习笔记3

 Include:

配置的action比较多的时候可以根据action的逻辑进行分包操作,就是命名多个struts.xml,在主要的struts.xml中添加include标签,将其他逻辑的xml包含进来,配置如下:

<include file="struts1.xml"></include>

Intercerptor拦截器配置(跟过滤器差不多)、后面会详细讲解,先了解下配置

可以配置intercerptor栈,支持继承,如下:

Struts2学习笔记3_第1张图片

<interceptors>

<interceptor-stack name="myIcp">

<interceptor-ref name=""></interceptor-ref>

</interceptor-stack>

</interceptors>

补充Action的配置:

配置action的method属性(项目中常用配置)

Name对应前台页面传递的action名字,method对应action类中的方法名字

其中在Action类中方法的名字可以这样写:doLogin,这样的目的是防止与关键字重名,但是最好还是采用前一种方法,起名字时避免起关键字,在查找方法时也比较方便。

DMI动态方法调用:

前台:

<href="<%=path %>/test1/test1.action!add">test1</a>

Struts.xml配置:

<action name="test1" class="com.ant.action.LoginAction">

<result name="success">/msg/loginSuc.jsp</result>

<result name="fail">/msg/loginFail.jsp</result>

</action>

Action类中要有add方法

缺陷:多个action对应的方法返回值和返回页面要一致

有点:省写action的配置

建议使用method方式

Forward action(一般不用)是指有些程序员习惯是jspjsp页面之间不可以直接跳转,个人认为这没太大的意义

<action name="index">

<result>/index.jsp</result>

</action>

前台: <herf="index.action">主页</a>

默认action

<default-action-ref name="error"></default-action-ref>

<action name="error">

<result>/error.jsp</result>

</action>

在请求不存在的时候专项error.jsp

Web.xml配置不存在页面或请求的转发Error-page的配置

<error-page>

<error-code>404</error-code>

<location>/error.jsp</location>

</error-page>

根据ie版本和配置的不同有不同的情况

actionmethod配置中会遇到配置量很大的情况,这时用到通配符:

*表示所有字符(不包含”/“)

**表示所有字符(包含”/“)

\表示转义符

前台

<h1>CRUD操作</h1>

<href="addUser.action">添加用户</a><br>

<href="delUser.action">删除用户</a><br>

<href="modifyUser.action">修改用户</a><br>

<href="queryUser.action">查询用户</a><br>

配置

<!--  

<action name="addUser" class="com.ant.action.UserAction"

method="add">

<result name="success">/addUserSuc.jsp</result>

</action>

<action name="delUser" class="com.ant.action.UserAction"

method="del">

<result name="success">/delUserSuc.jsp</result>

</action>

<action name="modifyUser" class="com.ant.action.UserAction"

method="modify">

<result name="success">/modifyUserSuc.jsp</result>

</action>

<action name="queryUser" class="com.ant.action.UserAction"

method="query">

<result name="success">/queryUserSuc.jsp</result>

</action>

-->

<action name="*User" class="com.ant.action.UserAction"

method="{1}">

<result name="success">userControl/{1}UserSuc.jsp</result>

</action>

由原来的四个action变成了一个action

这种优势在针对多个表进行CURD操作时更为突出

如对Role表也进行CURD操作,只需要在struts.xml中增加一个action

<action name="*Roleclass="com.ant.action.RoleAction"

method="{1}">

<result name="success">userControl/{1}RoleSuc.jsp</result>

</action>

在效率上可以优化,关键在于action名字的取法:如前台:userAdd.action

后台可以action name="user*"

甚至可以起名字的时候采用User_add.action(表名_方法名,表名一定要大写,因为在配置的时候第一个参数要作为类名)

在后台可以采用<action name="*_*class="com.ant.action.{1}Action"

method="{2}">

<result name="success">baseControl/{1}/{0}Suc.jsp</result>

</action>

由此可见,在jsp命名的时候也要注意大小写的问题{0}表示*_*

采用这种方式一定要做好注释,在系统维护的时候可以方便的查看

在通配符的使用中要注意优先级

不包含通配符的路径,优先级最高

包含通配符的路径,优先级按照顺序来定,前面的大于后面的

Zreo configration 零配置  注解配置  配置放在action类中,struts.xml是空的

Action类中需要配置以下内容,是类级别的

@ParentPackage(value="struts-default")

@Namespace(value="/")

//@Result(name="success",value="/login.jsp")

@Results({

@Result(name="success",value="/login.jsp"),

@Result(name="error",value="/loginError.jsp")

})

前台action=user.action注意user是小写,要与类名一致,如类名UserAction

个人认为,这种方式将是struts2配置的发展方向

<!--EndFragment-->

你可能感兴趣的:(jsp,xml,ant,struts,IE)