您的位置:首页 > 编程语言 > Java开发

SSH系列一:实现用户登录模块

2016-11-06 22:38 375 查看
一、简介:用户登录模块,用户输入用户名和密码,对其身份进行验证

二、简单思路和方法(基于Java ssh框架实现)

1、先在数据库中创建相应的表(我用的是MySQL数据库)

设计个Userinfo表,存放用户的用户名、登录密码和用户信息

create table userinfo
(
id                        int(11) primary key,
username                 varchar2(50) not null,
password                 varchar2(50) not null,
real_name               varchar2(10) not null,
birthday                 varchar2(40),
e_mail                   varchar2(40),
address                   varchar2(50)
);


2、用Myeclipse的hibernate生成Javabean:UserInfo.java和对应的配置文件UserInfo.hbm.xml文件(自带的逆向工具)(必须在同一个包下)

UserInfo.java代码

public class UserInfo {
private int id;
private String username;
private String password;
private String real_name;
private String birthday;
private String e_mail;
private String address;
//默认的构造方法
public UserInfo() {
}

// 方便测试用
public UserInfo(String username, String password, String real_name,String birthday,String e_mail,String address) {
this.username = username;
....
}
//省略成员变量的set和get方法
}


UserInfo.hbm.xml代码

<hibernate-mapping>
<class name="com.bean.UserInfo" table="userinfo">
<!--id 数据库主键-->
<id name="id" type="int" column="Id">
<generator class="native"/><!--native主键自增长-->
</id>

<property name="username" type="java.lang.String" column="username"/>
<property name="password" type="java.lang.String" column="password"/>
<!--其他属性省略-->
</class>

</hibernate-mapping>


3、创建UserInfoServiceDAO接口

public interface UserInfoServiceDAO {

public UserInfo loginUser(User user);//通过页面传值进行数据库验证
//这里的user只封装两个值,用户名和密码;user是封装了用户名和密码两个属性进行查询
public boolean updatePwd(UserInfo userInfo);//进行用户数据的更新
/*
*添加新用户,删除就用户等略,自行添加
*/
}


4、创建UserInfoServiceDAOImpl实现类

实现UserInfoServiceDAO的方法

public class UserInfoServiceDAOImpl implements UserInfoServiceDAO {

private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

// 查询数据库中是否有该用户 返回数据库查询的整条信息
@Override
public UserInfo loginUser(User user) {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Query query = session
.createQuery("from UserInfo as u where u.username='"
+ user.getUsername() + "' and u.password='"
+ user.getPwd() + "'");

List<UserInfo> list = query.list();
//if检查是否查到数据,如果长度为0(list.size()为0),则未查到信息
if (list.size() != 0) {
UserInfo userInfo1 = list.get(0);
transaction.commit();
session.close();
return userInfo1;
} else {
transaction.commit();
session.close();
return null;
}
}

//进行用户数据的更新
@Override
public boolean updatePwd(UserInfo userInfo) {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.saveOrUpdate(userInfo);
transaction.commit();
session.close();
return true;
}
}


5、编写action动作代码:UserInfoAction.java

只有验证用户登录和更新action动作,其他功能略

//User只有username和pwd属性
//ModelDriven<User>前台传值的一个接口
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
private  UserInfoServiceDAO  userInfoServiceDAOImpl;
//省略get、set方法
/*
*1、execute()继承ActionSupport,重写
*2、logOut()用户注销
*/
@Override//用户登录
public String ex
b298
ecute() throws Exception {
Map session = (Map) ActionContext.getContext().getSession();
UserInfo userInfo = userInfoServiceDAOImpl.loginUser(user);
if (user.getUsername() == null&&userInfo==null){
this.addActionMessage("用户名或密码不正确");
return ERROR;
}else{
session.put("userInfo", userInfo);// session.put("key",value);
return SUCCESS;
}
}

//用户注销
public String logOut() throws Exception {
Map session = (Map) ActionContext.getContext().getSession();
session.remove("userLogin");
return SUCCESS;
}
}


6、applicationContext.xml修改(驱动一般也需要添加)

spring依赖注入



<bean id="userInfoServiceDAOImpl" class="com.dao.impl.UserInfoServiceDAOImpl">
<property name="sessionFactory" ref="sessionFactory">
</property>
</bean>
<bean id="userAction" class="com.action.UserAction">
<property name="userInfoServiceDAOImpl" ref="userInfoServiceDAOImpl" />
</bean>


7、struts.xml部分添加,action属性和result返回

<!--
1、index.jsp首页:登录成功返回首页
2、error.jsp登录错误界面:如果用JavaScript可以不用这个。未输入用户名或未在数据库查询到信息
-->
<!-- 用户登陆界面,用户名、密码两个参数 -->
<action name="slogin" class="userAction">
<result>/index.jsp</result>
<result name="error">/error.jsp</result>
</action>
<!-- 用户注销 -->
<action name="logOut" class="userAction" method="logOut">
<result>/index.jsp</result>
</action>


8、jsp前台页面,简单登录界面,其他略

<!--添加struts2标签的的支持,在struts2的jar包中。插入页面开头-->
<%@taglib prefix="s" uri="/struts-tags"%>


<s:form method="post" action="slogin">
<!--这里值被后台的ModelDriven<User>接受,封装成User类型-->
<s:textfield label="用户名" name="username" />
<s:password label="密码" name="pwd" />
<s:actionmessage /><!--当出现错误时,显示。可省略-->
<s:submit value="确认" class="btnsubmit" />
</s:form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssh java 数据库