利用Spring+Struts2实现列表显示
编写DAO
引入spring开发包和applicationContext.xml
<!-- spring ioc\aop --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.12.RELEASE</version> </dependency> <!-- dao --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.12.RELEASE</version> </dependency> <!-- mysql驱动包、连接池 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.2</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency>
在Spring中配置DataSource组件
<!-- 连接池配置 --> <bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="root"></property> <property name="password" value="1234"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/studyonline"></property> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> </bean>
在Spring中配置JdbcTemplate组件
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate"> <constructor-arg index="0" ref="c3p0"></constructor-arg> </bean>
根据操作表编写实体类
Direction.java
编写Dao接口和实现类
接口
public interface DirectionDao { public List<Direction> findAll(); }
实现类(扫描、注入JdbcTemplate)
@Repository("directionDao") public class DirectionDaoImpl implements DirectionDao{ @Autowired private JdbcTemplate template; public List<Direction> findAll() { String sql = "select * from direction"; RowMapper<Direction> rowMapper = new BeanPropertyRowMapper<Direction>(Direction.class); List<Direction> list = template.query(sql, rowMapper); return list; } }
扫描配置
<context:component-scan base-package="cn.xdl"/>
Struts2和Spring结合
将Action扫描到Spring容器,注入DAO
@ParentPackage("struts-default") //@Namespace("/") @Controller @Scope("prototype") public class ListAction { private List<Direction> list; @Autowired private DirectionDao directionDao; @Action(value="list",results={@Result(location="/list.jsp")}) public String list(){ //调用DAO查询数据表集合 list = directionDao.findAll(); return "success"; } //省略set和get }
引入struts2-spring-plugin.jar包
作用:能使Struts2框架访问Spring容器,从容器中调用Action对象。
<!-- struts2整合spring --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.12</version> </dependency>
在web.xml配置ContextLoaderListener
作用:在服务器启动时,实例化Spring容器以及内部组件对象。
<!-- 配置Listener,用于tomcat启动时实例化Spring容器对象 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 指定spring容器的xml配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>