一个简单的登陆


首先将在mysql中建立一张表,只有username password,role三个字段。
然后将将框架搭建好。我这里用的是struts1.2 spring2.0 hibernate3.2.。。

user的DAO接口:
package com.jack.model.dao;

import java.util.List;
import com.jack.model.domain.UserInfo;
/**
 * 
 * @author qinjie
 * @prject_name  login
 * @create_time 2010-03-08
 *
 */
public interface IUserInfoDAO {
	public UserInfo findById(java.lang.String id);
	public List findByUsername(Object username);

}







user的DAO实现类

package com.jack.model.dao.impl;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.jack.model.dao.IUserInfoDAO;
import com.jack.model.domain.UserInfo;



public class UserInfoDAO extends HibernateDaoSupport implements IUserInfoDAO {
	private static final Log log = LogFactory.getLog(UserInfoDAO.class);
	// property constants
	public static final String PASSWORD = "password";
	public static final String ROLE = "role";
	public static final String USERNAME = "username";

	protected void initDao() {
		// do nothing
	}

	public UserInfo findById(java.lang.String id) {
		log.debug("getting UserInfo instance with id: " + id);
		try {
			UserInfo instance = (UserInfo) getHibernateTemplate().get(
					"com.jack.model.domain.UserInfo", id);
			return instance;
		} catch (RuntimeException re) {
			log.error("get failed", re);
			throw re;
		}
	}

	public List findByProperty(String propertyName, Object value) {
		log.debug("finding UserInfo instance with property: " + propertyName
				+ ", value: " + value);
		try {
			String queryString = "from UserInfo as model where model."
					+ propertyName + "= ?";
			return getHibernateTemplate().find(queryString, value);
		} catch (RuntimeException re) {
			log.error("find by property name failed", re);
			throw re;
		}
	}

	public List findByUsername(Object username) {
		// TODO Auto-generated method stub
		return findByProperty(USERNAME, username);
	}

}


以下是user对应的一个实体类,也就是hibernate关系的那个实体。

package com.jack.model.domain;
/**
 * UserInfo entity.
 * @author qinjie
 */
public class UserInfo implements java.io.Serializable {
	// Fields
	private String username;
	private String password;
	private Integer role;
	// Constructors
	/** default constructor */
	public UserInfo() {
	}
	/** minimal constructor */
	public UserInfo(String username, String password) {
		this.username = username;
		this.password = password;
	}
	/** full constructor */
	public UserInfo(String username, String password, Integer role) {
		this.username = username;
		this.password = password;
		this.role = role;
	}
	// Property accessors
	public String getUsername() {
		return this.username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return this.password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Integer getRole() {
		return this.role;
	}
	public void setRole(Integer role) {
		this.role = role;
	}
}

接下,请看以下的是数据库对应和实体类的关系关联文件。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.jack.model.domain.UserInfo" table="user_info" >
        <id name="username" type="java.lang.String">
            <column name="username" length="30" />
            <generator class="assigned" />
        </id>
        <property name="password" type="java.lang.String">
            <column name="password" length="30" not-null="true" />
        </property>
        <property name="role" type="java.lang.Integer">
            <column name="role" />
        </property>
    </class>
</hibernate-mapping>



下来就是写服务接口和实现类型:
service接口....
package com.jack.model.service;

import com.jack.model.domain.UserInfo;

public interface IUserService {
	public UserInfo findByUsername(String name);
}



service实现类:
package com.jack.model.service.impl;

import com.jack.model.dao.IUserInfoDAO;
import com.jack.model.domain.UserInfo;
import com.jack.model.service.IUserService;

public class UserService implements IUserService{
	//ע��dao
	private IUserInfoDAO userInfoDAO;
	public UserInfo findByUsername(String name) {
		// TODO Auto-generated method stub
		if (userInfoDAO.findByUsername(name).isEmpty()) {
			return null;//���ؿ�ֵ
		} else {
			return (UserInfo)userInfoDAO.findByUsername(name).get(0);
		}
	}
	
	public void setUserInfoDAO(IUserInfoDAO userInfoDAO) {
		this.userInfoDAO = userInfoDAO;
	}
	
}


Action类如下:
package com.jack.view.action;

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

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


import com.jack.model.domain.UserInfo;
import com.jack.model.service.IUserService;
import com.jack.view.form.LoginForm;

public class LoginAction extends Action{
	private IUserService userService;
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response){
		LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
		HttpSession session = request.getSession();
		UserInfo user =(UserInfo)userService.findByUsername(loginForm.getUsername());
		if(user!= null && (user.getPassword()).equals(loginForm.getPassword())){
			session.setAttribute("ww", user.getUsername());
			if(user.getRole().equals(0))
			{
				return mapping.findForward("success1");
			}
			if(user.getRole().equals(1))
			{
				return mapping.findForward("success");
			}			
		}
		else{
			return mapping.findForward("fail");
		}
		return null;
	}
	
	public void setUserService(IUserService userService)
	{
		this.userService=userService;
	}
}



struts的formBean如下:
package com.jack.view.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class LoginForm extends ActionForm {

	private String username;
	private String password;

	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		return null;
	}
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

最后将配置文件写好,将他们之间的关系关联起来就可以跑了
applicationContext.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


	<bean id="sessionFactory"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
		<property name="username" value="root"></property>
	</bean>
	<bean id="mysession"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="sessionFactory" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/jack/model/domain/UserInfo.hbm.xml</value>
		</property></bean>
	<bean id="UserInfoDAO" class="com.jack.model.dao.impl.UserInfoDAO">
		<property name="sessionFactory">
			<ref bean="mysession" />
		</property>
	</bean>
		<bean id="UserService" class="com.jack.model.service.impl.UserService">
	<property name="userInfoDAO">
		<ref bean="UserInfoDAO"/>
	</property>
	</bean>
	<bean name="/login" class="com.jack.view.action.LoginAction">
	<property name="userService">
		<ref bean="UserService"/>
	</property>
	</bean>
         </beans>


一下是struts-config.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <data-sources />
    <form-beans >
    	<form-bean name="loginForm" type="com.jack.view.form.LoginForm"></form-bean>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings>
  <action      
      attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" 
      scope="request" type="org.springframework.web.struts.DelegatingActionProxy"
      validate="false" >
      <forward name="success" path="/shows.jsp" />
      <forward name="fail" path="/failed.jsp" />
      </action>
  </action-mappings>
  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>



最后写登陆页面
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
	<head>
		<title>welcome</title>
		<script type="text/javascript">
  	function checkForm(form)
  	{
  		//检查用户名和密码是否为空的一个功能函数
  		if(form.username.value=="")
  		{
  			alert("用户名不能为空");
  			form.username.focus();
  			return false;   
  		}
  		
  	    if(form.password.value=="")
  	    {
  	    	alert("密码不能为空");
  	     	form.password.focus();
  			return false;
  	    }
  		return true;
  	}
  
  	
  </script>
	</head>
	<body>
		<center>
			<html:form action="login.do" onsubmit="return checkForm(this);">
				<h1>
					<font color=#ff>欢迎登录在*****系统</font>
				</h1> 
			用户名:<html:text property="username"></html:text>
				<html:errors property="username" />
				<br>
				<br>			
			密&nbsp;&nbsp;码:
			  <html:password property="password" />
				<html:errors property="password" />
				<br>
				<br>
			<html:submit value="登录" />
			&nbsp;&nbsp;&nbsp;&nbsp;
			<html:cancel value="取消" />
			</html:form>

		</center>
	</body>
</html>


另外在写两个页面分别命名为shows.jsp和failed.jsp就可以测试了。

你可能感兴趣的:(java,DAO,apache,Hibernate,struts)