项目开发过程的一些经验
(一)Eclipse下JSP文件出现string cannot be resolved to a type的解决方法
这种情况一般是因为你的JDK版本没有设置好,或者设置的有不一致的地方。
1.首先检查window->preferences->Java->compiler 和Installed JRE的版本是否一致,不一致请设置一致它。这时候如果还报错请看第二步。
2.在项目上右键->properties->Java Build Path->Libraries中检查其中的JRE跟你在第一步设置的JRE版本是否一致,应该是不一致的,那么删掉原来这个JRE然后Add Library添加上第一步中设置的Library,点击确定就可以不报错啦~
(二)Struts2防止表单重复提交问题
防止表单重复提交主要用的到标签是<s: token />,拦截器 <interceptor-ref name="token" />,还有一个默认的返回值<result name="invalid.token">/input.jsp</result>
在页面加载时,<s: token />产生一个GUID(Globally Unique Identifier,全局唯一标识符)值的隐藏输入框如:
<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>
同时,将GUID放到会话(session)中;在执行action之前,“token”拦截器将会话token与请求token比较,如果两者相同,则将会话中的token删除并往下执行,否则向actionErrors加入错误信息。如此一来,如果用户通过某种手段提交了两次相同的请求,两个token就会不同。
具体方法:
(1)在表单中插入<s:token/>标签
(2)假设表单提交的action为login,则struts.xml配置如下
<package name="test" extends="strutsdefault"namespace="/">
<action name="login" />
<interceptor-ref name="token" />
<!-- 令牌拦截器 -->
</action>
</package>