精华内容
下载资源
问答
  • SSI框架

    2017-01-12 10:43:16
    SSI框架为struts、spring、ibatis,在该框架中,使用ibatis作为数据持久层,其中ibatis使用最新版本mybatis3。 注:本文使用版本:struts-2.3.4、spring-3.2.1、mybatis-3.2.1   一、框架下载 1、Struts2:...

    SSI框架为struts、spring、ibatis,在该框架中,使用ibatis作为数据持久层,其中ibatis使用最新版本mybatis3。

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

      
    一、框架下载  
    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包:  
    1. aopalliance-1.0.jar、    
    2. freemarker-2.3.19.jar,    
    3. ognl-3.0.5.jar,    
    4. struts2-core-2.3.4.jar,    
    5. struts2-spring-plugin-2.3.4.jar,    
    6. xwork-core-2.3.4.jar,    
    7. commons-fileupload-1.2.2.jar、    
    8. commons-logging-api-1.1.jar、    
    9. commons-io-2.0.1.jar、    
    10. commons-lang-2.4.jar、    
    11. commons-lang3-3.1.jar、    
    12. commons-logging-api-1.1.jar。  
    3、添加spring包:
    1. spring-aop-3.2.1.RELEASE.jar、    
    2. spring-aspects-3.2.1.RELEASE.jar、    
    3. spring-beans-3.2.1.RELEASE.jar、    
    4. spring-context-3.2.1.RELEASE.jar、    
    5. spring-context-support-3.2.1.RELEASE.jar、    
    6. spring-core-3.2.1.RELEASE.jar、    
    7. spring-expression-3.2.1.RELEASE.jar、    
    8. spring-jdbc-3.2.1.RELEASE.jar、    
    9. spring-orm-3.2.1.RELEASE.jar、    
    10. spring-test-3.2.1.RELEASE.jar、    
    11. spring-tx-3.2.1.RELEASE.jar、    
    12. spring-web-3.2.1.RELEASE.jar。  
    4、添加ibatis包:
    1. mybatis-3.2.1.jar    
    2. mybatis-spring-1.2.0.jar    
    5、添加其他包:
    1. ojdbc14.jar 【下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 】    
    2. aspectjweaver.jar 【下载地址 http://search.maven.org/remotecontent?filepath=org/aspectj/aspectjweaver/1.6.12/aspectjweaver-1.6.12.jar 】    
    3. javassist-3.15.0-GA.jar    
    4. 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文件代码如下:
    1. <?xml version="1.0" encoding="UTF-8"?>    
    2. <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"    
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     
    5.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">    
    6.     <display-name></display-name>    
    7.         
    8.     <!-- 定义Struts 2的核心控制器 -->     
    9.     <filter>    
    10.         <filter-name>struts2</filter-name>    
    11.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    
    12.     </filter>    
    13.     <filter-mapping>    
    14.         <filter-name>struts2</filter-name>    
    15.         <url-pattern>*.action</url-pattern>    
    16.     </filter-mapping>    
    17.     
    18.     <listener>    
    19.         <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>    
    20.     </listener>    
    21.     
    22.     <welcome-file-list>    
    23.         <welcome-file>index.html</welcome-file>    
    24.         <welcome-file>index.htm</welcome-file>    
    25.         <welcome-file>index.jsp</welcome-file>    
    26.         <welcome-file>default.html</welcome-file>    
    27.         <welcome-file>default.htm</welcome-file>    
    28.         <welcome-file>default.jsp</welcome-file>    
    29.     </welcome-file-list>    
    30.     
    31. </web-app>  
    2、建立BaseAction。  
    新建包com.hsinghsu.testSSI.action,在其中建立类BaseAction,继承ActionSupport类。  
    BaseAction.java文件代码如下:
    1. package com.hsinghsu.testSSI.action;    
    2.     
    3. import com.opensymphony.xwork2.ActionSupport;    
    4.     
    5. public class BaseAction  extends ActionSupport{    
    6.     
    7.     /**   
    8.      *    
    9.      */    
    10.     private static final long serialVersionUID = 4565394360208096613L;    
    11.     
    12. }  
    3、编写测试struts的Action。  
    在包com.hsinghsu.testSSI.action中建立LoginAction类,继承BaseAction,作为简单的struts测试。  
    LoginAction.java文件代码如下:
    1. package com.hsinghsu.testSSI.action;    
    2.     
    3. public class LoginAction extends BaseAction {    
    4.     
    5.     /**   
    6.      *    
    7.      */    
    8.     private static final long serialVersionUID = -6144396976094110475L;    
    9.         
    10.     public String execute() throws Exception     
    11.     {      
    12.         return "success";      
    13.     }      
    14.     
    15. }  
    4、配置action。  
    在struts.xml文件中,添加对LoginAction的配置。  
    struts.xml文件代码如下:
    1. <?xml version="1.0" encoding="UTF-8" ?>    
    2.     
    3. <!DOCTYPE struts PUBLIC    
    4.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    
    5.     "http://struts.apache.org/dtds/struts-2.3.dtd">    
    6.     
    7. <struts>    
    8.     <constant name="struts.objectFactory" value="spring" />    
    9.     <constant name="struts.i18n.encoding" value="UTF-8" />    
    10.     <constant name="struts.i18n.reload" value="false" />    
    11.     <constant name="struts.configuration.xml.reload" value="false" />    
    12.     <constant name="struts.custom.i18n.resources" value="globalMessages" />    
    13.     <constant name="struts.action.extension" value="action,," />    
    14.     
    15.     <constant name="struts.convention.package.locators.basePackage"    
    16.               value="com.hsinghsu.testSSI.action" />    
    17.     <constant name="struts.convention.result.path" value="/" />    
    18.     <constant name="struts.serve.static" value="true" />    
    19.     <constant name="struts.serve.static.browserCache" value="false" />    
    20.         
    21.         
    22.     <package name="com.hsinghsu.testSSI.action.test" extends="struts-default">    
    23.         <action name="login" class="com.hsinghsu.testSSI.action.LoginAction">    
    24.             <result name="success">/jsp/welcome.jsp</result>    
    25.         </action>    
    26.     </package>    
    27.         
    28. </struts>  
    5、建立测试jsp页面  
    新建测试jsp页面welcome.jsp。  
    welcome.jsp文件代码如下:
    1. <%@ page language="java" pageEncoding="UTF-8"%>    
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    
    3. <html>    
    4. <head>    
    5. <title>IWelcome</title>    
    6. </head>    
    7. <body>    
    8. Welcome HsingHsu    
    9. </body>    
    10. </html>   
    6、配置spring  
    打开applicationContext.xml文件,配置spring,添加action bean。  
    applicationContext.xml文件代码如下:
    1. <?xml version="1.0" encoding="UTF-8"?>    
    2. <beans xmlns="http://www.springframework.org/schema/beans"    
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"    
    4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    
    5.     xmlns:context="http://www.springframework.org/schema/context"    
    6.     xsi:schemaLocation="    
    7.        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
    8.        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd    
    9.        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd    
    10.        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd    
    11.        ">    
    12.            
    13.     <bean id="loginAction" class="com.hsinghsu.testSSI.action.LoginAction"/>     
    14.          
    15. </beans>  
    7、配置Spring监听器  
    打开web.xml,添加Spring监听器。  
    web.xml文件代码如下:
    1. <?xml version="1.0" encoding="UTF-8"?>    
    2. <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"    
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     
    5.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">    
    6.     <display-name></display-name>    
    7.         
    8.     <context-param>    
    9.         <param-name>contextConfigLocation</param-name>    
    10.         <param-value>    
    11.         classpath:applicationContext.xml    
    12.         </param-value>    
    13.     </context-param>    
    14.     
    15.     <!-- ssh 中文过滤 -->    
    16.     <filter>    
    17.         <filter-name>characterEncoding</filter-name>    
    18.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    
    19.         <init-param>    
    20.             <param-name>encoding</param-name>    
    21.             <param-value>utf-8</param-value>    
    22.         </init-param>    
    23.         <init-param>    
    24.             <param-name>forceEncoding</param-name>    
    25.             <param-value>true</param-value>    
    26.         </init-param>    
    27.     </filter>    
    28.     <filter-mapping>    
    29.         <filter-name>characterEncoding</filter-name>    
    30.         <url-pattern>/*</url-pattern>    
    31.     </filter-mapping>    
    32.     
    33.     <!-- 定义Struts 2的核心控制器 -->     
    34.     <filter>    
    35.         <filter-name>struts2</filter-name>    
    36.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    
    37.     </filter>    
    38.     <filter-mapping>    
    39.         <filter-name>struts2</filter-name>    
    40.         <url-pattern>*.action</url-pattern>    
    41.     </filter-mapping>    
    42.     
    43.     <!-- 对Spring 容器进行实例化 -->    
    44.     <listener>    
    45.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    
    46.     </listener>    
    47.     <listener>    
    48.         <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>    
    49.     </listener>    
    50.     
    51.     <welcome-file-list>    
    52.         <welcome-file>index.html</welcome-file>    
    53.         <welcome-file>index.htm</welcome-file>    
    54.         <welcome-file>index.jsp</welcome-file>    
    55.         <welcome-file>default.html</welcome-file>    
    56.         <welcome-file>default.htm</welcome-file>    
    57.         <welcome-file>default.jsp</welcome-file>    
    58.     </welcome-file-list>    
    59.     
    60. </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文件代码如下:
    1. ibatis.connection.driver_class oracle.jdbc.driver.OracleDriver    
    2. ibatis.connection.url jdbc:oracle:thin:@10.127.58.1:1521:ora11g    
    3. ibatis.connection.username adm    
    4. ibatis.connection.password adm    
    5.     
    6. c3p0.acquireIncrement=3    
    7. c3p0.idleConnectionTextPeriod=900    
    8. c3p0.minPoolSize=2    
    9. c3p0.maxPoolSize=50    
    10. c3p0.maxStatements=100    
    11. c3p0.numHelperThreads=10    
    12. c3p0.maxIdleTime=600    
    13. c3p0.initialPoolSize=3   
    3、配置spring,添加ibatis支持。  
    修改applicationContext.xml文件,添加ibatis支持。  
    applicationContext.xml文件代码如下: 
    1. <?xml version="1.0" encoding="UTF-8"?>    
    2. <beans xmlns="http://www.springframework.org/schema/beans"    
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"    
    4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    
    5.     xmlns:context="http://www.springframework.org/schema/context"    
    6.     xsi:schemaLocation="    
    7.        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
    8.        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd    
    9.        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd    
    10.        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd    
    11.        ">    
    12.     
    13.     <bean id="placeholderConfig"    
    14.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    
    15.         <property name="location">    
    16.             <value>classpath:jdbc.oracle.properties</value>    
    17.         </property>    
    18.     </bean>    
    19.     
    20.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"    
    21.         destroy-method="close">    
    22.         <property name="jdbcUrl" value="${ibatis.connection.url}" />    
    23.         <property name="driverClass" value="${ibatis.connection.driver_class}" />    
    24.         <property name="user" value="${ibatis.connection.username}" />    
    25.         <property name="password" value="${ibatis.connection.password}" />    
    26.         <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />    
    27.         <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />    
    28.         <property name="minPoolSize" value="${c3p0.minPoolSize}" />    
    29.         <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />    
    30.         <property name="maxStatements" value="${c3p0.maxStatements}" />    
    31.         <property name="numHelperThreads" value="${c3p0.numHelperThreads}" />    
    32.         <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />    
    33.     </bean>    
    34.     
    35.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    
    36.         <property name="configLocation" value="classpath:sqlMapConfigMybatis.xml" />    
    37.         <property name="dataSource" ref="dataSource" />    
    38.     </bean>    
    39.     
    40.     <bean id="abstractDao" abstract="true">    
    41.         <property name="sqlSessionFactory" ref="sqlSessionFactory" />    
    42.     </bean>    
    43.         
    44.     <bean id="userDao"    
    45.         class="com.hsinghsu.testSSI.dao.impl.UserDaoImpl"    
    46.         parent="abstractDao" />    
    47.     
    48.     <context:component-scan base-package="com.hsinghsu.testSSI">    
    49.         <context:exclude-filter type="annotation"    
    50.             expression="org.springframework.stereotype.Controller" />    
    51.     </context:component-scan>    
    52.     
    53. </beans>  
    4、配置ibatis映射文件  
    新建sqlMapConfigMybatis.xml,添加ibatis映射文件  
    代码如下:
    1. <?xml version="1.0" encoding="UTF-8"?>      
    2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"      
    3.     "http://mybatis.org/dtd/mybatis-3-config.dtd">    
    4.     
    5. <configuration>    
    6.     <mappers>    
    7.         <!-- 配置sql语句文件 -->    
    8.         <mapper resource="com/hsinghsu/testSSI/data/User.xml" />    
    9.     </mappers>    
    10. </configuration>  
    5、创建持久层实体类。  
    创建包com.hsinghsu.testSSI.model,创建User类,添加5个私有成员,对应数据表中5个属性,并一定要添加set和get方法。  
    User.java文件代码如下:
    1. package com.hsinghsu.testSSI.model;    
    2.     
    3. public class User {    
    4.     
    5.     private Long id;    
    6.     private String name;    
    7.     private String pwd;    
    8.     private Long age;    
    9.     private Long sex;    
    10.     
    11.     public Long getId() {    
    12.         return id;    
    13.     }    
    14.     
    15.     public void setId(Long id) {    
    16.         this.id = id;    
    17.     }    
    18.     
    19.     public String getName() {    
    20.         return name;    
    21.     }    
    22.     
    23.     public void setName(String name) {    
    24.         this.name = name;    
    25.     }    
    26.     
    27.     public String getPwd() {    
    28.         return pwd;    
    29.     }    
    30.     
    31.     public void setPwd(String pwd) {    
    32.         this.pwd = pwd;    
    33.     }    
    34.     
    35.     public Long getAge() {    
    36.         return age;    
    37.     }    
    38.     
    39.     public void setAge(Long age) {    
    40.         this.age = age;    
    41.     }    
    42.     
    43.     public Long getSex() {    
    44.         return sex;    
    45.     }    
    46.     
    47.     public void setSex(Long sex) {    
    48.         this.sex = sex;    
    49.     }       
    50.     
    51. }   
    6、配置User映射文件  
    创建包com.hsinghsu.testSSI.data。该包主要放置对应类的映射文件。  
    新建User.xml,添加其sql的映射  
    代码如下:
    1. <?xml version="1.0" encoding="UTF-8"?>      
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"      
    3.      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">    
    4.     
    5. <mapper namespace="UserMapper">    
    6.     
    7.     <!-- select 语句,传参一个,返回User对象 。注:select id as id,name as name,pwd as pwd     
    8.         的as后面的名称要与User类中属性名称要一一对应 -->    
    9.     <select id="getUserByName" parameterType="String"    
    10.         resultType="com.hsinghsu.testSSI.model.User">    
    11.         select    
    12.         id as id,name as name,pwd as pwd    
    13.         from T_TEST_USER    
    14.         WHERE NAME = #{name}    
    15.     </select>    
    16.     
    17.     <insert id="insertUser" parameterType="com.hsinghsu.testSSI.model.User">    
    18.         insert into    
    19.         T_TEST_USER(ID,NAME,PWD,AGE,SEX)    
    20.         values(#{id},#{name},#{pwd},#{age},#{sex})    
    21.     </insert>    
    22.     
    23. </mapper>  
    五、编写java代码  
    1、编写DAO接口  
    新建包com.hsinghsu.testSSI.dao,创建接口UserDao。  
    UserDao.java文件代码如下:
    1. package com.hsinghsu.testSSI.dao;    
    2.     
    3. import com.hsinghsu.testSSI.model.User;    
    4.     
    5. public interface UserDao {    
    6.         
    7.     public User getUserByName(String name);    
    8.     
    9. }   
    2、编写DAO实现  
    新建包com.hsinghsu.testSSI.dao.impl,创建实现类UserDaoImpl。  
    UserDaoImpl.java文件代码如下:
    1. package com.hsinghsu.testSSI.dao.impl;    
    2.     
    3. import java.util.ArrayList;    
    4. import java.util.HashMap;    
    5. import java.util.List;    
    6. import java.util.Map;    
    7.     
    8. import org.mybatis.spring.support.SqlSessionDaoSupport;    
    9. import org.springframework.stereotype.Repository;    
    10.     
    11. import com.hsinghsu.testSSI.dao.UserDao;    
    12. import com.hsinghsu.testSSI.model.User;    
    13.     
    14. @Repository(value = "userDao")    
    15. public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {    
    16.     
    17.     @Override    
    18.     public User getUserByName(String name) {    
    19.     
    20.         User user = new User();    
    21.     
    22.         // select语句,传入一个参数,返回User对象  -------------------------------------------------------------------------    
    23.         user = getSqlSession().selectOne("UserMapper.getUserByName", name);// select语句,传入一个参数,返回User对象    
    24.     
    25.         //insert语句,传入一个对象  -------------------------------------------------------------------------------------    
    26.         User oneUser = new User();    
    27.         oneUser.setId(Long.parseLong("6"));    
    28.         oneUser.setName("go07");    
    29.         oneUser.setPwd("pesd07");    
    30.         oneUser.setAge(Long.parseLong("25"));    
    31.         oneUser.setSex(Long.parseLong("1"));    
    32.         //int result = getSqlSession().insert("UserMapper.insertUser",oneUser);//insert语句,传入一个对象    
    33.         //System.out.println("insert result:"+result);    
    34.             
    35.     
    36.         return user;    
    37.     }    
    38.     
    39. }   
    3、修改action类  
    编辑修改LoginAction类。  
    LoginAction.java文件代码如下:
    1. package com.hsinghsu.testSSI.action;    
    2.     
    3. import org.springframework.beans.factory.annotation.Autowired;    
    4.     
    5. import com.hsinghsu.testSSI.dao.UserDao;    
    6. import com.hsinghsu.testSSI.model.User;    
    7.     
    8. public class LoginAction extends BaseAction {    
    9.     
    10.     /**   
    11.      *    
    12.      */    
    13.     private static final long serialVersionUID = -439437585357651788L;    
    14.     
    15.     @Autowired    
    16.     private UserDao userDao;    
    17.     
    18.     private User user;    
    19.     
    20.     private String username;    
    21.     private String password;    
    22.     
    23.     public String execute() throws Exception {    
    24.         user = userDao.getUserByName(username);    
    25.         if (user != null) {    
    26.             if (user.getPwd().equals(password)) {    
    27.                 return SUCCESS;    
    28.             }    
    29.         }    
    30.         return ERROR;    
    31.     }    
    32.     
    33.     public String getUsername() {    
    34.         return username;    
    35.     }    
    36.     
    37.     public void setUsername(String username) {    
    38.         this.username = username;    
    39.     }    
    40.     
    41.     public String getPassword() {    
    42.         return password;    
    43.     }    
    44.     
    45.     public void setPassword(String password) {    
    46.         this.password = password;    
    47.     }    
    48.     
    49. }    
    4、新建用户登录页面。  
    添加login.jsp。  
    login.jsp文件代码如下:
    1. <%@ page language="java" pageEncoding="UTF-8"%>    
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    
    3. <html>    
    4. <head>    
    5. <title>Insert title here</title>    
    6. </head>    
    7. <body>    
    8.     <form action="mylogin.action" method="post">      
    9.         Username:<input type="text" name="username"/><br/>      
    10.         Password:<input type="password" name="password"/><br/>      
    11.         <input type="submit" value="Submit"/>       
    12.     </form>    
    13. </body>    
    14. </html>  
    5、修改struts.xml配置文件  
    struts.xml文件代码如下:
    1. <?xml version="1.0" encoding="UTF-8" ?>    
    2.     
    3. <!DOCTYPE struts PUBLIC    
    4.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    
    5.     "http://struts.apache.org/dtds/struts-2.3.dtd">    
    6.     
    7. <struts>    
    8.     <constant name="struts.objectFactory" value="spring" />    
    9.     <constant name="struts.i18n.encoding" value="UTF-8" />    
    10.     <constant name="struts.i18n.reload" value="false" />    
    11.     <constant name="struts.configuration.xml.reload" value="false" />    
    12.     <constant name="struts.custom.i18n.resources" value="globalMessages" />    
    13.     <constant name="struts.action.extension" value="action,," />    
    14.     
    15.     <constant name="struts.convention.package.locators.basePackage"    
    16.               value="com.hsinghsu.testSSI.action" />    
    17.     <constant name="struts.convention.result.path" value="/" />    
    18.     <constant name="struts.serve.static" value="true" />    
    19.     <constant name="struts.serve.static.browserCache" value="false" />    
    20.         
    21.         
    22.     <package name="com.hsinghsu.testSSI.action.test" extends="struts-default">    
    23.         <action name="login" class="com.hsinghsu.testSSI.action.LoginAction">    
    24.             <result name="success">/jsp/welcome.jsp</result>    
    25.         </action>    
    26.             
    27.         <action name="mylogin" class="com.hsinghsu.testSSI.action.LoginAction">     
    28.             <result name="success">/jsp/welcome.jsp</result>    
    29.             <result name="error">/jsp/login.jsp</result>    
    30.         </action>    
    31.     </package>    
    32.         
    33. </struts>  
    6、运行tomcat,在浏览器中输入http://localhost:8686/testSSI/jsp/login.jsp 会显示登录页面,如果成功会显示welcome 。失败则会继续要求登录。  
      
    注: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文件夹下。
    展开全文
  • ssi框架整合 空闲时间整理出来的,写了一个简单的查询例子
  • ssi框架demo

    热门讨论 2014-08-27 14:44:37
    ssi框架demo
  • SSI框架整合

    2015-11-10 21:51:09
    SSI框架整合代码包,比较齐全,可以适当筛选
  • ssi框架整合

    2015-08-26 13:50:26
    有助于了解ssi框架,方便初学者更好的学习Java框架知识
  • SSI框架搭建

    2013-04-01 17:34:26
    SSI框架搭建
  • ssi框架源代码

    2016-12-05 16:15:35
    ssi框架源代码
  • ssi框架整合项目笔记

    2019-01-24 09:34:55
    ssi框架整合项目笔记
  • SSI框架讲解

    2015-12-19 10:44:17
    文件包括一个简单的SSI框架,对于每部分的映射关系都做了详细的讲解与对应。
  • ssi 框架搭建

    2014-10-16 10:19:18
    ssi 框架搭建 功能上面不怎么完善 只能参考参考
  • SSI框架总结

    2015-12-19 10:38:51
    文件包括一个一个简单的SSI框架,对于每部分的映射关系都做了详细的讲解与对应。
  • ssi 框架组合

    2012-04-13 07:47:46
    ssi 框架组合
  • SSI框架实例

    2015-01-26 21:24:50
    ssi框架搭的项目实例,实现了登录,增删改功能,简单的一个例子
  • 基础ssi框架

    2014-09-24 15:43:59
    jsp 一个基本的ssi框架,实现了对用户的增删改查
  • SSI框架学习

    2013-06-29 16:25:27
    SSI 框架搭建,自己学习使用;供初学者学习
  • SSI框架项目Demo

    2014-09-29 18:15:19
    SSI框架项目Demo
  • ssi框架搭建

    2012-05-29 15:20:31
    ssi框架搭建 struts2 ibatis spring
  • ssi框架简单搭建

    2016-02-01 11:13:17
    Java开发的简单ssi框架,适用于初学者
  • SSI框架集成

    2013-01-01 17:45:45
    SSi框架集成的详细讲解,是初学者的选择 里面是PPT教程 能让学习者简单明了的的掌握这个框架
  • SSI框架demo

    2011-10-19 09:21:45
    SSI框架demo,集成spring3.0系列。
  • ssi框架搭建现成

    2015-06-10 21:57:15
    已搭建好的SSI框架,直接上手业务代码,无需额外添加
  • SSI框架jar包

    2015-11-16 16:06:38
    SSI框架所需的一些jar包,经本人试验基本可以使用。(本人很少做过类似开发)
  • SSi框架整合

    2015-08-25 09:06:32
    SSI框架搭建

    今年7月加入了中兴通讯,进了安全平台部门,在进来之前完全不知道是做什么的,怀揣着一颗不安的新,就这么进了项目组,见到了师傅。由于这边的新员工培训机制,我领导了长达6个月的培养计划,其中的只要任务就是学习SSI框架与ExtJS5.

    由于原来真心没有做过SSI框架的Web项目,所以一切都从头开始,SSI9基础搭建攻略。由于项目是由Eclipse创建的动态web项目,并使用sencha cmd命令在WebContent目录下直接生成的extjs项目,所以在WEB-INF目录下找不到classes文件夹,这对后面的配置产生了一定的影响。
    
    
    
    项目使用ibatis-2.3.2.715、spring-3.0.5、struts-2.3.24、postpreSQL9.3搭建。本人的搭建顺序是Struts-->Spring-->ibatis。
    

    前往stuts官网下载struts2完全版http://struts.apache.org/download.cgi#struts2324
    将struts/lib目录下的核心jar包导入到web项目的WEB-INF/lib目录:commons-fileupload、commons-io、freemarker、javassist、ognl、struts2-core。xwork-core。

    首先要在web项目的web.xml文件中进行spring和struts的配置,在原本web.xml内容的基础上添加如下配置:

    <!--  struts2配置 -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <!--  让Struts2的核心Filter拦截所有请求 -->
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <!--  Spring 监听器 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>WEB-INF/classes/applicationContext.xml</param-value>
        </context-param>

    其中struts拦截的是所有的类型的请求,spring监听器中param-value的值是spring配置文件applicationcontext.xml的路径,由于eclipse会自动将该文件加载到WEB-INF/classes目录下,所以配置时直接配置在classes目录下即可。

    接下来是在src根目录下创建struts配置文件,struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
        "http://struts.apache.org/dtds/struts-2.1.7.dtd">
    
     <struts>
         <!--struts2的action由spring来负责实例化,指定struts默认的ObjectBean -->
        <constant name="struts.objectFactory" value="spring" /> 
        <package name="default" namespace="/" extends="struts-default">  
            <action name="login" class="com.zwb.action.LoginAction" method="login">
            </action>
        </package>
     </struts>

    namespace:命名空间,默认为’/’,如果未填,当你页面请求action时就会到根目录寻找包名为login下的action,如果你填写了namespace为’/’,就会到相应的目录下寻找,如果没找到,还会到根目录下继续寻找对应的action,如果还是未找到就会报错
    extends:类似于java中的继承特征,extends=”struts-default”就是继承struts-default.xml,它里面定义了许多跳转类型、拦截器等一些常用的东西。

    这里的action实例是一个登陆action,loginAction代码如下:

    package com.zwb.action;
    import java.io.IOException;
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.zwb.dao.UserDao;
    import com.zwb.model.User;
    public class LoginAction extends ActionSupport {
        private String userName;
        private String passWord;
        boolean resultBoolean = false;  
        private static final long serialVersionUID = 1L;    
        private UserDao userDao;
    
        public UserDao getUserDao() {
            return userDao;
        }
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    
    
        public void login()
        {
            //todo
        }
    }

    这个action中的重点为action类要继承自ActionSupport 类,如果不在struts.xml中配置action对应的方法的话,则必须重写ActionSupport 类的execute方法;申明userdao类,并完成get和set方法,为spring依赖注入做准备。至此struts2的配置就基本完成了,下面开始配置spring,继续在lib目录下导入spring的核心jar包。

    在src目录下创建spring配置文件applicationContext.xml:

        <bean id="LoginAction" class="com.zwb.action.LoginAction">
            <property name="userDao" ref="userDao" />
        </bean>
        <bean id="userDao" class="com.zwb.daoImpl.UserDaoImpl">
             <property name="dataSource" ref ="dataSource"/>
            <property name="sqlMapClient" ref ="sqlMapClient"/> 
        </bean>

    这边的loginAction就是struts中的配置的action的bean,根据依赖关系,需要继续配置userdao类,userdao类又是需要对数据库进行操作的实体,所以需要开始配置dataSource与sqlMapClient,这里我们先配置dataSource,还是在applicationContext.xml文件中加入如下配置,数据库使用的postpresql9.3版本,并且数据库配置信息是直接写死的,在以后改进中可以使用el表达式从配置文件中获取,在此处先暂时直接这么做。

    <bean id="dataSource"
            class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName">
                <value>org.postgresql.Driver</value>
            </property>
            <property name="url">
                <value>jdbc:postgresql://localhost:5432/extjstest</value>
                <!-- jdbc:mysql://127.0.0.1/test -->
            </property>
            <property name="username">
                <value>postgres</value>
            </property>
            <property name="password">
                <value>123456</value>
            </property>
            <property name="maxActive">
                <value>40</value>
            </property>
            <property name="maxIdle">
                <value>10</value>
            </property>
            <property name="maxWait">
                <value>18000</value>
            </property>
            <property name="defaultAutoCommit">
                <value>true</value>
            </property>
        </bean>

    sqlMapClient配置如下,依旧在spring配置文件中:

    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">   
            <property name="configLocation">   
                <value>WEB-INF/sqlMapConfig.xml</value>   
            </property>   
            <property name="dataSource" ref="dataSource"/>
        </bean> 
        <!-- Spring iBatisTemplate -->
        <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
              <property name="sqlMapClient">
                  <ref bean="sqlMapClient"/>
              </property>
        </bean>

    SqlMapClientTemplate是org.springframework.orm.ibatis下的
    而SqlMapClient是ibatis的
    SqlMapClientTemplate是SqlMapClient的封装类.
    SqlMapClient中包含着session的管理.
    SqlMapClientTemplate用于session的封装,以及异常的捕捉.
    所以按照以上的推断来说.应该尽量使用SqlMapClientTemplate.
    保证session以及Exception的正常以及统一。
    这里需要导入ibatis的jar包,并且在WEB-INF目录下创建sqlMapConfig.xml的ibatis的配置文件:

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE sqlMapConfig 
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" 
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    <sqlMapConfig>
            <settings
                cacheModelsEnabled="true"
                enhancementEnabled="true"
                lazyLoadingEnabled="true" 
                 errorTracingEnabled="true"
                 maxRequests="32"
                 maxSessions="10"
                 maxTransactions="5" 
                 useStatementNamespaces="false" 
                 />
                 <sqlMap resource="com/zwb/dao/sqlMap/User.xml" /> 
    </sqlMapConfig>
    • maxRequests

      同时执行 SQL 语句的最大线程数。大于这个值的线程将阻塞直到另一个线程执行完成。不同的 DBMS有不同的限制值,但任何数据库都有这些限制。通常这个值应该至少是maxTransactions(参见以下)的 10 倍,并且总 是大于 maxSessions 和maxTranactions。减小这个参数值通常能提高性能。

      例如:maxRequests=“256”
      缺省值:512

    • maxSessions

      同一时间内活动的最大 session 数。一个 session 可以maxSessions是代码请求的显式 session,也可以是当线程使用SqlMapClient 实例(即执行一条语句)自动获得的session。它应该总是大于或等于 maxTransactions 并小于 maxRequests。减小这个参数值通常能减少内存使用。

      例如:maxSessions=“64”
      缺省值:128

    • maxTransactions

      同时进入 SqlMapClient.startTransaction()的最大线程maxTransactions 数。大于这个值的线程将阻塞直到另一个线程退出。不同的 DBMS 有不同的限制值,但任何数据库都有这些限制。这个参数值应该总是小于或等于maxSessions 并总是远远小于 maxRequests。减小这个参数值通常能提高性能。

      例如:maxTransactions=“16”
      缺省值:32

    • cacheModelsEnabled

      全局性地启用或禁用 SqlMapClient 的所有缓存cacheModelsEnabled model。调试程序时使用。

      例如:cacheModelsEnabled=“true”
      缺省值:true(启用)

    • lazyLoadingEnabled

      全局性地启用或禁用SqlMapClient的所有延迟加载。lazyLoadingEnabled 调试程序时使用。
      例子:lazyLoadingEnabled=“true”
      缺省值:true(启用)

    • enhancementEnabled

      全局性地启用或禁用运行时字节码增强,以优化访enhancementEnabled
      问Java Bean属性的性能,同时优化延迟加载的性能。

      例子:enhancementEnabled=“true”
      缺省值:false(禁用)

    • useStatementNamespaces

      如果启用本属性,必须使用全限定名来引用 mapped useStatementNamespaces
      statement。Mapped statement 的全限定名由 sql-map 的名称和 mapped-statement 的名称合成。例如: queryForObject(“sqlMapName.statementName”);

      例如:useStatementNamespaces=“false”
      缺省值:false(禁用)

    • defaultStatementTimeout

      此设置值必须为一个整数,作为JDBC连接超时的时间,这个值可以被任意一个映射文件的statement属性来重新设置,
      如果没有指明,查询将无超时时间限制除非在映射文件中设置statement属性值。被设置的值以秒为单位等待连接失效

    • classInfoCacheEnabled

      With this setting enabled, iBATIS will maintain a cache of introspected
      classes. This will lead to a significant reduction in startup time if many
      classes are reused.
      例如: classInfoCacheEnabled=“true”
      缺省值: true (启用)

    • statementCachingEnabled

      (iBATIS 2.3.0以后版本中有)
      With this setting enabled, iBATIS will maintain a local cache of
      prepared statements. This can lead to significant performance
      improvements.
      例如: statementCachingEnabled=“true”
      缺省值: true (启用)

    <sqlMap resource="com/zwb/dao/sqlMap/User.xml" />

    这个配置信息指向的就是存放具体sql语句的配置文件,由于sql语句较多,建议分开,归类存放。

    <sqlMap namespace="User">
        <select id="searchUser" resultClass="com.zwb.model.User"
                parameterClass="com.zwb.model.User" remapResults="true">
    
         SELECT *
            FROM userImformation
            where userName = #userName# and passWord=#passWord#         
        </select>
      </sqlMap>

    至此SSI框架的搭建的就完成了,下面运行一下吧~

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 913
精华内容 365
关键字:

ssi框架