Spring(六)SSM(Spring3+Struts2+MyBatis+JDK1.7)

4 篇文章 0 订阅
3 篇文章 0 订阅

Spring集成struts2时,不用spring自身的mvc,因为Struts自身是MVC框架
jar包

注意:遇到相同名称的Jar包,删掉低版本的。

这里写图片描述
拷贝jar包Struts->app->strut2-blank->WEB_INF\lib中拷Struts的jar包+struts对spring提供的包。

实体类

public class Dept implements java.io.Serializable {
    private static final long serialVersionUID = 1L;
    private Integer id;
    private String dname;
    private String dnumber;
    private String dloc;
}

Dao层

1.接口

package com.spring.dao;
import java.util.List;
import com.spring.entity.Dept;
public interface DeptMapper {
    List<Dept> findDept();
}

2.对应的映射文件

<?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="com.spring.dao.DeptMapper">
    <select id="findDept" resultMap="deptMapper">
        select * from dept
    </select>
    <resultMap type="Dept" id="deptMapper">
        <id property="id" column="id" />
        <result property="dname" column="dname" />
        <result property="dnumber" column="dnumber"/> 
        <result property="dloc" column="dloc"/> 
    </resultMap>
</mapper>

Service层

package com.spring.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.spring.dao.DeptMapper;
import com.spring.entity.Dept;
@Service
public class DeptService{
    //注意该注解的书写位置
    @Resource(name="deptMapper")
    private DeptMapper deptMapper;
    public List<Dept> findDept(){
        return deptMapper.findDept();
    }
}

控制层
此时的控制层不在用controller,而用action,先创建一个公用的action类,继承ActionSupport其中书写转换为Json的方法。

package com.spring.until;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
public class CommAction extends ActionSupport {
    private static final long serialVersionUID = 1L;
    public void toJson(Object obj) throws IOException{  
        HttpServletResponse response= ServletActionContext.getResponse();
        response.setCharacterEncoding("utf-8");
        PrintWriter out=response.getWriter();
        out.print(new Gson().toJson(obj));
        out.flush();
        out.close();
    }
}

测试需要的控制类,继承公用的action类,其中引用一个service层的类,实现该类的set方法,并调用其中的方法。

package com.spring.action;
import java.io.IOException;
import java.util.List;
import com.spring.entity.Dept;
import com.spring.service.DeptService;
import com.spring.until.CommAction;
public class DeptAction extends CommAction{
    private DeptService deptService;
    public void setDeptService(DeptService deptService) {
        this.deptService = deptService;
    }
    public void findDept() throws IOException{
         List<Dept> list= deptService.findDept();
         toJson(list);
    }
}

配置文件

src下创建struts2的配置文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- 访问路径的后缀名在struts中配置一个常量,多个之间用,隔开-->
    <constant name="struts.action.extension" value="action,do"></constant>
    <package name="myaction" extends="struts-default">
        <!-- action标签中的class属性配置的不是真正的控制器类,而是一个逻辑名称, 真正的控制器在spring容器文件中配置,将struts用户定义控制器交给spring去管理即可 多个再写action标签name是给页面提供的访问路径-->
        <action name="deptAction" class="deptAction" />
    </package>
</struts>

application.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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="mydataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1/mydatabase" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="mydataSource" />
        <property name="typeAliasesPackage" value="com.spring.entity" />
        <property name="mapperLocations" value="classpath*:com/spring/dao/*Mapper.xml" />
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.spring.dao" />
    </bean>
    <bean id="deptService" class="com.spring.service.DeptService"></bean>
        <!-- 配置struts2用户定义的控制器在spring容器中,id就是struts中要用到的逻辑名称 -->
    <bean id="deptAction" class="com.spring.action.DeptAction">
    <property name="deptService" ref="deptService"></property>
    </bean>
</beans>

web.xml

struts的过滤器,和spring的监听器以及配置文件的引入

<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>/*</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值