相关疑难解决方法(0)

如何防止用户在网站上多次发布数据

我正在开发一个Web应用程序(J2EE),我想知道可以从浏览器处理双重帖子的选项.

我过去看过和使用过的解决方案都是客户端的:

  • 用户单击它后立即禁用提交按钮.
  • 按照POST-Redirect-GET模式阻止用户单击后退按钮时的POST.
  • 处理表单的onSubmit事件并使用JavaScript跟踪提交状态.

如果可能的话,我更愿意实现服务器端解决方案.有没有比我上面提到的更好的方法,或者客户端解决方案最好?

java-ee double-submit-problem

16
推荐指数
3
解决办法
3782
查看次数

插入不存在的位置 - 没有主键

我有3张桌子:牙医,团体和groupdentlink.许多牙医通过groupdentlink表链接到许多组.

因此,我正在尝试进行查询,将行插入groupdentlink(将状态中的所有牙医与州内的所有组相关联),但前提是这些行尚未存在.简而言之,我想添加新行而不覆盖现有行或复制它们.

所以查询的意图是这样的:

INSERT INTO groupdentlink (f_dent_id, f_group_id, f_schedule_id)
VALUES ('$_POST[id]', '$groupid', '$scheduleid')
WHERE NOT EXISTS ('$_POST[id]', '$groupid')
Run Code Online (Sandbox Code Playgroud)

而且我在groupdentlink表中没有任何主键.

先感谢您!

mysql overwrite primary-key

9
推荐指数
2
解决办法
1万
查看次数

令牌拦截器和令牌会话拦截器之间的区别?

我知道两个拦截器都用于防止重复提交表单吗?但两者之间究竟有什么区别?哪一个比其他人有额外优势?

struts2 interceptor

3
推荐指数
1
解决办法
4401
查看次数

令牌/令牌会话拦截器导致 HttpSession 上的空指针

我正在研究 struts2 Web 应用程序,我正在使用令牌拦截器处理 CSRF 漏洞。

我所做的是成功和错误,我会将用户重定向到同一页面,但会出现操作错误或成功消息。

<action name="saveApplicationForm" class="action.ApplicationFormAction" 
      method="saveApplicationForm">
        <interceptor-ref name="token" />
        <result name="invalid.token" type="tiles">applicationForm.tiles</result>    
        <result name="input" type="tiles">applicationForm.tiles</result>
</action>
Run Code Online (Sandbox Code Playgroud)

没有令牌/令牌会话拦截器一切正常,但是当我使用拦截器时,我收到了 NullPointerException。

堆栈跟踪

java.lang.NullPointerException: null
at action.ApplicationFormAction.saveApplicationForm(ApplicationFormAction.java:218) ~[ApplicationFormAction.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) [xwork-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.handleValidToken(TokenInterceptor.java:193) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.handleToken(TokenInterceptor.java:154) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.doIntercept(TokenInterceptor.java:142) [struts2-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) [xwork-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) [struts2-core-2.3.16.3.jar:2.3.16.3] …
Run Code Online (Sandbox Code Playgroud)

java struts2 csrf-protection interceptorstack struts2-interceptors

1
推荐指数
1
解决办法
921
查看次数