struts2 路径问题—method问题—通配符

首先说说struts2 的路径问题

struts2中的路径是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath (最佳方法)

在jsp页面中指定basePath:

 <%String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<head>
<base href="<%=basePath%>" />

</head>

通过上述配置,则后面jsp中的各种跳转直接<a href="index.jsp">index.jsp</a>就可以实现

 

第二:method问题

之前在struts.xml中配置时一直使用的是 <action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">这样的精确配置,可后面发现这样当面临多个方法时就比较麻烦。解决方案就是使用动态方法调用即DMI(Dynamic Method Invocation)

使用DMI的动态方法调用则在struts.xml文件中配置相对简单
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
   <result>/user_add_success.jsp</result>
</action>

在jsp页面中<a href="<%=basePath %>user/user!add">添加用户</a>

 

第三:通配符问题

使用通配符后得到的最简配置为

 <package name="actions" extends="struts-default" namespace="/actions">

<action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
            <result>/{1}_{2}_success.jsp</result>

</action>

</package>

在jsp页面中<a href="<%=basePath %>actions/Teacher_add">添加老师</a>    这样的话{1}_{2}就代表 Teacher_add

也就是说一个StudentAction.java中有一个方法为add();

同时有一个页面叫做Teacher_add_success.jsp

posted @ 2012-05-07 21:42  狐狸小艾  阅读(328)  评论(0编辑  收藏  举报