【SSH】Spring 整合 Struts

添加 spring-struts-3.2.9.RELEASE.jar

struts-config.xml 添加

<controller>
        <set-property property="processorClass"
                      value="org.springframework.web.struts.DelegatingRequestProcessor"></set-property>
    </controller>

applicationContext.xml

<!--配置 action-->
    <bean name="/login" class="k.action.LoginAction" scope="prototype"/>
    <bean name="/employee" class="k.action.EmployeeAction" scope="prototype"/>

struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

    <form-beans>
        <form-bean name="employeeForm" type="k.form.EmployeeForm">
            <form-property name="id" type="java.lang.Integer"></form-property>
            <form-property name="name" type="java.lang.String"></form-property>
            <form-property name="password" type="java.lang.String"></form-property>
        </form-bean>
    </form-beans>

    <global-forwards>
        <forward name="ok" path="/WEB-INF/jsp/ok.jsp"></forward>
        <forward name="err" path="/WEB-INF/jsp/err.jsp"></forward>
    </global-forwards>

    <action-mappings>
        <action name="employeeForm" path="/login" parameter="action" type="k.action.LoginAction"
                scope="request" attribute="employeeForm" input="index.jsp" validate="false">
            <forward name="main" path="/WEB-INF/jsp/main.jsp"></forward>
            <forward name="loginJsp" path="/WEB-INF/jsp/login.jsp"></forward>
        </action>
        <action name="employeeForm" path="/employee" parameter="action" type="k.action.EmployeeAction"
                scope="request" attribute="employeeForm" input="index.jsp" validate="false">
            <forward name="addEmployeeUI" path="/WEB-INF/jsp/addEmployeeUI.jsp"></forward>
            <forward name="loginJsp" path="/WEB-INF/jsp/login.jsp"></forward>
        </action>
    </action-mappings>

    <controller>
        <set-property property="processorClass"
                      value="org.springframework.web.struts.DelegatingRequestProcessor"></set-property>
    </controller>

</struts-config>

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-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd ">

    <!-- 加载db.properties文件 -->
    <bean id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="locations" value="classpath*:*.properties"/>
    </bean>

    <!-- 配置配置数据库信息(替代mybatis的配置文件conf.xml) -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driver}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
        <property name="initialSize" value="${initialSize}"></property>
        <property name="maxActive" value="${maxActive}"></property>
        <property name="maxIdle" value="${maxIdle}"></property>
        <property name="minIdle" value="${minIdle}"></property>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- //加载实体类的映射文件位置及名称 -->
        <property name="mappingLocations" value="classpath:k/bean/*.hbm.xml"></property>
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    </bean>

    <!--事务-->
    <bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <!--开启注解配置-->
    <context:annotation-config/>

    <!--配置 action-->
    <bean name="/login" class="k.action.LoginAction" scope="prototype"/>
    <bean name="/employee" class="k.action.EmployeeAction" scope="prototype"/>

    <!--配置 Service-->
    <bean name="testService" class="k.service.TestService"/>
    <bean name="employeeService" class="k.service.impl.EmployeeServiceImpl"/>
    <bean name="departmentService" class="k.service.impl.DepartmentServiceImpl"/>

</beans>

LoginAction

public class LoginAction extends DispatchAction {

    @Resource
    private EmployeeService employeeService;

    public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        return mapping.findForward("loginJsp");
    }

    public ActionForward doLogin(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        EmployeeForm employeeOld = (EmployeeForm) form;
        Employee employee = new Employee(Integer.parseInt(employeeOld.getId()), employeeOld.getPassword());
        employee = employeeService.checkEmployee(employee);
        if (employee != null) {
            request.getSession().setAttribute("employee", employee);
            return mapping.findForward("main");
        }
        return mapping.findForward("err");
    }

    public ActionForward loginOut(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        return super.execute(mapping, form, request, response);
    }
}