原文地址:http://blog.csdn.net/sapce_fish/article/details/52900750
本文采用struts2,spring,jdbc搭建web框架,使用正向工程;IDE用myeclipse,数据库用Mysql。
- 搭建项目包结构
- 引入相关jar包
- 添加struts
- 添加spring
- 完善dao层操作数据库
- 测试
1.查询测试
2.事务测试
相关文章
Java——JDBC操作数据库,分页查询 http://blog.csdn.net/sapce_fish/article/details/52764678
JavaWeb——SSH(struts2,spring,hibernate)框架,正向工程 http://blog.csdn.net/sapce_fish/article/details/52900871
JavaWeb——SSM(struts2,spring,mybatis)框架,正向工程 http://blog.csdn.net/sapce_fish/article/details/52900879
搭建项目包结构
包结构如下
- action 层主要处理请求响应
- service 层处理业务逻辑
- dao 层持久层对数据库进行操作
- entity 存放实体
- util 存放工具类
引入相关jar包
添加struts
1.新建struts.xml文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="true" /> <constant name="struts.action.extension" value="action" /> <constant name="struts.ui.theme" value="simple" /> <package name="web-default" extends="struts-default" namespace="/"> <action name="web_*" class="userAction" method="{1}"> <result name="index">/WEB-INF/jsp/index.jsp</result> </action> </package> </struts>2.打开WEB-INF下的web.xml新增如下配置:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts/struts.xml</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
添加spring
1.新建web.properties文件,文件内容如下:
jdbc.className=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/web_demo jdbc.username=root jdbc.password=1234567892.新建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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-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"> <!-- 加载properties配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>WEB-INF/classes/web.properties</value> </property> </bean> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.className}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <bean id="jdbc" class="org.springframework.jdbc.core.JdbcTemplate"> <constructor-arg ref="dataSource" /> </bean> <!-- 定义事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 定义切入点 --> <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* com.space.service.imp.*.*(..))" /> <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"/> </aop:config> <!-- 定义事务通知 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="get*" propagation="REQUIRED" read-only="true"/> <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" /> </tx:attributes> </tx:advice> <!-- 声明使用注解式事务 --> <!-- <tx:annotation-driven transaction-manager="transactionManager" /> --> <bean id="userAction" class="com.space.action.UserAction"> <property name="userService" ref="userService"></property> </bean> <bean id="userService" class="com.space.service.imp.UserService"> <property name="userDao" ref="userDao"></property> </bean> <bean id="userDao" class="com.space.dao.imp.UserDao"> <property name="jdbc" ref="jdbc"></property> </bean> </beans>
完善dao层操作数据库
在dao中添加相关方法操作数据库,demo中UserDao代码如下:
package com.space.dao.imp; import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; import com.space.dao.IUserDao; import com.space.entity.User; import com.space.entity.UserRowMapper; public class UserDao implements IUserDao{ private JdbcTemplate jdbc; public List<User> findAllForList(){ return jdbc.query("select * from user", new UserRowMapper()); } public int addUser(User user){ System.out.println("调用jdbc.update方法"); String sql = "insert into user (name,sex,depart_id) values (?,?,?)"; Object[] values = new Object[]{user.getName(),user.getSex(),user.getDepart().getId()}; return jdbc.update(sql, values); } public JdbcTemplate getJdbc() { return jdbc; } public void setJdbc(JdbcTemplate jdbc) { this.jdbc = jdbc; } }
测试
1.查询测试
将项目部署到web服务器上后在浏览器中输入地址,得到如下结果:
地址:http://localhost:8090/WebDemoSSJDBC/web_findAll.action结果:
[{"id":1,"name":"张三","sex":1,"depart":{"id":1}},{"id":3,"name":"李四","sex":0,"depart":{"id":2}},{"id":4,"name":"王五","sex":0,"depart":{"id":3}},{"id":5,"name":"赵六","sex":1,"depart":{"id":1}},{"id":6,"name":"老七","sex":1,"depart":{"id":2}}]2.事务测试
service主要调用代码//测试事务 public int saveTransaction(){ int i=0,j=0,k=0; i = userDao.addUser(new User("姓名1", 1, new Depart(1))); j = userDao.addUser(new User("姓名2", 2, new Depart(2))); k = userDao.addUser(new User("姓名3", 2, new Depart(0)));//此部门不存在,此次插入会抛出异常 return (i > 0 && j > 0 && k > 0)?(i+j+k):-1; }直接在浏览器中输入http://localhost:8090/WebDemoSSJDBC/web_testTransaction.action会发现抛出异常,查看数据库发现三条数据均未插入,原因是在插入第三条数据时,部门0不存在,接下来我们将第三条的部门0改成3再试一下
//测试事务 public int saveTransaction(){ int i=0,j=0,k=0; i = userDao.addUser(new User("姓名1", 1, new Depart(1))); j = userDao.addUser(new User("姓名2", 2, new Depart(2))); k = userDao.addUser(new User("姓名3", 2, new Depart(3)));//此部门存在,能正常插入 return (i > 0 && j > 0 && k > 0)?(i+j+k):-1; }结果:返回3,查看数据库发现插入三条数据
至此已经介绍了SSJDBC框架的搭建
如果有不明白的地方可以留言。有写错或者不好的地方欢迎指正
本文详细介绍了如何使用Struts2、Spring和JDBC搭建JavaWeb应用,包括项目包结构设计、相关库引入、Struts和Spring配置、DAO层数据库操作及事务测试。通过实例演示了查询和事务处理功能,并提供了项目源码下载链接。
框架,正向工程&spm=1001.2101.3001.5002&articleId=52900750&d=1&t=3&u=8e1fe68aaeff41e98f349b679b3c2cb2)
2864

被折叠的 条评论
为什么被折叠?



