`
yxwang0615
  • 浏览: 560849 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

strtus2.0 (一)& 通配符

阅读更多

一、对struts.xml的进一步说明:

1. package不是action对应的包名,只是区分action,防止重名,一般以模块来命名。

2. namespace决定了action的访问路径,默认为"",可以接收所有路径的action。

namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,xxx/index.action,/xxx/yyy/index.action  ,namespace最好也用模块来命名。

namespace不写,默认代表namespace="",一个请求,只要namespace从struts.xml匹配不到的,但action能匹配到,都会用该默认的namespace对应的action来处理。

一般用下面这个package来处理其他package处理不了的action:

   <package name="main" namespace="" extends="struts-default">
        <action name="index">
            <result>
                /xxx.jsp
            </result>
        </action>
    </package>

 这里http://host:8080/projectName/xxxx/hello  ,http://host:8080/projectName/xxxx/fdaf/hello等写法都可以跳转到xxx.jsp,只要对应action正确匹配。 

3.result节点name属性不写,默认代表name="success"。

二、第二个程序strtus_Action示例:

1.jsp默认编码格式改为chinese,  National Standard (window > perference > jsp >...),编码格式GB18030.

2.新建一个UserAction.java:

public class UserAction extends ActionSupport{
//org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter f;
	public String add() throws Exception
	{
		return "add_success";
	}
	public String del() throws Exception
	{
		return "del_success";
	}
	public String modify() throws Exception
	{
		return "modify_success";
	}
}

 

2.sturts.xml:

<!-- Add packages here -->
      <constant name="struts.devMode" value="true" />
      <constant name="struts.i18n.encoding" value="GBK" />
	  <package name="user" namespace="/action" extends="struts-default">
        <action name="*_*" class="com.wyx.user.action.{1}Action" method="{2}">
            <result name="{2}_success">
                /{1}_{2}_success.jsp
            </result>
        </action>
        
    </package>

 action标签下的class是action对应的类,包名下的完整路径,这里用到的{1}{2}为占位符、*为通配符,这样做的好处很明显,所有这个模块下的action都可以用着一个package来管理,很方便。但是一定要注意action和jsp文件的命名规范,{1}指的是action的类,类名首字母都是要大写,{2}指的是方法名,配置后,所有.../projectName/action/*_*格式的请求都会被这个action标签匹配到。所以action中所有方法的返回值、所有jsp页面的名字,都是根据action的名字和方法名为依据命名的,观察UserAction中的方法名字及其返回值与工程目录的关系,就明白了。

 

 客户端请求示例:

 <body>
  <a href="<%=basePath%>action/User_add.action">添加好友</a>
  <a href="<%=basePath%>action/User_del.action">删除好友</a>
  <a href="<%=basePath%>action/User_modify.action">修改好友</a>
  </body>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics