一 struts的作用
把请求和响应视图分开!
package 用来区分重名的情况!
namespace决定了action的访问路径,默认为“” ,可以接收所有路径的action。
result 默认name="success" ,返回成功!
具体视图的返回可以由用户自己定义的Action来决定,具体的手段是根据返回的字符找到对应的配置项,
Struts1 Action对象只有一个,Struts2中每次访问的时候都会创建一个,解决多线程同步问题。
调用指定class中的execute方法,返回String类型数据,根据success去找到对应jsp然后返回
Action没有class默认ActionSupport
自建类继承exActionSupport
路径问题说明:
struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径
虽然可以用redirect方式解决,但redirect方式并非必要
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse常用的,指定basePath
<%
String path = request.getContextPath();//拿到项目路径
String basePath = request.getScheme()//拿到http字符串 + "://" + request.getServerName() //拿到localhost+ ":" + request.getServerPort()//拿到8080
+ path + "/";
%>//形成绝对路径
<base href="<%=basePath%>"> 指定base是什么内容,当前页面所有页面的链接全部加上basePath
Action执行的时候不一定执行execute方法
上图method调用add方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐) !Add
必须加上下面的配置
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
优点少创建Aciton
使用通配符,将配置量降到最低