springmvc期末考试题及答案(中级会计考完多久出答案)

本文目录
中级会计考完多久出答案
一个月。根据查询中国人力资源和社会保障部官网信息显示,中级会计师考试成绩在考完一个月各平台就会发布考试题目及答案。中级会计考试,又称中级会计职称考试,是由财政部、人事部共同组织的全国统一考试。
如何防止spring mvc重复提交
用token,使用token的逻辑是,给所有的url加一个拦截器,在拦截器里面用java的UUID生成一个随机的UUID并把这个UUID放到session里面,然后在浏览器做数据提交的时候将此UUID提交到服务器。服务器在接收到此UUID后,检查一下该UUID是否已经被提交,如果已经被提交,则不让逻辑继续执行下去…
好的,来点实际代码,也许实际代码才是最好的老师:
注解Token代码:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Token {
boolean save() default false;
boolean remove() default false;
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Token {
boolean save() default false;
boolean remove() default false;
}
拦截器TokenInterceptor代码:
public class TokenInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
Token annotation = method.getAnnotation(Token.class);
if (annotation != null) {
boolean needSaveSession = annotation.save();
if (needSaveSession) {
request.getSession(false).setAttribute("token", UUID.randomUUID().toString());
}
boolean needRemoveSession = annotation.remove();
if (needRemoveSession) {
if (isRepeatSubmit(request)) {
return false;
}
request.getSession(false).removeAttribute("token");
}
}
return true;
} else {
return super.preHandle(request, response, handler);
}
}
private boolean isRepeatSubmit(HttpServletRequest request) {
String serverToken = (String) request.getSession(false).getAttribute("token");
if (serverToken == null) {
return true;
}
String clinetToken = request.getParameter("token");
if (clinetToken == null) {
return true;
}
if (!serverToken.equals(clinetToken)) {
return true;
}
return false;
}
}
public class TokenInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
Token annotation = method.getAnnotation(Token.class);
if (annotation != null) {
boolean needSaveSession = annotation.save();
if (needSaveSession) {
request.getSession(false).setAttribute("token", UUID.randomUUID().toString());
}
boolean needRemoveSession = annotation.remove();
if (needRemoveSession) {
if (isRepeatSubmit(request)) {
return false;
}
request.getSession(false).removeAttribute("token");
}
}
return true;
} else {
return super.preHandle(request, response, handler);
}
}
private boolean isRepeatSubmit(HttpServletRequest request) {
String serverToken = (String) request.getSession(false).getAttribute("token");
if (serverToken == null) {
return true;
}
String clinetToken = request.getParameter("token");
if (clinetToken == null) {
return true;
}
if (!serverToken.equals(clinetToken)) {
return true;
}
return false;
}
}
然后在Spring MVC的配置文件里加入:
《!-- 拦截器配置 --》
《mvc:interceptors》
《!-- 配置Shiro拦截器,实现注册用户的注入 --》
《mvc:interceptor》
《mvc:mapping path="/**"/》
《bean class="com.storezhang.video.shiro.ShiroInterceptor"/》
《/mvc:interceptor》
《!-- 配置Token拦截器,防止用户重复提交数据 --》
《mvc:interceptor》
《mvc:mapping path="/**"/》
《bean class="com.storezhang.web.spring.TokenInterceptor"/》
《/mvc:interceptor》
《/mvc:interceptors》
《!-- 拦截器配置 --》
《mvc:interceptors》
《!-- 配置Shiro拦截器,实现注册用户的注入 --》
《mvc:interceptor》
《mvc:mapping path="/**"/》
《bean class="com.storezhang.video.shiro.ShiroInterceptor"/》
《/mvc:interceptor》
《!-- 配置Token拦截器,防止用户重复提交数据 --》
《mvc:interceptor》
《mvc:mapping path="/**"/》
《bean class="com.storezhang.web.spring.TokenInterceptor"/》
《/mvc:interceptor》
《/mvc:interceptors》
相关代码已经注释,相信你能看懂。
关于这个方法的用法是:在需要生成token的controller上增加@Token(save=true),而在需要检查重复提交的controller上添加@Token(remove=true)就可以了。
另外,你需要在view里在form里增加下面代码:
《input type="hidden" name="token" value="${token}" /》
《input type="hidden" name="token" value="${token}" /》
已经完成了,去试试看你的数据还能重复提交了吧。

更多文章:
118论坛手机打不开了怎么回事?118图118论坛网址怎么变成卖茶叶的
2025年6月9日 10:45
西安abap开发培训(SAP ABAP培训,ABAP培训怎么样)
2025年12月31日 01:00
loopback下载(如何在ubuntu命令行下下载kvm)
2026年4月9日 08:30
security video(bios setup utility怎么设置开机密码 不是登陆密码啊)
2026年1月30日 08:00
asp session用法(关于ASP.NET中session的用法)
2026年5月16日 08:30
斯莱德男装品牌倒闭了(jj,马华,esprit,斯莱德,zara,美邦,这几个品牌如何评价)
2026年7月10日 12:30
covered interest rate parity(Interest Rate Parity代表什么)
2026年2月19日 06:00
特斯拉model3百公里加速(model3百公里加速是多少)
2026年1月18日 10:00
php执行mysql语句(php连接mysql数据库,执行查询语句后,排序后再输出)
2025年11月5日 18:30












