<1>LoginAction.java
package action; import idao.ICustomerDao; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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 po.Customer; import dao.CustomerDao; import form.LoginForm; public class LoginAction extends Action { private ICustomerDao icdao; public ICustomerDao getIcdao() { return icdao; } public void setIcdao(ICustomerDao icdao) { this.icdao = icdao; } @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub LoginForm loginForm = (LoginForm) form; String account = loginForm.getAccount(); String password = loginForm.getPassword(); Customer cus = icdao.getCustomerByAccount(account); if(cus!=null && cus.getPassword().equals(password)){ }else{ } return mapping.findForward("SUCCESS"); } }
<2>CustomerDao
package dao; import org.hibernate.Session; import po.Customer; import util.HibernateSessionFactory; public class CustomerDao { public Customer getCustomerByAccount(String account){ Customer cus = null; Session session = HibernateSessionFactory.getSession(); cus = (Customer) session.get(Customer.class, account); HibernateSessionFactory.closeSession(); return cus; } }
<3>LoginForm.java
package 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 account; private String password; public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public void reset(ActionMapping mapping, HttpServletRequest request) { // TODO Auto-generated method stub super.reset(mapping, request); } @Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { // TODO Auto-generated method stub return super.validate(mapping, request); } }
<4>ICustomerDao
package idao; import po.Customer; public interface ICustomerDao { public Customer getCustomerByAccount(String account); }
<5>Customer.java
package po; public class Customer { private int id; private String account; private String password; private String cname; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } }
<6>Customer.hbm.xml
<?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"> <hibernate-mapping package="po"> <class name="Customer"> <id name="id"> <generator class="native"/> </id> <property name="account"/> <property name="password"/> <property name="cname"/> </class> </hibernate-mapping>
<7>HibernateSessionFactory.java
package util; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */ public class HibernateSessionFactory { /** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current session. */ private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static org.hibernate.SessionFactory sessionFactory; private static Configuration configuration = new Configuration(); private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static String configFile = CONFIG_FILE_LOCATION; static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize * the <code>SessionFactory</code> if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } }
<8>hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///test</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hbm2ddl.auto">create</property> <mapping resource="cn/itcast/hibernate/domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>
<9>applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dao" class="dao.CustomerDao"></bean> <bean name="/login" class="action.LoginAction"> <property name="icdao"> <ref local="dao"/> </property> </bean> </beans>
<10>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> <form-beans> <form-bean name="loginForm" type="form.LoginForm"></form-bean> </form-beans> <action-mappings> <action path="/login" name="loginForm" scope="request" type="org.springframework.web.struts.DelegatingActionProxy"> <forward name="SUCCESS" path="/loginSuccess.jsp"></forward> <forward name="FAIL" path="/loginFail.jsp"></forward> </action> </action-mappings> <plug-in className="org.springframework.web.struts.contextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> </plug-in> </struts-config>
<11>login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Login.jsp</title> </head> <body> <form action="/login.do" method="post"> 请您输入账号:<input name="account" type="text"><br> 请您输入密码:<input name="password" type="password"> <input type="submit" value="登录"> </form> </body> </html>
<12>loginFail.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>LoginSuccess.jsp</title> </head> <body> 登录失败 </body> </html>
<13>loginSuccess.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>LoginSuccess.jsp</title> </head> <body> 登录成功 </body> </html>
<14>工程目录