歡迎您光臨本站 註冊首頁

使用MyEclipse整合SSH模式:登陸範例

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

ssh(struts、spring、hibernate)模式就是把三個框架合理地結合在一起,以發揮各自在不同位置上的作用,而如何把他們整合在一起就是關鍵.其實把他們整合在一起並不難,但不是任何時候都需要把他們整合來使用,這要看場合,我們應該合理的使用,合適就好.但不管怎麼說它都是一種不錯的模式,用MyEclipse工具會很方便地把它們整合在一起.下面簡單說一下過程:

MyEclipse整合SSH過程概述

1.先加struts包和配置文件.可以手動添加,也可以在myeclipse的myeclipse菜單裡面把struts的環境添加上去,後面的spring會用到struts的配置文件.

2.添加spring,可以像添加struts一樣把spring的環境添加上去,不過一定要添加spring的web包.可以把spring的配置文件和struts的配置文件一起放在WEN-INF目錄下.

3.添加Hibernate,添加Hibernate的時候對待Hibernate的配置文件我們有兩種處理方式:一:按往常一樣新建一個配置文件,把它放在src目錄下(一般情況);二:無需新建配置文件,而是把Hibernate的配置信息加入到spring的配置文件裡面,這種方式需要建立一個dataSource資料庫連接.進行ssh整合一般使用第二種方式.

4.把三個框架都添加上去之後,就需要把他們聯繫起來,下面以一個登錄的例子說明他們是怎樣配合工作的:

MyEclipse整合SSH登陸範例

1)、首先從前台發送一個登錄的請求,「如下」:

< body>
< form action="loginAction.do" method="post">
< table border="1">
< tr>< td>name:< /td>
< td>< input type="text" name="name"/>< /td>< /tr>
< tr>< td>password:< /td>
< td>< input type="password" name="password"/>< /td>< /tr>
< tr>< td colspan="2" align="center">
< input type="submit" value="login"/>
< input type="reset" value="reset"/>
< /td>
< /tr>
< /table>
< /form>
< /body>

2)、請求被struts截獲,轉到struts的配置文件尋找相對應的action「如下」,這時發現找到的是一個代理action,這個代理action就會找到用< plug-in>標籤註冊的spring插件,從而找到spring的配置文件.

< action-mappings>
< !-- login action -->
< action name="loginActionForm" path="/loginAction"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
< forward name="success" path="/success.jsp">< /forward>
< forward name="failed" path="/failed.jsp" redirect="true">< /forward>
< /action>
< /action-mappings>

< message-resources
parameter="com.yourcompany.struts.ApplicationResources" />
< plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
< set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
< /plug-in>

3)、在spring的配置文件中尋找跟path屬性的名稱相同的action,「如下」.在action調用了userService類,userService又調用了userDAO.在userDAO中我們需要做用戶的登錄驗證.

< !-- 依賴注入action -->
< bean name="/loginAction" class="com.dc.action.LoginAction">
< property name="userService" ref="userService">< /property>
< /bean>

< !-- 依賴注入UserDAO -->
< bean id="userDAO" class="com.dc.dao.UserDAOImpl">
< property name="sessionFactory" ref="SessionFactory">< /property>
< /bean>

< !-- 依賴注入UserService -->
< bean id="userService" class="com.dc.dao.UserServiceImpl">
< property name="dao" ref="userDAO">< /property>
< /bean>

前面說過,Hibernate的配置信息是添加在spring的配置文件里的,在上面的userDAO中引用的sessionFactory就需要用到這些信息「如下」.

< !-- 配置連接資料庫和事物管理參數 -->
< bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
< property name="driverClassName"
value="com.mysql.jdbc.Driver">
< /property>
< property name="url"
value="jdbc:mysql://127.0.0.1:3306/test">
< /property>
< property name="username" value="root">< /property>
< property name="password" value="root">< /property>
< /bean>
< bean id="SessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
< property name="dataSource">
< ref bean="dataSource">< /ref>
< /property>
< property name="hibernateProperties">
< props>
< prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
< /prop>
< prop key="hibernate.show_sql">true< /prop>
< prop key="hibernate.format_sql">true< /prop>
< /props>
< /property>
< property name="mappingResources">
< list>
< value>com/dc/pojo/User.hbm.xml< /value>< /list>
< /property>
< /bean>

userDAO的驗證方法「如下」:在這個類中繼承了一個HibernateDaoSupport類,繼承后在配置文件中就可以添加一個sessionFactory屬性,用於獲取HibernateSessionFactory.

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
public User checkUser(String name, String password) {
String sql = "from User u where u.name=? and password=?";
List userList = this.getHibernateTemplate().find(sql.toString(),
new Object[]{name, password});
return userList.size() == 0 ? null : (User) userList.get(0);
}
}

4)、找到action后處理用戶的登錄,「如下」. userService調用了getUserByParam方法,而在getUserByParam方法中又調用了userDAO的checkUser方法.驗證通過後轉到成功頁面,否則轉到失敗頁面.

//用戶登錄驗證
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginActionForm laf = (LoginActionForm) form;
String name = laf.getName();
String password = laf.getPassword();
User user=userService.getUserByParam(name, password);
if(user!=null){
HttpSession session=request.getSession();
session.setAttribute("user", user);
return mapping.findForward("success");
}
return mapping.findForward("failed");
}

這就是一個簡單的流程,當然還有一些細節的東西需要我們去摸索.在這過程中,三個框架都發揮了各自的作用,如果在一些比較複雜的應用裡面這是很方便的.這種模式使一個系統變得靈活、易於擴展和維護,得到了比較廣泛的應用.

以上就介紹了MyEclipse整合SSH的流程.本文來自seekereye的博客:《SSH整合》.


[火星人 ] 使用MyEclipse整合SSH模式:登陸範例已經有903次圍觀

http://coctec.com/docs/java/show-post-61082.html