struts struts2hibernate项目整合中与数据库连接,写一个用户登录功能

实现的功能,在登陆页面输入Username和PassWord后,将username和password通过Hibernate匹对数据库是否含有一样的username和password,若有则登陆进去,若没有则返回到登陆页面
&%@ page language="java" contentType="text/ charset=GB18030"
pageEncoding="GB18030"%&
&%@taglib prefix="s" uri="/struts-tags"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
&meta http-equiv="Content-Type" content="text/ charset=GB18030"&
&title&Insert title here&/title&
&form action="userlogin"&
用户名:&input type="text" name="username"&&br/&
密码:&input type="password" name="password"&&br/&
&input type="submit" value="submit"&
&input type="reset" value="reset"&
package com.zs.
public class User {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public Short getSex() {
public void setSex(Short sex) {
this.sex =
public String getEmail() {
public void setEmail(String email) {
this.email =
public String getAddress() {
public void setAddress(String address) {
this.address =
public String getGrade() {
public void setGrade(String grade) {
this.grade =
User.hbm.xml:
&?xml version="1.0"?&
&!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&
&!-- Generated
14:51:48 by Hibernate Tools 3.4.0.CR1 --&
&hibernate-mapping&
&class name="com.zs.model.User" table="USER"&
&id name="username" type="java.lang.String"&
&column name="USERNAME" /&
&generator class="assigned" /&
&property name="password" type="java.lang.String"&
&column name="PASSWORD" /&
&/property&
&property name="sex" type="java.lang.Short"&
&column name="SEX" /&
&/property&
&property name="email" type="java.lang.String"&
&column name="EMAIL" /&
&/property&
&property name="address" type="java.lang.String"&
&column name="ADDRESS" /&
&/property&
&property name="grade" type="java.lang.String"&
&column name="GRADE" /&
&/property&
&/hibernate-mapping&
Hibernate:
配置hibernate.hbm.xml:
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&
&hibernate-configuration&
&session-factory&
&!--连接数据库的配置--&
&property name="connection.username"&root&/property&
&property name="connection.password"&root&/property&
&property name="connection.driver_class"&com.mysql.jdbc.Driver&/property&
&property name="connection.url"&jdbc:mysql:///hibernate&/property&
&property name="hibernate.dialect"&org.hibernate.dialect.MySQL5InnoDBDialect&/property&
&property name="show_sql"&true&/property&
&property name="hibernate.format_sql"&true&/property&
&property name="hibernate.hbm2ddl.auto"&update&/property&
&!--数据库映射Java用户--&
&mapping resource="com/zs/model/User.hbm.xml" /&
&/session-factory&
&/hibernate-configuration&
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"&
&package name="default" extends="struts-default"&
&!--登陆主页面时候的Action--&
&action name="index"&
&result&/index.jsp&/result&
&!--在index.jsp提交submit后若登陆成功则转到adminlogin,否则转到index--&
&action name="userlogin" class="com.zs.web.admin.AdminLoginAction"&
&result name="success"&/admin/adminlogin.jsp&/result&
&result name="input"&/index.jsp&/result&
&/package&
package com.zs.web.
import java.util.M
import org.apache.struts2.interceptor.SessionA
import com.opensymphony.xwork2.ActionS
import com.zs.dao.UserD
import com.zs.dao.impl.UserDaoI
import com.zs.model.U
public class AdminLoginAction extends ActionSupport implements SessionAware {
private static final long serialVersionUID = 1L;
UserDao dao = new UserDaoImpl();
private Map&String,Object&
public String execute(){
User user = dao.isValidAdmin(username, password);//将username和password传递到dao层交个hibernate判断
if(user!=null){
session.put("user", user);//若登陆成功则将该user记录在session中
return SUCCESS;
addActionError("你没有管理权限");
return INPUT;
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public Map getSession() {
public void setSession(Map session) {
this.session =
判断用户和密码是否存在于数据库中
package com.zs.dao.
import java.util.L
import com.zs.dao.BaseDaoI
import com.zs.dao.UserD
import com.zs.model.U
public class UserDaoImpl extends BaseDaoImpl implements UserDao {
public void saveUser(User user) {
// TODO Auto-generated method stub
public List&User& getAll(Class clazz) {
// TODO Auto-generated method stub
return null;
public User isValidUser(String username, String password) {
// TODO Auto-generated method stub
return null;
//判断数据库中时候含有该用户
public User isValidAdmin(String username, String password) {
User user = null;
//调用hibernate
List&User& list =super.search("FROM User WHERE grade='admin' AND username ='"+username+"' AND password = '"+password+"'");
if(list!=null && list.size()&0){//若找到的list不为空那么则说明数据库中包含这个人
user = list.get(0);
Hibernate初始化借口并且从数据库中取数据
package com.zs.
import java.util.L
import org.hibernate.Q
import org.hibernate.S
import org.hibernate.SessionF
import org.hibernate.T
import org.hibernate.cfg.C
import org.hibernate.service.ServiceR
import org.hibernate.service.ServiceRegistryB
public class BaseDaoImpl implements IBaseDao {
SessionFactory sessionF
//初始session接口
public void init(){
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
session = sessionFactory.openSession();
transaction = session.beginTransaction();
public Session getSession() {
public void closeSession() {
session.close();
public List search(String hql) {
//调用session接口
Session session = null;
session = getSession();
List alist = null;
alist = session.createQuery(hql).list();//从数据库中查询
session.close();
可以先建好一个名为User的数据库,设置一个用户,然后便可以测试了
完整代码可以在我github下载:
阅读(...) 评论()谁有struts1 hibernate spring连接SqlServer数据库实现用户登录和增删改查功能的例子呀,急需!_百度知道& & &所用技术:struts2 ,hibernate,jsp,mysql& & 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰的看出整个项目工程的数据流向和设计思想,是新手对于整合struts2和hibernate的最好的例子。& & 现将整合思想,过程,代码整理如下,如果新手看了还是有不明白或者需要源码,本人乐意效劳和分享源码。& & JSP作为视图层V,显示登录,登录成功,失败页面;Struts2作为控制层C处理页面跳转;Hibernate用作数据模型M,它与前台程序的接口以DAO形式提供。& & 一.数据库设计:& & 1.创建数据库test&表名为:user& & id&int&not null 自增& & username&varchar(11) not null& & password&varchar(11 not null)& & 二.M层开发:& & 2.Hibernate基本配置:& & 为Web项目添加Hibernate的相关jar包,hibernate.cfg.xml,并应用右击项目文件,myeclise,add hibernate &将建立sessionfacotry.这样就不用再自己去写了,实现了高效开发。下为hibernate.cfg.xml:& & 复制代码& & & & & & & & & & root& & jdbc:mysql:///test& & org.hibernate.dialect.MySQLDialect& & 123456& & org.gjt.mm.mysql.Driver& & & & true& & & & & & & & 复制代码& & 3.生成POJO(Plain Old Java Object,简单的Java对象,通常也称为VO[ Value&Object ]对象,值对象)对象类 ,POJO是一种特殊的Java类,其中有一些属性及其对应的getter/setter方法,不允许有业务方法。将User.hbm.xml配置文件一定要放在和User实体bean相同的文件目录下。(附User.hbm.xml代码)& & 复制代码& & & & & & & & & & & & 用户名:& & 密码:& & & & & & & & & & 复制代码& & 复制代码& & & & & & <%& & String path = request.getContextPath();& & String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";& & %>& & & & & & & & ,您好!欢迎光临RED&S HOME.& & & & & & 复制代码& & 复制代码& & & & <%& & String path = request.getContextPath();& & String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";& & %>& & & & & & & & 登录失败! & & & &
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益同一用户不能同时登录,怎么实现(struts2框架)-java-电脑编程网同一用户不能同时登录,怎么实现(struts2框架)作者:luck3359 和相关&&我在LoginAction中是这样写的:Java code
package cn.nit.
import .util.ArrayL
import .util.M
import javax.servlet.http.HttpServletR
import org..struts2.ServletActionC
import org.hibernate.Q
import org.hibernate.S
import org.hibernate.T
import cn.nit.hibernate.U
import cn.nit.hibernateUtils.HibernateU
import cn.nit.management.UserL
import com.opensymphony.xwork2.ActionC
import com.opensymphony.xwork2.ActionS
/**
* 教师,管理员登录
* @author Administrator
*/
public class LoginAction extends ActionSupport{
* 采用模型驱动方式
UserLogin userLogin = new UserLogin();
public UserLogin getUserLogin() {
return userL
public void setUserLogin(UserLogin userLogin) {
this.userLogin = userL
public String execute(){
ActionContext actionContext = ActionContext.getContext();
Map userSession = actionContext.getSession();//获得session
Map applicationMap = actionContext.getApplication();
HttpServletRequest request = ServletActionContext.getRequest();//获得request对象
String sessionID = request.getSession().getId();//获得sessionID
String username = userLogin.getUsername();
String password = userLogin.getPassword();
applicationMap.put(username, sessionID);//K与V类型,每个用户对应一个sessionID
userSession.put(&username&, username);//将用户添加到session中
System.out.println(&得到的验证码& + userSession.get(&rand&));
System.out.println(&用户名& + username);
System.out.println(&密码& + 11);
System.out.println(&验证码& + userLogin.getValidate());
Session session = HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
String sql = & select u from Users as u where u.userNo= '& + username +&'&;
Query query = session.createQuery(sql);
ArrayList userList = (ArrayList)query.list();
tx.commit();
HibernateUtils.close(session);
Users user = new Users();
if(!userSession.get(&rand&).equals(userLogin.getValidate())){
return &error&;
}else if((userList !=null) && (userList.size()&0)){
user = (Users) userList.get(0);
System.out.println(&对应表的用户名:& + user.getUserNo());
System.out.println(&对应表的密码:& + user.getUserPwd());
if((user.getUserPwd().trim()).equals(password)){
//用户名密码正确,判断用户的角色,现在只是简单的处理
if(user.getUserRole().equals(&1&)){
System.out.println(&你是管理员&);
return &admin&;
System.out.println(&你是教师&);
return &teacher&;
return &error&;
return &error&;
可是感觉就不对,因为每个用户请求过来的时候,都会去执行execute()方法,那么applicationMap每次都是空,不可能实现我想要的功能。那要怎么写?我现在都糊涂了。------回答---------------其他回答(5分)---------真是项目不能存放在session中, 一般都会有一张表专门管理在线用户& 然后还写一个管理类,定时去检查用户是不是在线,多长时间没有操作将自动清除------其他回答(5分)---------代码比较多,要发好几个类,我把思路说一下吧!1.
实现 HttpSessionListener,HttpSessionBindingListener2.
private static
Map&String,HttpSession& onLineUsers = new LinkedHashMap&String, HttpSession& ();& //这里是static的,并且放的是session,登录以后有的session3. web.xml配置Listener,你先写吧!不要用表什么的,那是很烦,而且不准确。就管理session就可以了------其他回答(5分)---------Java code
* @author blliy117
*/
public class OnLineLoginUser implements HttpSessionListener,HttpSessionBindingListener {
private static
Map&String,HttpSession& onLineUsers = new LinkedHashMap&String, HttpSession& ();
public void sessionCreated(HttpSessionEvent se) {
public void sessionDestroyed(HttpSessionEvent se) {
public void valueBound(HttpSessionBindingEvent event) {
public void valueUnbound(HttpSessionBindingEvent event) {
public static void addUser(Object obj){
public static void removeUser(Object obj){
public static List getUsers(){
List userList = new ArrayList();
for(String userName : onLineUsers.keySet()){
HttpSession session = onLineUsers.get(userName);
if(session!=null && session.getAttribute(&user&)!=null){
userList.add(session.getAttribute(&user&));
return userL
写起来比较多,你自己实现一下吧------其他回答(5分)---------线程模式:  ◆Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。  ◆Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)& ---------------------Struts2 新特性-------------------------------------------------------------你可以在Struts2里设置属于自己用户的变量啊 ------其他回答(5分)---------引用 29 楼 luck3359 的回复:引用 28 楼 lndalian2000 的回复:为什么存SessionID呢?用户ID没有?也许我很菜。这是我一开始的想法,就是把用户产生的sessionID来判断用户是否已经登录了。结果已失败而告终。sesseion.getattribute(&username&);可以获得user的名称 ID之类的信息的嘛,这个东西把所有的session用map管理人员少的话还是可以的 如果像游戏那种一下100W+的用户登陆那就~。存没什么不好的 出错的几率也小啊
在application启动的时候 设置所有的登录状态为未登录 防止出错后用户永远不能登陆------其他回答(5分)---------你现在用的userSession 是从actionContext.getSession()中获得,只要你不停服务,哪怕每次执行execute()方法,userSession也不会为空,所以你只要userSession.put(&userName&,userName)存进去便可,你的userSession.put() 和applicationSession.put 写错位置了,应该要登陆后才能put,登陆成功后,再执行execute()可直接 userSession.containsKey(userName)相关资料:|||||||同一用户不能同时登录,怎么实现(struts2框架)来源网络,如有侵权请告知,即处理!编程Tags:                &                    君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
使用struts2和hibernate完成一个用户注册程序
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 struts2hibernate项目 的文章

 

随机推荐