Struts2.0+Springframework2.5+ibatis2.3完美整合用戶登錄及增刪改查演示示例 連載中.(三)

  好了,我們接着上篇繼續我們的服務層及Struts的實現:
  服務層這裏我就不用做介紹了,這裏的實現和以前Hibernate的例子基本類同,唯一不同的是使用了Spring2.5的標註方式實現類的注入。
  IUserService.java
  
package org.login.service;

import java.util.List;

import org.login.vo.Users;

public interface IUserService {
    
    List
<Users> getAllUser();
    
    Users getUserById(Integer id);
    
    
boolean isLogin(Users user);
    
    
boolean insertUser(Users user);
    
    
boolean updateUser(Users user);
    
    
boolean deleteUser(Integer id);
}
   服務層實現:UserService.java
  
package org.login.service.Impl;

import java.util.List;

import org.login.dao.IUserDAO;
import org.login.service.IUserService;
import org.login.vo.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service(
"userService")
public class UserService implements IUserService {

    @Autowired(required
=false)
    @Qualifier(
"userDAO")
    
private IUserDAO userDAO = null;
    
    
public IUserDAO getUserDAO() {
        
return userDAO;
    }

    
public void setUserDAO(IUserDAO userDAO) {
        
this.userDAO = userDAO;
    }

    @Override
    
public boolean deleteUser(Integer id) {
        
        
return userDAO.deleteUser(id);
    }

    @Override
    
public List<Users> getAllUser() {
        
        
return userDAO.getAllUser();
    }

    @Override
    
public boolean insertUser(Users user) {
        
        
return userDAO.insertUser(user);
    }

    @Override
    
public boolean isLogin(Users user) {
        
        
return userDAO.isLogin(user);
    }

    @Override
    
public boolean updateUser(Users user) {
        
        
return userDAO.updateUser(user);
    }

    @Override
    
public Users getUserById(Integer id) {
        
        
return userDAO.getUserById(id);
    }

}
  Struts層的實現也是比較簡單了,與上述的區別都一樣,在這裏我就不太多說了。
  Login.java
  
package org.login.actions;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.login.service.IUserService;
import org.login.vo.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings({
"serial","unchecked"})
@Service(
"login")
public class Login extends ActionSupport implements ServletRequestAware {

    
private static final String UPDATE = "update";
    
    
private HttpServletRequest request = null;
    
    @Autowired(required 
= false)
    @Qualifier(
"userService")
    
private IUserService userService = null;
    
    
private String id = null;
    
private String name = null;
    
private String password = null;
    
    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
public String getPassword() {
        
return password;
    }

    
public void setPassword(String password) {
        
this.password = password;
    }
    
    
public String getId() {
        
return id;
    }

    
public void setId(String id) {
        
this.id = id;
    }
    
    
public IUserService getUserService() {
        
return userService;
    }

    
public void setUserService(IUserService userService) {
        
this.userService = userService;
    }

    @Override
    
public String execute() throws Exception {
        Users user 
= new Users();
        user.setUserName(name);
        user.setPassword(password);
        
if (getUserService().isLogin(user)) {
            
return SUCCESS;
        }
        
return INPUT;
    }
    
    
public String save() throws Exception {
        Users user 
= new Users();
        user.setUserName(name);
        user.setPassword(password);
        
if (getUserService().insertUser(user)) {
            
return SUCCESS;
        }
        
return ERROR;
    }

    
public String update() throws Exception {
        Users user 
= null;
        String action 
= request.getParameter("action");
        String id 
= request.getParameter("id");
        
if ("loading".equals(action)) {
            
            user 
= new Users();
            user 
= getUserService().getUserById(Integer.valueOf(id));
            
if (null != user) {
                request.setAttribute(
"user", user);
            }
            
return UPDATE;
            
        } 
else {
            user 
= new Users();
            user.setUserName(name);
            user.setPassword(password);
            user.setId(Integer.valueOf(id));
            
if (getUserService().updateUser(user)) {
                
return SUCCESS;
            }
        }
        
        
return ERROR;
    }
    
    
public String delete() throws Exception {
        String id 
= request.getParameter("id");
        
if (getUserService().deleteUser(Integer.valueOf(id))) {
            
return SUCCESS;
        }
        
return ERROR;
    }
    
    
    
public String findAllUsers() throws Exception {
        List
<Users> list = getUserService().getAllUser(); 
        
if (list.size() > 0) {
            request.setAttribute(
"list", list);
            
return SUCCESS;
        }
        
return ERROR;
    }

    @Override
    
public void setServletRequest(HttpServletRequest request) {
        
this.request = request;        
    }
}
  到現在爲止,我們的底層的類已經全部實現了,下來我們看其配置文件:
  struts.xml
  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
>
<struts>
    
<include file="struts-default.xml"/>
    
<package name="struts2" extends="struts-default">
        
<action name="logon" class="login">
            
<result name="success">/success.jsp</result>
            
<result name="input">/login.jsp</result>
        
</action>
        
<action name="save" class="login" method="save">
            
<result name="success">/success.jsp</result>
            
<result name="error">/error.jsp</result>
        
</action>
        
<action name="update" class="login" method="update">
            
<result name="success">/success.jsp</result>
            
<result name="update">/update.jsp</result>
            
<result name="error">/error.jsp</result>
        
</action>
        
<action name="delete" class="login" method="delete">
            
<result name="success">/success.jsp</result>
            
<result name="error">/error.jsp</result>
        
</action>
        
<action name="show" class="login" method="findAllUsers">
            
<result name="success">/list.jsp</result>
            
<result name="error">/error.jsp</result>
        
</action>
    
</package>
</struts>
  Struts.properties
  
struts.locale=zh_CN
struts.i18n.encoding=UTF-8  
struts.objectFactory=spring  
  接下來也是與之前例子不同的地方,就是ibatis的配置文件:
  config.xml
  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"
>
    
<sqlMapConfig>
    
<sqlMap resource="org/login/vo/Users.xml"/>
</sqlMapConfig>

  這個文件比較簡單,只配置了bean的映射文件。

  最後一個配置文件就是Spring的配置文件了,這個也是最關鍵的,與以前的配置是截然不同,因爲在Spring2.5使用了標註方式注入,同時她了具有了自動的搜索bean的能力,所以配置就相當的簡單,如果有不明白的地方,可以寫到評論裏,或者給我留言,這也是Spring2.5最難理解的地方了。
  applicationContext.xml
  

<?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:context
="http://www.springframework.org/schema/context"
       xsi:schemaLocation
="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd"
>
    
    
<context:annotation-config />
    
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
        
<property name="url" value="jdbc:jtds:sqlserver://localhost:1433/pubs" />
        
<property name="username" value="sa" />
        
<property name="password" value="aa" />
    
</bean>
    
    
<bean id="sqlClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        
<property name="dataSource">
            
<ref local="dataSource"/>
        
</property>
        
<property name="configLocation">
            
<value>classpath:config.xml</value>
        
</property>
    
</bean>
    
<context:component-scan base-package="org.login" />
</beans>

  這篇就寫到這裏吧,下篇我們將說明頁面層的代碼,至於說明我想也不用了,如果有興趣研究的朋友可以先下載示例代碼先看下,具體的下載地址如下:

   演示示例下載地址:Struts2.0+Spring2.5.1+ibatis2.3地址:http://download.csdn.net/source/331581

   如果有朋友比較喜歡Hibernate的話,過些時候我會再寫個關於Hibernate的集成,不過大家可以先看一下我以前的兩個關於Hibernate方法的集成示例,下載地址如下:

   

   Struts1.2+Spring1.2+HIbernate3.1整合用戶登錄下載地址:http://download.csdn.net/source/323772

   Struts2.0+Spring2.0+HIbernate3.1整合用戶登錄以及增刪改查完整示例:http://download.csdn.net/source/326113

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章