Struts2需要注意事项集锦

这些问题是本人开发中遇到的,如果有不同意见的,欢迎指出,大家交流学习

1.写struts2的事情时,在return中,切记SUCCESS等是在Action中定义的,它是一个常量,如果写成了"SUCCESS"这个字符串字面值。如果写成了字符串字面值,在需要在xxx.jsp or xxx.html

注意,这是大小写敏感的哦。

2.在web.xml中,最新版(截至现在是struts-2.2.3.1)中标准的filter写法如下:(前提是你的web.xml中的格式一定要正确)




Struts Blank


struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2
/*


3.网上很多同志说把struts.xml放到src文件夹下,但这是eclipse中的情况,如果直接放到tomcat的webapps中deploy时,默认的struts.xml应该放在webapp/WEB-INF/classes/ 文件夹下,即:webapp/WEB-INF/classes/struts.xml。

4.关于中的name属性,可能有些同志会误解这个属性,以为它的值就是我们java的包名,其实这个名字是可以任意起的,只要不和其他的package中的name相同就可以了。它唯一的作用就是告诉开发人员这个包的唯一名字。

5.中的name属性的值要与表单中的action中的一致。如果你的中name的值为"hello",则在表单的应该写成“hello.action"。

不过,前提是没有写中的namespace属性,或namespace="/"。

如果namespace="/xxx/yyy"。则应该在表单中写成:

xxx/yyy/actionName.action" method="post|get">

注意,namespace必须要以“/”开头,否则会出现找不到xxx Action。这有点类似在servlet配置中的url-pattern。

6.在struts2标签中使用表达式时。要特别注意:

A:要开头处要添加:

  <%@ taglib prefix="s" uri="/struts-tags" %>

B:其次在web.xml中要添加struts2的核心控制器:


struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


struts2
/*

C:在app/WEB-INF/lib中要添加相应的struts2的库。

要不会报错的。

%{age>60}" >

display result contents

7.国际化:

A:全局方面:

在app/WEB-INF/classes/struts.xml中配置:

globalMessages">

然后在app/WEB-INF/classes/文件夹下建立国际化资源文件,baseName_language_contry.properties 比如:

globalMessages_en_US.properties

globalMessages_zh_CN.properties

如果想要以特定的文件夹来存放国际化资源文件,则可这样子配置(假设你放在app/WEB-INF/classes/i18n/文件夹下),则要这样子配置:

在app/WEB-INF/classes/struts.xml中配置:

i18n/globalMessages">

app/WEB-INF/classes/i18n/文件夹下的文件为:

globalMessages_en_US.properties

globalMessages_zh_CN.properties

B:不用在配置文件里配置的方法:

在app/WEB-INF/classes/ 里放置你的国际化资源文件:xxxxx.properties

然后的jsp中调用时:

注意:中name的属性必须是国际化资源文件的全名(除了".properties"后缀名,后缀名一定不要写进去!)。

C:动态改变国际化(前提当然是你要准备好这些国际化文件咯^_^):在请求Action时,添加一个参数:

xxxx.action?request_locale=zh_CN, 这个表示的是中文。

xxxx.action?request_locale=en_US, 这个表示的是英文。

8.标签:

A:set

@

welcome , yang zhi yong!

sorry, you are not yang zhi yong!

@#{"key":"value"}, 注意单引号与双引号的位置。

welcome , yang !

sorry, you are not yang!

@与数字比较大小(注意,不用大括号的哦):

> 61">(或者写成: gt 61"> 也可以)

more than 61

< 61"> (或者写成 lt 61"> 也可以)

less than 61

equal 61



9.Struts2跳转时CSS失效问题:

解决方法 :

<%
String contextPath=request.getContextPath(); //这里获取的是当前运行的webApp名称

String basePath = request.getScheme()+"://" + request.getServerName()+":"+ request.getServerPort()+contextPath;

basePth的结果是http://addrress:port/webApp

例如:http://localhost:8080/mywebApp

注意是最后是没有"/"的哦....

%>


10.配置拦截器的问题

如果在struts.xml文件中的Action,没有添加使用拦截器,则默认的拦截器将会起作用.但是,当一旦为该包中的Action添加使用了某个拦截器,那么这个默认的拦截器就不会起作用了.这时,就要求手动地添加该默认的拦截器.

11. 在struts.xml中配置action时,如果有相同的名字的action(且在同一个包),则只会有最后一个action生效

12. 分割路径的问题:在unix和linux都适用.

  1. 由于unix中file.separator为斜杠"/",下面这段代码可以处理windows和unix下的所有情况:
  2. Stringtemp[]=name.replaceAll("\\\\","/").split("/");


13. 如果Action中的字段与Model中的字段相同, 则Model的优先.


14.Struts2标签是可以嵌套使用的:





15.重定向Action:


           
           		listAllFilesAction
           
           /jsp/login.jsp
        
        
        
        	/jsp/listOwnFiles.jsp
        

16.关于在中显示HTML格式的内容时。请使用escape属性来决定是否解析HTML格式的内容。


你可能感兴趣的:(Struts2需要注意事项集锦)