SSI框架搭建

SSI框架爲struts、spring、ibatis,在該框架中,使用ibatis作爲數據持久層,其中ibatis使用最新版本mybatis3。

注:本文使用版本:struts-2.3.4、spring-3.2.1、mybatis-3.2.1

注: i.文件結構爲:/src/main/resources,src/main/java,並將其添加到build path中。【Java Build Path - Add Folder】  
        ii./src/main/resources下文件有:struts.xml、applicationContext.xml、jdbc.oracle.properties、sqlMapConfigMybatis.xml  
          src/main/java下包結構爲:com.hsinghsu.testSSI.model、com.hsinghsu.testSSI.dao、com.hsinghsu.testSSI.dao.impl、com.hsinghsu.testSSI.data、com.hsinghsu.testSSI.action。  
       iii.修改web的輸出目錄,Java Build Path - Default output folder:testSSI/WebContent/WEB-INF/classes。  
       iv.添加jar包時將jar包放在WebContent/WEB-INF/lib文件夾下。

  
一、框架下載  
1、Struts2:http://struts.apache.org/download   
2、Spring:http://www.springsource.org/download/community  
3、mybatis:https://code.google.com/p/mybatis/downloads/detail?name=mybatis-3.2.1.zip  
mybatis-spring: https://code.google.com/p/mybatis/downloads/list?q=label:Product-Spring  
  
二、創建項目,添加jar包  
1、創建java web項目testSSI.  
2、添加struts包:

aopalliance-1.0.jar、  
freemarker-2.3.19.jar,  
ognl-3.0.5.jar,  
struts2-core-2.3.4.jar,  
struts2-spring-plugin-2.3.4.jar,  
xwork-core-2.3.4.jar,  
commons-fileupload-1.2.2.jar、  
commons-logging-api-1.1.jar、  
commons-io-2.0.1.jar、  
commons-lang-2.4.jar、  
commons-lang3-3.1.jar、  
commons-logging-api-1.1.jar。

3、添加spring包:

spring-aop-3.2.1.RELEASE.jar、  
spring-aspects-3.2.1.RELEASE.jar、  
spring-beans-3.2.1.RELEASE.jar、  
spring-context-3.2.1.RELEASE.jar、  
spring-context-support-3.2.1.RELEASE.jar、  
spring-core-3.2.1.RELEASE.jar、  
spring-expression-3.2.1.RELEASE.jar、  
spring-jdbc-3.2.1.RELEASE.jar、  
spring-orm-3.2.1.RELEASE.jar、  
spring-test-3.2.1.RELEASE.jar、  
spring-tx-3.2.1.RELEASE.jar、  
spring-web-3.2.1.RELEASE.jar。

4、添加ibatis包:

mybatis-3.2.1.jar  
mybatis-spring-1.2.0.jar  

5、添加其他包:

ojdbc14.jar 【下載地址 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 】  
aspectjweaver.jar 【下載地址 http://search.maven.org/remotecontent?filepath=org/aspectj/aspectjweaver/1.6.12/aspectjweaver-1.6.12.jar 】  
javassist-3.15.0-GA.jar  
c3p0-0.9.1.jar  【下載地址:https://code.google.com/p/aicms/downloads/detail?name=c3p0-0.9.1.jar&can=2&q=】

三、配置struts  
1、配置struts核心過濾器。  
打開web.xml,配置struts核心過濾器和過濾器映射。  
web.xml文件代碼如下:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  
    <display-name></display-name>  
      
    <!-- 定義Struts 2的核心控制器 -->   
    <filter>  
        <filter-name>struts2</filter-name>  
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>struts2</filter-name>  
        <url-pattern>*.action</url-pattern>  
    </filter-mapping>  
  
    <listener>  
        <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>  
    </listener>  
  
    <welcome-file-list>  
        <welcome-file>index.html</welcome-file>  
        <welcome-file>index.htm</welcome-file>  
        <welcome-file>index.jsp</welcome-file>  
        <welcome-file>default.html</welcome-file>  
        <welcome-file>default.htm</welcome-file>  
        <welcome-file>default.jsp</welcome-file>  
    </welcome-file-list>  
  
</web-app>

2、建立BaseAction。  
新建包com.hsinghsu.testSSI.action,在其中建立類BaseAction,繼承ActionSupport類。  
BaseAction.java文件代碼如下:

package com.hsinghsu.testSSI.action;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class BaseAction  extends ActionSupport{  
  
    /**  
     *   
     */  
    private static final long serialVersionUID = 4565394360208096613L;  
  
}

3、編寫測試struts的Action。  
在包com.hsinghsu.testSSI.action中建立LoginAction類,繼承BaseAction,作爲簡單的struts測試。  
LoginAction.java文件代碼如下:

package com.hsinghsu.testSSI.action;  
  
public class LoginAction extends BaseAction {  
  
    /**  
     *   
     */  
    private static final long serialVersionUID = -6144396976094110475L;  
      
    public String execute() throws Exception   
    {    
        return "success";    
    }    
  
}

4、配置action。  
在struts.xml文件中,添加對LoginAction的配置。  
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.3.dtd">  
  
<struts>  
    <constant name="struts.objectFactory" value="spring" />  
    <constant name="struts.i18n.encoding" value="UTF-8" />  
    <constant name="struts.i18n.reload" value="false" />  
    <constant name="struts.configuration.xml.reload" value="false" />  
    <constant name="struts.custom.i18n.resources" value="globalMessages" />  
    <constant name="struts.action.extension" value="action,," />  
  
    <constant name="struts.convention.package.locators.basePackage"  
              value="com.hsinghsu.testSSI.action" />  
    <constant name="struts.convention.result.path" value="/" />  
    <constant name="struts.serve.static" value="true" />  
    <constant name="struts.serve.static.browserCache" value="false" />  
      
      
    <package name="com.hsinghsu.testSSI.action.test" extends="struts-default">  
        <action name="login" class="com.hsinghsu.testSSI.action.LoginAction">  
            <result name="success">/jsp/welcome.jsp</result>  
        </action>  
    </package>  
      
</struts>

5、建立測試jsp頁面  
新建測試jsp頁面welcome.jsp。  
welcome.jsp文件代碼如下:

<%@ page language="java" pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title>IWelcome</title>  
</head>  
<body>  
Welcome HsingHsu  
</body>  
</html> 

6、配置spring  
打開applicationContext.xml文件,配置spring,添加action bean。  
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:p="http://www.springframework.org/schema/p"  
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="  
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd  
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd  
       ">  
         
    <bean id="loginAction" class="com.hsinghsu.testSSI.action.LoginAction"/>   
       
</beans>

7、配置Spring監聽器  
打開web.xml,添加Spring監聽器。  
web.xml文件代碼如下:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  
    <display-name></display-name>  
      
    <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>  
        classpath:applicationContext.xml  
        </param-value>  
    </context-param>  
  
    <!-- ssh 中文過濾 -->  
    <filter>  
        <filter-name>characterEncoding</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>utf-8</param-value>  
        </init-param>  
        <init-param>  
            <param-name>forceEncoding</param-name>  
            <param-value>true</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>characterEncoding</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
  
    <!-- 定義Struts 2的核心控制器 -->   
    <filter>  
        <filter-name>struts2</filter-name>  
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>struts2</filter-name>  
        <url-pattern>*.action</url-pattern>  
    </filter-mapping>  
  
    <!-- 對Spring 容器進行實例化 -->  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
    <listener>  
        <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>  
    </listener>  
  
    <welcome-file-list>  
        <welcome-file>index.html</welcome-file>  
        <welcome-file>index.htm</welcome-file>  
        <welcome-file>index.jsp</welcome-file>  
        <welcome-file>default.html</welcome-file>  
        <welcome-file>default.htm</welcome-file>  
        <welcome-file>default.jsp</welcome-file>  
    </welcome-file-list>  
  
</web-app>

8、配置tomcat並啓動,在瀏覽器中輸入http://localhost:8686/testSSI/login.action   

   則頁面會顯示Welcome HsingHsu。

 

四、配置ibatis  

1、建立數據庫與數據表  
本文采用oracle數據庫,建立T_TEST_USER表,新建列ID,NAME,PWD,AGE,SEX。插入一條數據,如id:1,name:hsing,pwd:hsu。 

2、配置ibatis數據庫連接等配置。新建jdbc.oracle.properties文件。  
jdbc.oracle.properties文件代碼如下:

 
ibatis.connection.driver_class oracle.jdbc.driver.OracleDriver  
ibatis.connection.url jdbc:oracle:thin:@10.127.58.1:1521:ora11g  
ibatis.connection.username adm  
ibatis.connection.password adm  
  
c3p0.acquireIncrement=3  
c3p0.idleConnectionTextPeriod=900  
c3p0.minPoolSize=2  
c3p0.maxPoolSize=50  
c3p0.maxStatements=100  
c3p0.numHelperThreads=10  
c3p0.maxIdleTime=600  
c3p0.initialPoolSize=3 

3、配置spring,添加ibatis支持。  
修改applicationContext.xml文件,添加ibatis支持。  
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:p="http://www.springframework.org/schema/p"  
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="  
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd  
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd  
       ">  
  
    <bean id="placeholderConfig"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location">  
            <value>classpath:jdbc.oracle.properties</value>  
        </property>  
    </bean>  
  
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  
        destroy-method="close">  
        <property name="jdbcUrl" value="${ibatis.connection.url}" />  
        <property name="driverClass" value="${ibatis.connection.driver_class}" />  
        <property name="user" value="${ibatis.connection.username}" />  
        <property name="password" value="${ibatis.connection.password}" />  
        <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />  
        <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />  
        <property name="minPoolSize" value="${c3p0.minPoolSize}" />  
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />  
        <property name="maxStatements" value="${c3p0.maxStatements}" />  
        <property name="numHelperThreads" value="${c3p0.numHelperThreads}" />  
        <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />  
    </bean>  
  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="configLocation" value="classpath:sqlMapConfigMybatis.xml" />  
        <property name="dataSource" ref="dataSource" />  
    </bean>  
  
    <bean id="abstractDao" abstract="true">  
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
    </bean>  
      
    <bean id="userDao"  
        class="com.hsinghsu.testSSI.dao.impl.UserDaoImpl"  
        parent="abstractDao" />  
  
    <context:component-scan base-package="com.hsinghsu.testSSI">  
        <context:exclude-filter type="annotation"  
            expression="org.springframework.stereotype.Controller" />  
    </context:component-scan>  
  
</beans>

4、配置ibatis映射文件  
新建sqlMapConfigMybatis.xml,添加ibatis映射文件  
代碼如下:

 

<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"    
    "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  
<configuration>  
    <mappers>  
        <!-- 配置sql語句文件 -->  
        <mapper resource="com/hsinghsu/testSSI/data/User.xml" />  
    </mappers>  
</configuration>

5、創建持久層實體類。  
創建包com.hsinghsu.testSSI.model,創建User類,添加5個私有成員,對應數據表中5個屬性,並一定要添加set和get方法。  
User.java文件代碼如下:

 
package com.hsinghsu.testSSI.model;  
  
public class User {  
  
    private Long id;  
    private String name;  
    private String pwd;  
    private Long age;  
    private Long sex;  
  
    public Long getId() {  
        return id;  
    }  
  
    public void setId(Long id) {  
        this.id = id;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getPwd() {  
        return pwd;  
    }  
  
    public void setPwd(String pwd) {  
        this.pwd = pwd;  
    }  
  
    public Long getAge() {  
        return age;  
    }  
  
    public void setAge(Long age) {  
        this.age = age;  
    }  
  
    public Long getSex() {  
        return sex;  
    }  
  
    public void setSex(Long sex) {  
        this.sex = sex;  
    }     
  
} 

6、配置User映射文件  
創建包com.hsinghsu.testSSI.data。該包主要放置對應類的映射文件。  
新建User.xml,添加其sql的映射  
代碼如下:

 
<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  
<mapper namespace="UserMapper">  
  
    <!-- select 語句,傳參一個,返回User對象 。注:select id as id,name as name,pwd as pwd   
        的as後面的名稱要與User類中屬性名稱要一一對應 -->  
    <select id="getUserByName" parameterType="String"  
        resultType="com.hsinghsu.testSSI.model.User">  
        select  
        id as id,name as name,pwd as pwd  
        from T_TEST_USER  
        WHERE NAME = #{name}  
    </select>  
  
    <insert id="insertUser" parameterType="com.hsinghsu.testSSI.model.User">  
        insert into  
        T_TEST_USER(ID,NAME,PWD,AGE,SEX)  
        values(#{id},#{name},#{pwd},#{age},#{sex})  
    </insert>  
  
</mapper>

五、編寫java代碼  
1、編寫DAO接口  
新建包com.hsinghsu.testSSI.dao,創建接口UserDao。  
UserDao.java文件代碼如下:

 
package com.hsinghsu.testSSI.dao;  
  
import com.hsinghsu.testSSI.model.User;  
  
public interface UserDao {  
      
    public User getUserByName(String name);  
  
} 

2、編寫DAO實現  
新建包com.hsinghsu.testSSI.dao.impl,創建實現類UserDaoImpl。  
UserDaoImpl.java文件代碼如下:

 
package com.hsinghsu.testSSI.dao.impl;  
  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
import org.mybatis.spring.support.SqlSessionDaoSupport;  
import org.springframework.stereotype.Repository;  
  
import com.hsinghsu.testSSI.dao.UserDao;  
import com.hsinghsu.testSSI.model.User;  
  
@Repository(value = "userDao")  
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {  
  
    @Override  
    public User getUserByName(String name) {  
  
        User user = new User();  
  
        // select語句,傳入一個參數,返回User對象  -------------------------------------------------------------------------  
        user = getSqlSession().selectOne("UserMapper.getUserByName", name);// select語句,傳入一個參數,返回User對象  
  
        //insert語句,傳入一個對象  -------------------------------------------------------------------------------------  
        User oneUser = new User();  
        oneUser.setId(Long.parseLong("6"));  
        oneUser.setName("go07");  
        oneUser.setPwd("pesd07");  
        oneUser.setAge(Long.parseLong("25"));  
        oneUser.setSex(Long.parseLong("1"));  
        //int result = getSqlSession().insert("UserMapper.insertUser",oneUser);//insert語句,傳入一個對象  
        //System.out.println("insert result:"+result);  
          
  
        return user;  
    }  
  
} 

3、修改action類  
編輯修改LoginAction類。  
LoginAction.java文件代碼如下:

 
package com.hsinghsu.testSSI.action;  
  
import org.springframework.beans.factory.annotation.Autowired;  
  
import com.hsinghsu.testSSI.dao.UserDao;  
import com.hsinghsu.testSSI.model.User;  
  
public class LoginAction extends BaseAction {  
  
    /**  
     *   
     */  
    private static final long serialVersionUID = -439437585357651788L;  
  
    @Autowired  
    private UserDao userDao;  
  
    private User user;  
  
    private String username;  
    private String password;  
  
    public String execute() throws Exception {  
        user = userDao.getUserByName(username);  
        if (user != null) {  
            if (user.getPwd().equals(password)) {  
                return SUCCESS;  
            }  
        }  
        return ERROR;  
    }  
  
    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;  
    }  
  
}  

4、新建用戶登錄頁面。  
添加login.jsp。  
login.jsp文件代碼如下:

 

<%@ page language="java" pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title>Insert title here</title>  
</head>  
<body>  
    <form action="mylogin.action" method="post">    
        Username:<input type="text" name="username"/><br/>    
        Password:<input type="password" name="password"/><br/>    
        <input type="submit" value="Submit"/>     
    </form>  
</body>  
</html>

5、修改struts.xml配置文件  
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.3.dtd">  
  
<struts>  
    <constant name="struts.objectFactory" value="spring" />  
    <constant name="struts.i18n.encoding" value="UTF-8" />  
    <constant name="struts.i18n.reload" value="false" />  
    <constant name="struts.configuration.xml.reload" value="false" />  
    <constant name="struts.custom.i18n.resources" value="globalMessages" />  
    <constant name="struts.action.extension" value="action,," />  
  
    <constant name="struts.convention.package.locators.basePackage"  
              value="com.hsinghsu.testSSI.action" />  
    <constant name="struts.convention.result.path" value="/" />  
    <constant name="struts.serve.static" value="true" />  
    <constant name="struts.serve.static.browserCache" value="false" />  
      
      
    <package name="com.hsinghsu.testSSI.action.test" extends="struts-default">  
        <action name="login" class="com.hsinghsu.testSSI.action.LoginAction">  
            <result name="success">/jsp/welcome.jsp</result>  
        </action>  
          
        <action name="mylogin" class="com.hsinghsu.testSSI.action.LoginAction">   
            <result name="success">/jsp/welcome.jsp</result>  
            <result name="error">/jsp/login.jsp</result>  
        </action>  
    </package>  
      
</struts>

6、運行tomcat,在瀏覽器中輸入http://localhost:8686/testSSI/jsp/login.jsp 會顯示登錄頁面,如果成功會顯示welcome 。失敗則會繼續要求登錄。  

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