您的位置:首页 > 编程语言 > Java开发

struts2第八讲学习笔记,其他配置:全局结果集,默认Action,默认class

2017-05-31 20:50 465 查看
知识点:全局结果集,默认Action class, 默认Action

user.xml代码

<?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">

<struts>

<package name="user" namespace="/user" extends="struts-default">
<default-action-ref name="default"/>
<default-class-ref class="cn.sxt.action.MyLogin"/>

<global-results>
<result name="login">/login.jsp</result>
</global-results>


<action name="noClass" method="Fucccc">
<result>/success.jsp</result>
</action>

<action name="default">
<result>/error.jsp</result>
</action>


<action name="login" class="cn.sxt.action.Login" method="login">
<result>/success.jsp</result>
</action>
<action name="logout" class="cn.sxt.action.Login" method="logout">
<result>/index.jsp</result>
</action>
</package>

</struts>
如果在<action name="login" >这里不添加映射的class属性,那么执行默认的action的class,
struts2的默认的action是ActionSupport类,它的execute()方法返回Action.SUCCESS

因此,我们可以设计,当class属性没有的时候,默认执行一个自定义的class
<default-class-ref class="cn.sxt.action.MyLogin"/>



创建一个MyLogin的java类的Action,添加两个方法,execute()和fuction()
如果<action name="noClass">不指定class,也不指定method,那么默认执行自定义的class,默认方法是execute()
如果<action name="noClass" method="fuction">则指定自定义的class,执行它的fuction方法,

如果这个方法瞎写,如:<action name="noClass" method="Fucccc">则会报错java.lang.NoSuchMethodException: cn.sxt.action.MyLogin.Fucccc()

如果请求的action不存在,默认是返回404,

我们可以配置默认的Action,当请求的action不存在的时候,那么就执行它
<default-action-ref name="default"/>
<action name="default">
<result>/error.jsp</result>

</action>
这里class没有写,那么也执行我自定义的class
在浏览器中输入http://localhost:8080/loignByStruts2/user/delete.action
显示了error页面的"你所请求的资源不存在".这样设计的好处是界面更加友好

注意:这些配置的顺序有严格的要求,设置默认的action在最前面,其次是设置默认的class,最后是globle-results
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐