第二:马士兵Struts2 视频学习笔记之struts.xml文件中的action

1. struts.xml文件package标签的namespace 决定了action 的访问路径,默认为“”,可以接收所有路径的actuon,

  或者可以写成“/”或者“/XX”等等。

 

2. struts.xml文件package标签的name属性,和一般的java项目中的package类似,在这里是区分action,防止命名重名的情况。

 namespace属性 如果写成namespace="/front",那么访问该项目的hello action的时候,url地址就要写成......./front/hello.action。同样.action可以省略。namespace如果不为空,那么必须以“/”开头。

 

3. result标签中 name属性的默认值为success,所有没有写name属性的它的name属性都是success。成功。

 

 

 

 

 

4. action标签中class的配置:当访问这个action的时候会去找到这个对应的class文件,然后执行该文件中的execute方法,该方法的返回类型是String,比如return “success”;

所以该class文件可以是一般的java文件,只要该类中有execute方法,并且返回值是String就可以被struts2当成action。

 

此时的执行过程为:找到该action是一个class时,会去找到该class的对象(每次访问时必定new一个,如果不是每次访问时新创建会出现线程同步的问题),执行其中的execute方法,返回一个string,根据返回的String在action标签下的result中寻找对应的name值匹配的result,将匹配到的result标签中的jsp文件(视图)返回给用户浏览器。

 

5.  具体视图的返回可以有用户自己定义的action来决定。具体的实现手段有三种。

 

第一种:action对应的class文件是一个普通的java类,但是有execute方法,并且返回值是String类型

第二种:该class类文件实现Action接口,并且重写execute方法,Action接口只有一个方法,那就是execute方法。

第三种:该class类文件继承ActionSupport类,并且也重写execute方法。ActionSupport本身也实现了Action接口。

 

 

但是在实际的开发中我们只使用继承ActionSupport这一种方法,因为ActionSupport本身已经为我们封装了可以直接调用的特别方便的方法。因此可以直接在我们自己定义的java文件,即子类中直接调用这些方法。

你可能感兴趣的:(java,struts)