struts2学习---基础篇(续)

1:namespace必须用斜杠开头,你的namespace是什么,你访问的时候工程名后要跟什么。然后再跟对应的action

解释:package中namespace属性是可以不写的,等用于“namespace=""”,等空意味着只要你在url中输入action的name,不管是“http://localhost:8080/aaa/bbb/index”还是“http://localhost:8080/struts2/index”,aaa和bbb都是乱敲的,效果都一样,都可以访问这个action。

即:namespace=""的package囊括了其他package处理不了的action,url先寻找对应namespace中的action,没有的话再找namespace为空里面有没有对应的action

2:struts2的作用:把请求和视图分开

3:struts.xml中的package作用:为了区分两个同名的action,package中的name属性一般都用“模块”命名,namespace属性也和name一样。如图:

注意:凡是名字叫“success”的result都可以不写name属性,默认为success

4:部署项目后,启动了用debug模式,如图:点击鼠标所在的那个图标(七星瓢虫状)

5:拷贝项目A为B时,此时访问B出现404,原因是要修改一处地方:右键项目名-properties-点击Web,修改右边的Web-Context Root为B

6:修改jsp的默认编码?

windows---preference---如图:修改成chinese时,编码是GB2312,也可以改成其他的。

7:Actioon:

action中有calss属性,表明当你访问该action的时候它会去寻找对应的class,并执行其中的execute方法,执行过程:当执行ececute,返回值为success,此时根据success找到对应的jsp,当你不配置calss时,默认是找ActionSupport类的execute方法。

8:action的三种写法及区别:(只推荐用第三种,即:继承ActionSupport,原因是它帮我们封装了很多可以直接用的很方便的方法)

9:路径问题说明:

直接访问根路径(http://localhost:8080/工程名)的时候,首先会到web.xml,到对应的strutsFilter,然后就会去找对应的namespace,如果没找到,就会交给tomcat处理,就会到<welcome-file>然后访问该index.jsp。

即:如果struts.xml中的namespace是"/path",那么访问该action时要这样写:http://localhost:8080/工程名/path/aaa.action

10:相对路径:

上图中的href中使用的是相对路径。要注意的是:

如何使用绝对路径:

在myeclipse建立jsp页面时会自动生成以下代码:

<%
String path = request.getContextPath();          //它会自动获取整个工程的路径
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";        //http:localhost:8080+上面的path
%>

  此时在jsp页面中写链接时这样写:<a href="<%=basePath%>index.jsp">index.jsp</a>

这样的话,我们每个链接都要加一次这个,有点烦,可以这样写,每个页面只需写一次,整个页面都会默认basePath了,如下图:

11:action执行的时候并不一定要执行execute方法(不推荐用,请参考第12条)

如下图示例:action标签里面有name,class,method三个属性,class是action类,name指定名称,method指定该action中的哪个方法

12:DMI(动态方法调用):在调用action中add方法时这样写(加感叹号):【list!add.action】;除此之外,还有通配符,请参考13。

13:通配符:如图:url:http://localhost:8080/actions/StudentAdd

【在开发项目中,命名规范就是约定,命名要规范,这样的话配置会很简洁:*_*.jsp就等同于user_add.jsp】

jsp页面可以是“user_add_success.jsp”

先是Student*匹配了StudentAdd,该action中有add和delete两个方法,此时的method="{1}"就代表add方法,

{}中的1,2,3...和*号的内容是根据往里传的值来决定的。

通配符是为了减少action的数量:原因是如果用感叹号调用action中的方法,此时那个result中jsp就不能唯一匹配了

 14:还是通配符:如下图,name有2个*,class中有{1},method为{2},result为{1}_{2}.jsp

当输入url:http://localhost:8080/工程名/Teacher_add时,name会匹配Teacher_add,action会匹配TeacherAction,jsp会匹配Teacher_add.jsp

posted @ 2013-03-20 16:02  歌颂者  阅读(407)  评论(0编辑  收藏  举报