在网上经常看到用Eclipse整合SSH然后我就在学校用JB整合了一个SSH的例子演示出来,很有成就感! 呵呵
打开JB建一个工程然后〉建站点〉建AcionForm , Acion , JSP这样就把Struts框架搭建出来了!
然后就是把Hibernate的Jar 和Spring 的Jar 导进工程当中建好的Struts框架如图:
然后开始编写一个接口UserDAO.java
package SpringPack;
public interface UserDAO {
public abstract boolean isValidUser(String name,String password);
}
编写一个类继承该接口UserDAOImp.java
package SpringPack;
import org.springframework.orm.hibernate.support.*;
import net.sf.hibernate.SessionFactory;
import java.util.List;
import Hibernate.hibernateTest;
import net.sf.hibernate.*;
public class UserDAOImp extends HibernateDaoSupport implements UserDAO{
public boolean isValidUser(String name,String pwd){
hibernateTest t = null;
try {
t = new hibernateTest();
}
catch (HibernateException ex) {
ex.printStackTrace();
}
if(t.checkUser(name,pwd)) return true;
return false;
}
}
然后编写一个Bean用来映射数据表的字段
package Hibernate;
public class user {
private String username;
private String password;
public user() {
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
编写hibernate.cfg.xml文件用于连接数据库的配置文件:
<?xml version='1.0' encoding='big5'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd
">
<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/myDB</property>
<property name="connection.username">root</property>
<property name="connection.password">test</property>
<mapping resource="user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
然后下面编写一个描述数据库映射表字段信息的mapping文件User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd
">
<hibernate-mapping>
<class name="Hibernate.user" table="user">
<id name="username" type="string" unsaved-value="null">
<column name="username" sql-type="varchar(20)" />
<generator class="uuid.hex"/>
</id>
<property name="password" type="string" column="password"/>
</class>
</hibernate-mapping>
好了现在Hibernate已基本搭建出来了,下一步我们要用Spring来整合Hibernate 和Struts 操作步骤很简单编写一个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 name="/loginAction"
class="StrutsPack.LoginAction"
singleton="false">
</bean>
</beans>
要整合Struts还要在Struts-config.xml文件中做一些修改如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd
">
<struts-config>
<form-beans>
<form-bean name="loginActionForm" type="StrutsPack.LoginActionForm" />
</form-beans>
<action-mappings>
<action name="loginActionForm" path="/loginAction" scope="session" type="org.springframework.web.struts.DelegatingActionProxy" validate="false">
<forward name="Success" path="/success.jsp" />
<forward name="Failure" path="/Failure.jsp" />
</action>
</action-mappings>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
</struts-config>
好了现在还要编写一个Hibernate的辅助文件如下:
package Hibernate;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import java.util.List;
import java.util.ListIterator;
public class hibernateTest {
Session session;
public hibernateTest()
throws HibernateException{
SessionFactory factory=new Configuration().configure().buildSessionFactory();
session=factory.openSession();
}
public boolean checkUser(String name,String pwd){
List count = null;
try {
Query q = session.createQuery(
"select count(*) from user where username=? and password=?");
q.setString(1, name);
q.setString(2, pwd);
count = q.list();
}
catch (HibernateException ex) {
ex.printStackTrace();
}
ListIterator list=count.listIterator();
Integer s=(Integer)list.next();
if(s.intValue() > 0 ) return true;
return false;
}
}
然后就可以在LoginAction.java中调用了LoginAction.java文件如下:
package StrutsPack;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import SpringPack.*;
public class LoginAction
extends Action {
private static final String SUCCESS="Success";
private static final String FAILURE="Failure";
private UserDAO userdao=new UserDAOImp();
public ActionForward execute(ActionMapping mapping,
ActionForm actionForm,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse) {
LoginActionForm loginform = (LoginActionForm) actionForm;
if(userdao.isValidUser(loginform.getUsername(),loginform.getPassword())){
return mapping.findForward(SUCCESS);
}
return mapping.findForward(FAILURE);
}
public UserDAO getUserDAO() {
return userdao;
}
public void setUserDAO(UserDAO userDAO) {
this.userdao = userDAO;
}
}
至此JB开发一个简单的SSH就结束了感觉就是两个字麻烦!还是使用Eclispe开发方便!下面是具体的path: