Struts的作用,简单说把用户的请求和返回的视图分离!
<package name="front" extends="struts-default" namespace="/front">
<action name="index">
<result>/Namespace.jsp</result>
</action>
</package>
package跟java的包类似,防止命名冲突,一般采用模块化命名。
namaspace决定了action的访问路径,默认为namespace="",表示可以接收所有路径的action。 namespace可以写为/,或者为/xxx,或者/xxx/yyy,对应的action访问路为/index.action,/xxx/index.action,/xxx/yyy/index.action。 namespace最好也用模块来进行命名。
Struts2每次访问Action,都会创建一个新对象!而Struts1访问的Action是同一个对象,在Struts启动时创建!
路径问题?
Struts2中的路径问题根据Action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
解决方案:统一使用绝对路径。(在jsp中使用request.getContextRoot方式来拿到webapp的路径或者使用myeclipse经常用的,指定basePath。
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<a href="<%=basePath%>index.jsp">index.jsp</a>
或在<head>中加入<base href="<%=basePath%>" />