如题,运行环境是oracle数据库(虚拟机中),今天换了mysql数据库(同机器)之后 测试是通过的,没用报错。
项目介绍:hibernate +struts框架 开发工具是myeclipes9.0;目前是在用户登录认证的过程里面,需要用户输入ID或者用户名+密码。进行登录验证。
遇到情况“: 为了可以让用户随意输入ID或者用户名,采取了如下优化,如果用户输入的是非数字,进设置用户名,如果输入是数字,则设置用户名跟ID均为其值,在hql语句中两者只需要是or的关系即可成立,而且设置的值亦可是null;
在loginAction中代码如下:
Users user = new Users();
String userid = loginForm.getUserid();
user.setPassword(loginForm.getPassword())
;user.setUsername(userid);//检验用户输入是否为数字,如果是数字在可认为是用户ID
try {
int i = Integer.parseInt(userid);
user.setUserid(i);
} catch (NumberFormatException e) {}
UserServiceInter userServiceInter=new UserService();
user=userServiceInter.checkUser(user);
在UserService中如下代码
//此处特别说明。如果传入的是非中文可以通过,中文无法通过,待解
//String hql="from Users where (username=? or userid=?) and password=?";
//String parameters[]={user.getUsername() ,user.getUserid()+"" ,MyTools.MD5(user.getPassword())};
String hql="from Users where username=? and password=?";
String parameters[]={user.getUsername(),MyTools.MD5(user.getPassword())};
经过测试,如果输入的用户名是英文或者数字的时候可以顺利通过,如果输入的用户名是汉字则抛出java.lang.RuntimeException: could not execute queryat com.lw.utils.HibernateUtil.UniqueExcute(HibernateUtil.java:47)at com.lw.service.imp.UserService.checkUser(UserService.java:19)at com.lw.struts.action.LoginAction.login(LoginAction.java:46)异常。
有点费解,是BUG?还是某处编码出错,已经加了过滤器了,而且在此处读取到的用户名没用乱码是正常的。诸位有没解决方案,新手啊,郁闷死了。Java hibernatestruts
项目介绍:hibernate +struts框架 开发工具是myeclipes9.0;目前是在用户登录认证的过程里面,需要用户输入ID或者用户名+密码。进行登录验证。
遇到情况“: 为了可以让用户随意输入ID或者用户名,采取了如下优化,如果用户输入的是非数字,进设置用户名,如果输入是数字,则设置用户名跟ID均为其值,在hql语句中两者只需要是or的关系即可成立,而且设置的值亦可是null;
在loginAction中代码如下:
Users user = new Users();
String userid = loginForm.getUserid();
user.setPassword(loginForm.getPassword())
;user.setUsername(userid);//检验用户输入是否为数字,如果是数字在可认为是用户ID
try {
int i = Integer.parseInt(userid);
user.setUserid(i);
} catch (NumberFormatException e) {}
UserServiceInter userServiceInter=new UserService();
user=userServiceInter.checkUser(user);
在UserService中如下代码
//此处特别说明。如果传入的是非中文可以通过,中文无法通过,待解
//String hql="from Users where (username=? or userid=?) and password=?";
//String parameters[]={user.getUsername() ,user.getUserid()+"" ,MyTools.MD5(user.getPassword())};
String hql="from Users where username=? and password=?";
String parameters[]={user.getUsername(),MyTools.MD5(user.getPassword())};
经过测试,如果输入的用户名是英文或者数字的时候可以顺利通过,如果输入的用户名是汉字则抛出java.lang.RuntimeException: could not execute queryat com.lw.utils.HibernateUtil.UniqueExcute(HibernateUtil.java:47)at com.lw.service.imp.UserService.checkUser(UserService.java:19)at com.lw.struts.action.LoginAction.login(LoginAction.java:46)异常。
有点费解,是BUG?还是某处编码出错,已经加了过滤器了,而且在此处读取到的用户名没用乱码是正常的。诸位有没解决方案,新手啊,郁闷死了。Java hibernatestruts
解决方案 »
- 做一个已有网站的WAP版,有什么解决方案没?
- 程序运行时好时坏 经常性地报如下错误
- struts2标签 validation验证
- 如何实现google日程管理效果?有无类似开源框架?提供思路也行?
- iframe中word文档保存问题
- 又是Struts页面显示乱码,急!
- 想出来了但不对,哎,还是得请教高手!!!帮帮我吧!!!!
- 如何知道叶面使用的mms 的url 呢? 互联星空里面的电影 只能在线看
- jsp上传文件如何保持文件大小不变
- 怎么实现自定义标记,使得能在web上通过“标记名.方法名”以及“标记名.属性名”操作标记?
- 请问怎么在JSP中做一个下拉列表
- TOMCAT部署的时候控制台发生的错误
sorry,看错异常了,异常只是说不能执行这句hql
建议拿其他允许包含中文信息的字段试一下,如果是中文的问题导致不能执行,任何字段都是同样的结果。
确定是这个问题后就可以确定是字符编码的问题。