`

Dwr2+Struts2+Spring2.5+Hibernate3完美整合--用户登录注册系统

阅读更多
  用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统。
  其中用Dwr去进行用户注册的用户是否存在的验证。
  全部业务控制交由Spring去进行处理。事务处理也交由Spring去管理。
  压缩文件中不包含Jar文件(由于全部的Jar将近12M,不能全部上传),所用到的Jar目录为,工程中再也不会出现由于MyEclipse自动整合而出现的大量Jar文件

//如果不用,启动时不会出错,但使用Dwr时,会抛出异常:java.lang.NoClassDefFoundError: antlr/ANTLRException
antlr-2.7.2.jar 

//如果不用此包,在启动时会抛出: nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
asm.jar

//如果不用此包,在启动时抛出:nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
aspectjweaver.jar

//如果不用此包,在启动时抛出:nested exception is java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter
cglib-2.1.3.jar

//如果不用此包,在启动时抛出:nested exception is java.lang.NoClassDefFoundError: org/apache/commons/collections/SequencedHashMap
commons-collections-3.1.jar

//这个似乎可以不用的
commons-fileupload-1.2.1.jar

//这个就不用说啦,几乎所有框架都要使用的
commons-logging-1.0.4.jar 

//如果不用此包会抛出:java.lang.NoClassDefFoundError: org/dom4j/DocumentException
dom4j-1.6.1.jar

//dwr必须
dwr.jar 


//不用此包,在启动时招聘:java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
jta.jar

//Mysql JDBC驱动
mysql-connector.jar

//Hibernate必须使用,注意此包是包含全部的。
hibernate3.jar

//Spring整体包
spring.jar            

//struts2必须               
freemarker-2.3.8.jar   
//struts2必须
ognl-2.6.11.jar       
//struts2核心包
struts2-core-2.0.11.2.jar
//struts2整合Spring插件  
struts2-spring-plugin-2.0.11.2.jar 
//struts2必须
xwork-2.0.5.jar 


  数据库设计(使用MySql数据库):
create table user
(
  id varchar(32) not null,
  userName varchar(20),
  password varchar(20),
  primary key(id)
);
create table user_infor
(
  id varchar(32) not null,
  user_id varchar(32),
  name varchar(20),
  email varchar(30),  
  sex char,
  age int,
  address varchar(300),
  primary key(id)
);
ALTER TABLE user_infor
    ADD FOREIGN KEY(user_id) 
    REFERENCES user(id)
    ON DELETE CASCADE;

由于没有包含全部的Jar文件,所以朋友需要把上面所述的Jar加载。
如果有需要Jar文件的朋友可以发邮件给我:jackzhangyunjie@163.com,我会把所有Jar文件发给大家。
也可以去我的网站下载:http://www.52cfml.com/post/usersystem.html
  • UserSystem.rar (35.8 KB)
  • 描述: 压缩文件中不包含Jar文件。
  • 下载次数: 5409
分享到:
评论
42 楼 tinren 2008-09-09  
记号,回家看看
41 楼 drinkjava 2008-09-09  
小提醒,如果不是从正常渠道下下来的jar包,都不可信,防止中毒
40 楼 haolx 2008-09-08  
楼主在吗? 我部署的怎么有错啊,能不能把你跑起来的 给我发一份啊? 谢啦!
363793673@qq.com
39 楼 Jinnywww 2008-09-08  
谢谢楼主分享经验
38 楼 itling 2008-09-08  
看来还得看清楚点 再发表评论
37 楼 thinkintime 2008-09-08  
igogo007 写道
你那dwr做的检测用户名是否存在也太慢了


关注你检测较快的做法?
36 楼 igogo007 2008-09-07  
你那dwr做的检测用户名是否存在也太慢了

35 楼 key232323 2008-09-07  
kakaluyi 写道
这个帖子也可以被投精华,误人子弟啊
楼主你登陆判断这个函数
public boolean findUserByUNameAndPwd(String userName,String password) throws RuntimeException{
boolean flag = false;
String hql = "select user from User as user where user.userName=? and user.password=?";
Query query = this.getSession().createQuery(hql);
query.setString(0, userName);
query.setString(1, password);
List list = query.list();
if(list.size()>0){
flag = true;
}
return flag;
}
这句,
String hql = "select user from User as user where user.userName=? and user.password=?";
问你一下如果我密码 password=任意值 or 1=1;这样都可以登陆成功,安全性太差了,这可是最基本的防sql攻击要注意的啊


预编译不是默认的防止sql注入的么????
hibernate的底层代码难道不是preparestatement?
34 楼 luckyhero 2008-09-06  
kakaluyi 写道
这个帖子也可以被投精华,误人子弟啊
楼主你登陆判断这个函数
public boolean findUserByUNameAndPwd(String userName,String password) throws RuntimeException{
boolean flag = false;
String hql = "select user from User as user where user.userName=? and user.password=?";
Query query = this.getSession().createQuery(hql);
query.setString(0, userName);
query.setString(1, password);
List list = query.list();
if(list.size()>0){
flag = true;
}
return flag;
}
这句,
String hql = "select user from User as user where user.userName=? and user.password=?";
问你一下如果我密码 password=任意值 or 1=1;这样都可以登陆成功,安全性太差了,这可是最基本的防sql攻击要注意的啊



这位兄弟,你提到的问题确实应该注意,不过好像发错位置了,呵呵,还需要仔细研究一下Hibernate or standard SQL。。。
33 楼 lizhaning 2008-09-05  
关于hql,楼主写法是正确的,不明白的可以去看下hibernate的参考
32 楼 cxh_javaeye 2008-09-05  
下下来看看
31 楼 hitemplar 2008-09-05  
不错,支持一下
30 楼 friendly888 2008-09-04  
thanks a lot!!!
29 楼 yusihan 2008-09-04  
kakaluyi 写道
这个帖子也可以被投精华,误人子弟啊
楼主你登陆判断这个函数
public boolean findUserByUNameAndPwd(String userName,String password) throws RuntimeException{
boolean flag = false;
String hql = "select user from User as user where user.userName=? and user.password=?";
Query query = this.getSession().createQuery(hql);
query.setString(0, userName);
query.setString(1, password);

List list = query.list();
if(list.size()>0){
flag = true;
}
return flag;
}
这句,
String hql = "select user from User as user where user.userName=? and user.password=?";
问你一下如果我密码 password=任意值 or 1=1;这样都可以登陆成功,安全性太差了,这可是最基本的防sql攻击要注意的啊


红色部分使用绑定变量进行数据库查询,即先生成sql语句至数据库缓存,所以后面跟任何字符都不会重新组合已经产生的sql语句,只会被当作变量来读取,因此不会产生注入,其实这也是防止sql注入最简单的方法了

另附容易产生sql注入的代码作为比较:
String hql = "select user from User as user where user.userName="+userName+" and user.password="+password;

28 楼 kakaluyi 2008-09-04  
这个我确实把hql当成sql来对待了,可能是没有必要
但你确定读过hibernate的sql占位符转换方式源码,确定这种方式不会被攻击吗,呵呵,jdbc时代这种语句偶是不敢写的
27 楼 jackzhangyunjie 2008-09-04  
回复kakaluyi,我不知道你是否运行我的例子,希望你先运行一下再发表评论。
26 楼 fish4j 2008-09-04  
那是hql,不会跟or 1=1 组成sql语句的
25 楼 zzm_fly2004 2008-09-04  
kakaluyi 写道
楼主在登陆的密码输入框输入
anypassword or 1=1,就可以登陆成功了,原理可以自己在数据库试试



试了,如果输入anypassword or 1=1,验证也没通过,登录不了。我觉得上面那个hql语句经HIBERNATE解释之后应该输出这样的sql原型:
select * from t_user t where t.name='输入框里面输入的帐号' and t.pwd='anypassword or 1=1';
除非数据库里面的这个人的密码真的是“anypassword or 1=1”,如果不是,那也验证不过吧。
哈哈,不知道这样说对不对。
24 楼 kakaluyi 2008-09-04  
楼主在登陆的密码输入框输入
anypassword or 1=1,就可以登陆成功了,原理可以自己在数据库试试
23 楼 zzm_fly2004 2008-09-04  
kakaluyi 写道
这个帖子也可以被投精华,误人子弟啊
楼主你登陆判断这个函数
public boolean findUserByUNameAndPwd(String userName,String password) throws RuntimeException{
boolean flag = false;
String hql = "select user from User as user where user.userName=? and user.password=?";
Query query = this.getSession().createQuery(hql);
query.setString(0, userName);
query.setString(1, password);
List list = query.list();
if(list.size()>0){
flag = true;
}
return flag;
}
这句,
String hql = "select user from User as user where user.userName=? and user.password=?";
问你一下如果我密码 password=任意值 or 1=1;这样都可以登陆成功,安全性太差了,这可是最基本的防sql攻击要注意的啊





呵呵,如果单纯的一个DEMO就没必要那么计较,相信楼主在实际项目中会注意到这问题.
而且尝试了一下,好像真的就这样写(password=任意值 or 1=1)密码,登录也不会成功,还请指教

相关推荐

    Dwr2+Struts2+Spring2.5+Hibernate3用户登录注册系统

    标题 "Dwr2+Struts2+Spring2.5+Hibernate3用户登录注册系统" 描述了一种基于经典Java EE技术栈的Web应用程序,用于实现用户登录和注册功能。这个系统利用了Direct Web Remoting 2 (DWR2)、Struts2、Spring 2.5和...

    Dwr2+Struts2+Spring2.5+Hibernate3实战——用户登录注册系统

    《Dwr2+Struts2+Spring2.5+Hibernate3实战——用户登录注册系统》这篇文章探讨了如何利用四个主流的Java开发框架构建一个用户登录注册系统。Dwr2、Struts2、Spring2.5和Hibernate3各自扮演着关键的角色,共同实现了...

    dwr2+struts2+spring2.5+hibernate3登陆网站

    标题 "dwr2+struts2+spring2.5+hibernate3登陆网站" 描述了一个基于四个关键技术和框架构建的登录系统。这四个技术是Direct Web Remoting 2 (DWR2),Struts2,Spring 2.5,以及Hibernate 3,它们在Web开发领域中都有...

    dwr2+struts2+spring2.5+hibernate3实例!

    【标题】"dwr2+struts2+spring2.5+hibernate3实例!"涉及的是四个关键的Java Web开发框架和技术的整合应用。这个实例教程是为那些希望学习如何将Direct Web Remoting 2 (DWR2)、Struts2、Spring 2.5和Hibernate 3...

    DWR+Struts+spring+hibernate的订货系统

    DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能

    Struts2+Hibernate3+Spring2.5整合详细步骤+实例可运行代码

    1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...

    struts1.2+hibernate3.2+spring2.5+dwr

    Struts1.2、Hibernate3.2、Spring2.5 和 DWR2.0 是一组经典的Java企业级开发框架组合,它们在Web应用程序开发中扮演着重要的角色。这些框架的集成为开发人员提供了强大的功能,使得后端数据管理、业务逻辑处理以及...

    用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统

    用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统。  其中用Dwr去进行用户注册的用户是否存在的验证。  全部业务控制交由Spring去进行处理。事务处理也...

    Struts2 + spring + hibernate + dwr 完美整合代码

    综合以上,本项目通过Struts2、Spring、Hibernate和DWR的整合,构建了一个具备用户注册、多级下拉联动和表格刷新功能的Web应用。这种整合不仅提高了开发效率,也提升了用户体验,展示了Java Web开发的强大能力。在...

    dwr2.0整合Struts1.3+hibernate3.1+spring2.5的项目

    标题 "dwr2.0整合Struts1.3+hibernate3.1+spring2.5的项目" 涉及的是一个经典的Java Web开发技术集成,这其中包括Direct Web Remoting (DWR) 2.0、Struts 1.3、Hibernate 3.1和Spring 2.5。这个项目可能是为了展示...

    struts2+hibernate+spring+dwr整合

    在"struts2+hibernate+spring+dwr整合"的项目中,这四个框架的协同工作通常如下: 1. Struts2 负责处理HTTP请求,解析用户的输入,根据配置决定执行哪个Action,Action完成后通过Result返回响应。 2. Spring 作为...

    Ajax(DWR) + Spring + Hibernate + Struts整合登陆注册

    在注册登录系统中,Struts负责接收用户的HTTP请求,调用相应的Action,处理业务逻辑,并将结果返回给视图层。 整合这四个框架的步骤通常包括: 1. 配置Spring:创建Spring配置文件,定义Bean,如SessionFactory...

    Dwr2+Struts2+Spring2+Hiberinate

    标题 "Dwr2+Struts2+Spring2+Hiberinate" 暗示了这是一个基于四个关键开源技术构建的Web应用程序示例。这个组合在几年前非常流行,用于开发高效、模块化的Java企业级应用。下面我们将深入探讨这些技术及其在用户管理...

    Spring 2.0 + Struts 1.2 + Hibernate 3.2 + DWR 2.0 的JavaEE应用示例

    该示例使用MyEclipse 5.5 IDE用来整合四个技术(Struts 1.2, Spring 2.0, Hibernate 3.2和Ajax技术)的轻量级的JavaEE。 操作步骤如下: 1. 下载并解压之后,使用MyEclipse导入工程 2. 找到demo目录中的.sql数据库...

    EXT + DWR + Struts + Hibernate + Spring Demo

    这个Demo可能展示了如何整合这些技术,实现一个完整的Web应用流程:用户在EXT构建的前端界面上进行操作,DWR处理前后端通信,Struts接收并处理请求,Hibernate处理数据存取,而所有这些都在Spring的管理和协调下完成...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar

    ssm整合开发,小程序毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)

    公文管理、申请审批、公告管理、会议管理、权限管理、个人办公、客户管理、人事等等。项目技术:Struts1.2 + Hibernate3.0 + Spring2 +DWR。java毕业设计 jsp毕业设计 ssh毕业设计

    spring3+struts2+hibernate3+dwr3+spring security3+ajax完整实例

    这是一个基于Java技术栈的Web应用实例,整合了Spring 3、Struts 2、Hibernate 3、Direct Web Remoting (DWR) 3、以及Spring Security 3,并且利用Ajax进行异步通信,实现了数据库配置的权限管理。下面将详细阐述这些...

    struts2+hibernate+spring+dwr(用户注册)

    Struts2、Hibernate、Spring 和 DWR 是四个在 Java Web 开发中广泛应用的框架和技术,它们结合在一起可以构建高效、可维护的用户注册系统。以下是对这些技术的详细解释及其在用户注册中的应用: 1. **Struts2**:这...

    DWR_Strut2_Hibernate3_Spring2.5 Demo

    【标题】"DWR_Strut2_Hibernate3_Spring2.5 Demo" 是一个整合了Direct Web Remoting (DWR), Struts2, Hibernate3 和 Spring2.5 的示例项目,展示了这些技术如何协同工作以实现高效且灵活的Web应用开发。 【描述】...

Global site tag (gtag.js) - Google Analytics