使用token标记防止表单重复提交后,怎么登录不能正常使用了?大家帮我看看这个问题,webwor框架的

gthboy 2009-04-07 10:46:53


如图,本来可以正常登录的,但测试token功能后就不能登录了。这个是网上一个教学视频的例子,那个讲师好像也没留意这个问题。这究竟怎么回事儿,该如何解决呢?谢谢大家先!

tomcat后台信息的部分内容:

[code=INIFile]
2009-4-7 10:11:18 org.apache.catalina.startup.Catalina start
信息: Server startup in 33875 ms
Hibernate: select user0_.userid as userid3_, user0_.username as username3_, user0_.password as password3_, user0_.sex as sex3_, user0_.age as age3_ from user user0_ where user0_.username=? and user0_.password=?
2009-4-7 10:11:50 com.opensymphony.webwork.views.freemarker.FreemarkerManager getInstance
信息: Instantiating Freemarker ConfigManager!, com.opensymphony.webwork.views.freemarker.FreemarkerManager
Hibernate: insert into user (username, password, sex, age) values (?, ?, ?, ?)
2009-4-7 10:12:31 com.opensymphony.webwork.util.TokenHelper validToken
警告: Form token KN9NIZEFHGGRJ2Q5EL6EJAK9EMX1YMMA does not match the session token null.
2009-4-7 10:12:40 com.opensymphony.xwork.DefaultActionInvocation executeResult
警告: No result defined for action org.thj.bookstore.action.UserAction and result input
[/code]

xwork.xml的部分内容:


<action name="register" class="userAction" method="register">
<result name="success">/register_success.jsp</result>
<result name="invalid.token">/repeaterror.jsp</result>
<interceptor-ref name="params"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
</action>
<action name="login" class="userAction">
<result name="success">/login_success.jsp</result>
<result name="error">/login.jsp</result>
</action>


UserAction.java的部分内容


public String execute() throws Exception {

User u = userService.validateUser(user.getUsername(),user.getPassword());
if(u != null){
Map session = ActionContext.getContext().getSession();
session.put("user",u);
return SUCCESS;
}

return ERROR;
}

public String register() throws Exception {

userService.saveUser(user);
return SUCCESS;
}


大家如果想看全部代码,可以去这里下载

http://d.99081.com/gthboy/book.rar

mysql数据库创建脚本

http://d.99081.com/gthboy/crebas.rar
...全文
457 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
viper211 2009-11-16
  • 打赏
  • 举报
回复
谢谢LZ啊。今天也是被这个整晕了。原来是这个单例的问题- -
second_dream 2009-05-14
  • 打赏
  • 举报
回复
今天看了一个SSH集成的视频,才明白从spring取得的对象默认是单实例的,applicationContext.xml里,userController这个bean,加上scope="prototype",问题就解决了。这属于action的线程安全问题。

我说各位阿,你们难道没有做过SSH集成或者webwork+spring的集成?我发的问题总是我自己解决,各位你们到底有没有认真看啊?!
gthboy 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lixi292 的回复:]
哥们,要把异常信息贴出来
[/Quote]

没有异常信息啊,如果你要看tomcat的后台,图片后面紧接着我就贴了后台信息了
西瓜 2009-05-13
  • 打赏
  • 举报
回复
哥们,要把异常信息贴出来
gthboy 2009-05-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 imasmallbird 的回复:]
引用 2 楼 gthboy 的回复:
为什么后来会产生input这个result呢?这是我不明白的地方

<interceptor-ref name="token"> </interceptor-ref>
由于你配置了这个拦截器,它用于验证你的表单的重复提交
如果验证出错默认会去找你在配置文件中的"input"的配置,找不到就会报错~~
[/Quote]

你们都没有看懂我所提问题的实质是什么

我并没有问为什么返回空白页面,我问的是本来可以正常登录,为什么他验证到重复提交注册后,登陆功能不能用了


如果各位仔细看那个gif图,就可以看明白,ah用户正常登录,然后注册新用户,注册成功后刷新,register这个action由于tocken的重复提交验证,页面被dispatcher到repeaterror.jsp,然后点击登陆链接,本来可以登陆的用户怎么会返回input呢?
imasmallbird 2009-05-09
  • 打赏
  • 举报
回复
http://www.opensymphony.com/webwork/wikidocs/WebWork.html
这个是webwork官网的用户文档,以后有问题可以在这里找一找
imasmallbird 2009-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gthboy 的回复:]
为什么后来会产生input这个result呢?这是我不明白的地方
[/Quote]
<interceptor-ref name="token"></interceptor-ref>
由于你配置了这个拦截器,它用于验证你的表单的重复提交
如果验证出错默认会去找你在配置文件中的"input"的配置,找不到就会报错~~
然月枕流君 2009-05-08
  • 打赏
  • 举报
回复
如果没有input指定,应该是跳到一个空白页中,就像struts中你没有配置mapping.findforward一样;
second_dream 2009-04-19
  • 打赏
  • 举报
回复
帮顶~~~
gthboy 2009-04-12
  • 打赏
  • 举报
回复
顶~~~~
gthboy 2009-04-10
  • 打赏
  • 举报
回复
顶阿~~~
gthboy 2009-04-09
  • 打赏
  • 举报
回复
为什么后来会产生input这个result呢?这是我不明白的地方
e332424234e 2009-04-07
  • 打赏
  • 举报
回复
警告: No result defined for action org.thj.bookstore.action.UserAction and result input

return input 没有配置

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧