JavaWeb——SSJDBC(struts2,spring,jdbc)框架,正向工程

原文地址:http://blog.csdn.net/sapce_fish/article/details/52900750

本文采用struts2,spring,jdbc搭建web框架,使用正向工程;IDE用myeclipse,数据库用Mysql。

  • 搭建项目包结构
  • 引入相关jar包
  • 添加struts
  • 添加spring
  • 完善dao层操作数据库
  • 测试
    1.查询测试
    2.事务测试

demo下载地址:http://download.csdn.net/detail/sapce_fish/9661540

相关文章

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

搭建项目包结构

包结构如下
JavaWeb——SSJDBC(struts2,spring,jdbc)框架,正向工程_第1张图片

  • action 层主要处理请求响应
  • service 层处理业务逻辑
  • dao 层持久层对数据库进行操作
  • entity 存放实体
  • util 存放工具类

引入相关jar包

相关jar包下载http://download.csdn.net/detail/sapce_fish/9661450
JavaWeb——SSJDBC(struts2,spring,jdbc)框架,正向工程_第2张图片

添加struts

1.新建struts.xml文件,文件内容如下:



<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.jspresult>
         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=123456789

2.新建applicationContext.xml文件,文件内容如下:


<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">
    
    <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <value>WEB-INF/classes/web.propertiesvalue>
        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>
      
    
    <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 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框架的搭建
如果有不明白的地方可以留言。有写错或者不好的地方欢迎指正

你可能感兴趣的:(JavaWeb)