用Struts,Spring和hibernate实现登录操作

刚刚接触Java web 开发,写了一个登录界面,谈谈自己做的时候的一些 感受和具体步骤。

 写一个登录的功能首先得有一个页面吧


0.配置环境,因为我是用的myeclipse 我全部是通过myeclipse - Project Facets --一次性导入了Struts,spring 和hibernate。自动生成了

所以后面就不说怎么导的了。


1. 写jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>    
     <form action= "loginAction" method = "post">
        请您输入账号 : <input name = "username"  type = "text"><br>
        请您输入密码 :  <input name = "password" type = "password"><br>
                  <input type = "submit" value = "登录" >
     </form>
  </body>

</html>

这个页面有一个<form action="   ">

action 相当于是这个表单的内容要提交给谁

可以先不写

2.编写loginAction

package action;

import service.LoginService;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private String username;
	  private String password;
     	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;
		}
	 
  public String execute() {
       if(username.equals("admin") && password.equals("123456")) {
      return "success";
    } else {
      return "error";
    }
  }
  //Geter and Seter
}

这里可以把先前写的jsp页面的action填上去。

3.配置Struts 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>
  <constant name="struts.devMode" value="true"/>
  <constant name="struts.i18n.encoding" value="GBK"/>
  <package name="default" namespace="/" 
    extends="struts-default">
    
    <action name="loginAction" class="action.LoginAction">
      <result name="success">/loginSuccess.jsp</result>
      <result name="error">/loginFail.jsp</result>
      </action>
  </package>
</struts>

这里是在loginAction 返回的是SUCCESS则跳转到loginSuccess.jsp页面,错误同理。jsp页面怎么写就不详细介绍了



4.整合Spring

先写一个LoginService接口

package service;

public interface LoginService  {
  public boolean login(String username,String password);
}

LoginServiceImpl去实现LoginService中的方法

package service.impl;
import service.LoginService;

public class LoginServiceImpl implements LoginService {
  public boolean login(String username, String password) {
    if(username.equals("admin") && password.equals("123456")) {
      return true;
    }
    else {
      return false;
    }
  }
}
5.修改LoginAction

package action;

import service.LoginService;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private String username;
	  private String password;
	 private LoginService loginService;
	  
	  public LoginService getLoginService() {
		return loginService;
	}

	public void setLoginService(LoginService loginService) {
		this.loginService = loginService;
	}

	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;
		}
	 
  public String execute() {
	  if(loginService.login(username, password)){
      // if(username.equals("admin") && password.equals("123456")) {
      return "success";
    } else {
      return "error";
    }
  }
  //Geter and Seter
}

6.修改applicationContext.xml 把loginServiceImpl注入给Action


<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx">
 
  <bean id="loginAction" class="action.LoginAction">
    <property name="loginService">
      <ref bean="loginService"/>
    </property>
  </bean>
</beans>

7.整合hibernate

连接数据库

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

    <session-factory>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/demo1</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    </session-factory>

</hibernate-configuration>


8.添加实体及映射文件

package entity;

public class User {
	private String username;
	private String password;
	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;
	}
}
<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC   
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
      
<hibernate-mapping>  
    <class name="entity.User" table="userlist">  
        <id name="username" column = "username">  
            <generator class="uuid"/>  
        </id>  
        <property name="password"  column = "password" />
    </class>  
</hibernate-mapping>

映射文件和实体类放在同一个包下,映射文件就新建一个xml文件,把名字改成 实体名.hbm.xml就行。

然后再在hibernate.cfg.xml中添加映射 <mapping resource="entity/User.hbm.xml"/>(添加在 <session-factory> 里)


9.添加Dao层 LoginDao 接口

package dao;

public interface LoginDao {
	public boolean login(String username, String password) ;
}


LoginDaoImpl实现

package dao.impl;
import hibernate.HibernateSessionFactory;
import java.util.List;
import org.hibernate.*;
import dao.LoginDao;


public class LoginDaoImpl implements LoginDao {
  public boolean login(String username, String password) {
    Session session = HibernateSessionFactory.getSession();
    Query query = session.createQuery("from User where username='"+username+"' and password='"+password+"'");
    
    List list = query.list();
    if(list.size() > 0) { return true; }
    else { return false; }
  }
}

10.修改LoginServiceImpl

package service.impl;
import service.LoginService;
import dao.LoginDao;

public class LoginServiceImpl implements LoginService {
  private LoginDao loginDao;
  public LoginDao getLoginDao() {
		return loginDao;
	}

	public void setLoginDao(LoginDao loginDao) {
		this.loginDao = loginDao;
	}
public boolean login(String username, String password) {
	
    return loginDao.login(username, password);
  }
}


11.修改applicationContext.xml,将loginDaoImpl 注入loginServiceImpl

 <bean id="loginDao" class="dao.impl.LoginDaoImpl"/>
  <bean id="loginService" class="service.impl.LoginServiceImpl">
    <property name="loginDao"><ref bean="loginDao"/></property>
  </bean>
  
  <bean id="loginAction" class="action.LoginAction">
    <property name="loginService">
      <ref bean="loginService"/>
    </property>
  </bean>

这样用ssh框架实现登录功能的程序就做好啦


这是我第一次写博客,写的不好有不对的地方请多多见谅,欢迎指出更正



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值