首先将在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>
密 码:
<html:password property="password" />
<html:errors property="password" />
<br>
<br>
<html:submit value="登录" />
<html:cancel value="取消" />
</html:form>
</center>
</body>
</html>
另外在写两个页面分别命名为shows.jsp和failed.jsp就可以测试了。
分享到:
相关推荐
总之,“菜鸟写的一个简单登录”项目,虽然可能在技术上并不复杂,但对于初学者来说,它是理解和实践软件开发流程、基础UI设计和用户认证机制的理想练习。通过这样的实践,新手程序员可以逐渐提升技能,最终能够创建...
"一个简单登录项目11111111111" 这个标题表明我们讨论的是一个基础级别的Web应用程序,重点在于用户登录功能的实现。"11111111111"可能是对项目编号或者版本号的补充,但在这里我们主要关注的是“简单登录项目”这一...
标题中的"struts+spring+hibenate做的一个简单登录"指的是使用这三个框架构建了一个基础的用户登录功能。在这个功能中,Struts负责处理HTTP请求并转发到相应的业务逻辑,Spring则管理应用的组件,包括Struts的动作类...
这个名为"一个简单登录的DEMO.zip"的压缩包文件是一个Android源码示例,适合初学者进行代码学习,特别是对于那些正在进行毕业设计或者想要深入理解JAVA ANDROID开发的同学。DEMO通常包含了一个完整的、可运行的小...
标题 "一个简单登录的DEMO (2).zip" 暗示了这是一个关于编程的示例项目,可能涉及用户登录功能的实现。这个DEMO可能是用Java语言编写的,因为通常在Android应用开发中,Java是常用的编程语言,而"JavaApk"这一名称也...
这个"Android一个简单登录的DEMO源码"提供了一个基础的示例,帮助我们了解如何在Android应用程序中实现用户登录功能。让我们详细解析一下这个DEMO中可能包含的关键知识点。 1. **布局设计**: - 使用XML布局文件...
这个"安卓开发-一个简单登录的DEMO.zip"文件很可能是包含了一个示例项目,演示了如何在Android平台上构建一个用户登录的功能。下面将详细介绍这个DEMO中可能包含的知识点。 1. **Android Studio**: 首先,你需要有...
这个"Android代码-一个简单登录的DEMO.rar"压缩包提供了一个基础的登录功能示例,适用于学习Android应用的基础架构和用户界面设计。我们将深入探讨这个DEMO中的关键知识点。 首先,我们有"JavaApk源码说明.txt",这...
这个"Android应用源码之一个简单登录的DEMO.zip"包含了实现这一功能的基本步骤和关键组件。下面我们将详细探讨这个DEMO中涉及的Android知识点。 1. **基本布局设计**: - 使用XML布局文件(如activity_login.xml)...
这个"Android高级应用源码-一个简单登录的DEMO.zip"提供了一个很好的学习资源,帮助开发者深入理解Android应用的构建过程,特别是用户界面(UI)设计和数据验证。下面我们将详细探讨这个DEMO中的关键知识点。 1. **...
"安卓Andriod源码——一个简单登录的DEMO.zip" 这个标题表明我们有一个关于Android操作系统的源代码示例,它是一个简单的登录界面的实现。DEMO通常指的是演示或示例项目,用于教学或理解特定功能的实现方式。这个ZIP...
这个"安卓Android源码——一个简单登录的DEMO.zip"包含了实现这一功能的基本步骤和代码结构。通过分析和理解这个DEMO,我们可以深入掌握Android应用开发的基础知识。 首先,让我们来看看登录界面的UI设计。在...
这个"Android参考源码-一个简单登录的DEMO.zip"文件提供了一个很好的学习资源,帮助开发者了解如何在Android平台上实现用户登录的功能。下面我们将详细解析这个DEMO中的关键知识点。 1. **布局设计**: 在Android...
总之,这个"Android应用源码之一个简单登录的DEMO"提供了一个基础的Android登录系统实现,对于学习Android开发和进行毕业设计的学生来说,这是一个很好的起点。通过深入理解和扩展这个DEMO,不仅可以掌握Android应用...
一个简单登录的DEMO
Android一个简单登录的DEMO.zip