`
qj200040
  • 浏览: 38590 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

一个简单的登陆

阅读更多

首先将在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就可以测试了。
0
0
分享到:
评论

相关推荐

    菜鸟写的一个简单登录

    总之,“菜鸟写的一个简单登录”项目,虽然可能在技术上并不复杂,但对于初学者来说,它是理解和实践软件开发流程、基础UI设计和用户认证机制的理想练习。通过这样的实践,新手程序员可以逐渐提升技能,最终能够创建...

    一个简单登录项目11111111111

    "一个简单登录项目11111111111" 这个标题表明我们讨论的是一个基础级别的Web应用程序,重点在于用户登录功能的实现。"11111111111"可能是对项目编号或者版本号的补充,但在这里我们主要关注的是“简单登录项目”这一...

    struts+spring+hibenate做的一个简单登录

    标题中的"struts+spring+hibenate做的一个简单登录"指的是使用这三个框架构建了一个基础的用户登录功能。在这个功能中,Struts负责处理HTTP请求并转发到相应的业务逻辑,Spring则管理应用的组件,包括Struts的动作类...

    一个简单登录的DEMO.zip

    这个名为"一个简单登录的DEMO.zip"的压缩包文件是一个Android源码示例,适合初学者进行代码学习,特别是对于那些正在进行毕业设计或者想要深入理解JAVA ANDROID开发的同学。DEMO通常包含了一个完整的、可运行的小...

    一个简单登录的DEMO (2).zip

    标题 "一个简单登录的DEMO (2).zip" 暗示了这是一个关于编程的示例项目,可能涉及用户登录功能的实现。这个DEMO可能是用Java语言编写的,因为通常在Android应用开发中,Java是常用的编程语言,而"JavaApk"这一名称也...

    Android 一个简单登录的DEMO源码.rar

    这个"Android一个简单登录的DEMO源码"提供了一个基础的示例,帮助我们了解如何在Android应用程序中实现用户登录功能。让我们详细解析一下这个DEMO中可能包含的关键知识点。 1. **布局设计**: - 使用XML布局文件...

    安卓开发-一个简单登录的DEMO.zip

    这个"安卓开发-一个简单登录的DEMO.zip"文件很可能是包含了一个示例项目,演示了如何在Android平台上构建一个用户登录的功能。下面将详细介绍这个DEMO中可能包含的知识点。 1. **Android Studio**: 首先,你需要有...

    Android代码-一个简单登录的DEMO.rar

    这个"Android代码-一个简单登录的DEMO.rar"压缩包提供了一个基础的登录功能示例,适用于学习Android应用的基础架构和用户界面设计。我们将深入探讨这个DEMO中的关键知识点。 首先,我们有"JavaApk源码说明.txt",这...

    Android应用源码之一个简单登录的DEMO.zip

    这个"Android应用源码之一个简单登录的DEMO.zip"包含了实现这一功能的基本步骤和关键组件。下面我们将详细探讨这个DEMO中涉及的Android知识点。 1. **基本布局设计**: - 使用XML布局文件(如activity_login.xml)...

    Android高级应用源码-一个简单登录的DEMO.zip

    这个"Android高级应用源码-一个简单登录的DEMO.zip"提供了一个很好的学习资源,帮助开发者深入理解Android应用的构建过程,特别是用户界面(UI)设计和数据验证。下面我们将详细探讨这个DEMO中的关键知识点。 1. **...

    安卓Andriod源码——一个简单登录的DEMO.zip

    "安卓Andriod源码——一个简单登录的DEMO.zip" 这个标题表明我们有一个关于Android操作系统的源代码示例,它是一个简单的登录界面的实现。DEMO通常指的是演示或示例项目,用于教学或理解特定功能的实现方式。这个ZIP...

    安卓Android源码——一个简单登录的DEMO.zip

    这个"安卓Android源码——一个简单登录的DEMO.zip"包含了实现这一功能的基本步骤和代码结构。通过分析和理解这个DEMO,我们可以深入掌握Android应用开发的基础知识。 首先,让我们来看看登录界面的UI设计。在...

    Android参考源码-一个简单登录的DEMO.zip

    这个"Android参考源码-一个简单登录的DEMO.zip"文件提供了一个很好的学习资源,帮助开发者了解如何在Android平台上实现用户登录的功能。下面我们将详细解析这个DEMO中的关键知识点。 1. **布局设计**: 在Android...

    Android应用源码之一个简单登录的DEMO-IT计算机-毕业设计.zip

    总之,这个"Android应用源码之一个简单登录的DEMO"提供了一个基础的Android登录系统实现,对于学习Android开发和进行毕业设计的学生来说,这是一个很好的起点。通过深入理解和扩展这个DEMO,不仅可以掌握Android应用...

    一个简单登录的DEMO

    一个简单登录的DEMO

    Android一个简单登录的DEMO.zip

    Android一个简单登录的DEMO.zip

Global site tag (gtag.js) - Google Analytics