Struts+Hibernate的登录验证

系统的总览:


      创建hibernate+struts的工程,首先创立domain,util,service包,然后通过DBbrower进行hibernate的你想建立映射的表文件,其次是找到web-inf下的struts-config文件来进行配置,新增jsp,form,action等文件,然后就是通过图对jsp页面的补充,和Action、Form的填写,注意在Hibernate的一些查询等操作都是对表单操作而不是对数据库进行的(并且字母的大小写是敏感的),有个关于Session和getCurrentSession的工具类(blog),service包是进行对数据的检查等操作。



工具类Util:(获得Session和同线程getCurrentSession)


package com.dqd.util;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import com.dqd.domain.*;

final public class HibernateUtil {
	private static SessionFactory sf = null;
	private static ThreadLocal<Session> tl = new ThreadLocal<Session>();
	private static ServiceRegistry sr= null;
	private static Configuration con =null;
	
	private HibernateUtil(){}
	static{
		con = new Configuration().configure();
		sr = new ServiceRegistryBuilder().applySettings(con.getProperties()).buildServiceRegistry();
		sf = con.buildSessionFactory(sr);
	}
	//获得全新的Session
	public static Session openSession(){
		return sf.openSession();
	}
	//获得和线程相关的Session
	public static Session getCurrentSession(){
		Session session = tl.get();
		if(session==null){
			session = sf.openSession();
			tl.set(session);
		}
		return session;
	}
	public static List excuteQuery(String hql){
		Session session = null;
		//因为动作会频繁的发生所以使用事物
		Transaction ts = null;
		List list = null;
		try{
			session = HibernateUtil.getCurrentSession();
			ts = session.beginTransaction();
			list = session.createQuery(hql).list();
			ts.commit();
		}catch(Exception e){
			if(ts!=null){
				ts.rollback();
			}
			e.printStackTrace();
		}finally{
			if(session != null && session.isOpen()){
				session.close();
			}
		}
		return list;
	} 
}

service验证类:

package com.dqd.service;

import java.util.List;

import com.dqd.domain.Users;
import com.dqd.util.HibernateUtil;

public class userService {
	public Users check(Users users){
		String hql = "from Users where uname= '"+users.getUname()
				+"' and upasswd = '" + users.getUpasswd()+"'";
		List<Users> list = HibernateUtil.excuteQuery(hql);
		if(list!=null&&list.size()==1){
			return list.get(0);
		}else{
			return null;
		}
	}
}	


logionAction类:


/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.dqd.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.dqd.domain.Users;
import com.dqd.service.userService;
import com.dqd.struts.form.UserForm;

/** 
 * MyEclipse Struts
 * Creation date: 10-04-2016
 * 
 * XDoclet definition:
 * @struts.action path="/login" name="userForm" parameter="flag" scope="request"
 */
public class LoginAction extends DispatchAction {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
		Users users = new Users();
		users.setUname(userForm.getUname());
		users.setUpasswd(userForm.getUpasswd());
		userService us = new userService();
		users = us.check(users);
		if(users!=null){
			request.getSession().setAttribute("userInfo", users);
			return mapping.findForward("loginok");
		}else{
			return mapping.findForward("loginerr");
		}
	}
}



以上是在分派LoginAction进行的检验(loginAction调用service,service进行组合hql语句,HibernateUtil工具类对hql语句进行处理)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值