自已学过Struts2+Hibernate
本来进公司前简历上就写明了不会Spring现在一进公司老大给了一段不完整而且不规范又没有注释文档的代码 要我仿写实在是搞不定了跪求大虾帮忙我先把我写的代码贴到这上面,如果能帮我的也可加我Q281841698 我可以传完整的我写的代码大体情况:
1.流程 jsp提交表单--action调用--service调用---dao完成数据库CRUD操作
实现技术:struts2+spring2.x
2.程序所用的是Oracle自带的emp表 ------------------------Action------------------
package com.crud.action;import java.util.Date;
import java.util.List;
import java.util.Map;
 import com.crud.interfac.IEmpService;
import com.crud.vo.Emp;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")
public class OperAction extends ActionSupport {
private IEmpService iempService;
private Emp emp;
private int empNo;
private Emp empName;
private String job;
 
private float sal;
private float comm; public Emp getEmp() {
return emp;
} public void setEmp(Emp emp) {
this.emp = emp;
} public int getEmpNo() {
return empNo;
} public void setEmpNo(int empNo) {
this.empNo = empNo;
} public Emp getEmpName() {
return empName;
} public void setEmpName(Emp empName) {
this.empName = empName;
} public String getJob() {
return job;
} public void setJob(String job) {
this.job = job;
} public float getSal() {
return sal;
} public void setSal(float sal) {
this.sal = sal;
} public float getComm() {
return comm;
} public void setComm(float comm) {
this.comm = comm;
} public IEmpService getIempService() {
return iempService;
} public void setIempService(IEmpService iempService) {
this.iempService = iempService;
} public void doCreate() throws Exception {
this.iempService.doCreate(emp);
} public void doDelete(Emp empNo) throws Exception {
this.iempService.doDelete(empNo);
} public void doUpdate(Emp emp) throws Exception {
this.iempService.doUpdate(emp);
} public String findByName() throws Exception {
List<Emp> ListEmp=this.iempService.findByName(empName);
Map request=(Map)ActionContext.getContext().get("request");
request.put("empList", ListEmp);
return "SUCCESS";
}
}------------------------EmpDAO------------------
package com.crud.dao;import java.util.List;import javax.sql.DataSource;import org.springframework.jdbc.core.JdbcTemplate;
 
import com.crud.interfac.IEmpDAO;
import com.crud.mapping.RowMapping;
import com.crud.vo.Emp;public class EmpDAO implements IEmpDAO {
JdbcTemplate jdbcTempl;
 
public void setDataSource(DataSource dataSource){
 this.jdbcTempl=new JdbcTemplate(dataSource);
}

@Override
public void doCreate(Emp emp) throws Exception {
String sql="INSERT INTO emp(empNo,empName,job,hiredate,sal,comm) values(?,?,?,?,?,?)";
this.jdbcTempl.update(sql,new Object[]{emp.getEmpNo(),emp.getEmpName(),emp.getJob(),emp.getSal(),emp.getComm()},new int[]{java.sql.Types.NUMERIC,java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,java.sql.Types.NUMERIC,java.sql.Types.NUMERIC});
 
} @Override
public void doDelete(Emp empNo) throws Exception {
String sql="DELTE FROM emp where empNo=?";
this.jdbcTempl.update(sql,new Object[]{empNo},new int[]{java.sql.Types.NUMERIC});
 
} @Override
public void doUpdate(Emp emp) throws Exception {
String sql="UPDATE emp SET empName=?,job=?,sal=?,comm=? where empNo=?";
this.jdbcTempl.update(sql,new Object[]{emp.getEmpName(),emp.getJob(),emp.getSal(),emp.getComm()},new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,java.sql.Types.DATE,java.sql.Types.NUMERIC,java.sql.Types.NUMERIC});
 
} @SuppressWarnings("unchecked")
@Override
public List<Emp> findByName(Emp empName)throws Exception {
String sql="SELECT empNo,job,hiredate,sal,comm FROM emp WHERE empName like' "+empName+"%'";
return (List<Emp>)this.jdbcTempl.query(sql, new RowMapping());
}}

解决方案 »

  1.   

    ------------------------IEmpDAO------------------
    package com.crud.interfac;import java.util.List;import com.crud.vo.Emp;
     
    public interface IEmpDAO {
    public void doCreate(Emp emp) throws Exception; public void doDelete(Emp empNo) throws Exception; public void doUpdate(Emp emp) throws Exception;

    public List<Emp> findByName(Emp empName)throws Exception;

    }------------------------IEmpService------------------
    package com.crud.interfac;import java.util.List;import com.crud.vo.Emp;
     
    public interface IEmpDAO {
    public void doCreate(Emp emp) throws Exception; public void doDelete(Emp empNo) throws Exception; public void doUpdate(Emp emp) throws Exception;

    public List<Emp> findByName(Emp empName)throws Exception;

    }------------------------EmpService------------------
    package com.crud.service;import java.util.List;import com.crud.interfac.IEmpDAO;
    import com.crud.interfac.IEmpService;
    import com.crud.vo.Emp;public class EmpService implements IEmpService {
    private IEmpDAO iempdao; public IEmpDAO getIempdao() {
    return iempdao;
    } public void setIempdao(IEmpDAO iempdao) {
    this.iempdao = iempdao;
    }
    @Override
    public void doCreate(Emp emp) throws Exception {
    this.iempdao.doCreate(emp); } @Override
    public void doDelete(Emp empNo) throws Exception {
    this.iempdao.doDelete(empNo); } @Override
    public void doUpdate(Emp emp) throws Exception {
    this.iempdao.doUpdate(emp);
    }
      @Override
    public List<Emp> findByName(Emp empName) throws Exception {
    return(List<Emp>) this.iempdao.findByName(empName);
    }
    }------------------------RowMapping------------------
    package com.crud.mapping;import java.sql.ResultSet;
    import java.sql.SQLException;import org.springframework.jdbc.core.RowMapper;import com.crud.vo.Emp;public class RowMapping implements RowMapper { @Override
    public Object mapRow(ResultSet rs, int index) throws SQLException {
    Emp emp=new Emp();
    emp.setEmpNo(rs.getInt(1));
    emp.setEmpName(rs.getString(2));
    emp.setJob(rs.getString(3));
    emp.setSal(rs.getFloat(4));
    emp.setComm(rs.getFloat(5));
    return emp;

    }
      

  2.   

    ------------------------Emp------------------
    package com.crud.vo;
     
    public class Emp {
    private int empNo;
    private String empName;
    private String job;
    private float sal;
    private float comm;
    public int getEmpNo() {
    return empNo;
    }
    public void setEmpNo(int empNo) {
    this.empNo = empNo;
    }
    public String getEmpName() {
    return empName;
    }
    public void setEmpName(String empName) {
    this.empName = empName;
    }
    public String getJob() {
    return job;
    }
    public void setJob(String job) {
    this.job = job;
    }
     
    public float getSal() {
    return sal;
    }
    public void setSal(float sal) {
    this.sal = sal;
    }
    public float getComm() {
    return comm;
    }
    public void setComm(float comm) {
    this.comm = comm;
    }
     
    }
    ------------------------web.xml------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>StrutsSpringCRUD</display-name>

    <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <filter>
         <filter-name>struts2</filter-name>
         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
       </filter>
      <filter-mapping>
          <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
       </filter-mapping>
      
    </web-app>------------------------Struts.xml------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <!-- 表示web的编码集 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>

    <!-- 表示请求action的后缀 -->
    <constant name="struts.action.extension" value="action"></constant>

    <!-- 表示action交给spring容器管理 -->
    <constant name="struts.objectFactory" value="spring"></constant>

    <!-- 表示在修改struts配置文件时,系统是否自动加载该文件 默认为false 在开发阶段最好打开 -->
    <constant name="struts.configuration.xml.reload" value="true"></constant>

    <package name="struts2" extends="struts-default">

    <action name="OperAction_*" class="OperAction" method="{1}">
    <result name="SUCEESS">/jsp/emp_list.jsp</result>

    <result name="DELETE">/jsp/emp_list.jsp</result>

    <result name="UPDATE">/jsp/emp_list.jsp</result>

    <result name="SELECT">/jsp/select.jsp</result>
    </action>

    </package>
    </struts>
    ------------------------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: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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <!-- 配置数据源 -->
    <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="oracle.jdbc.driver.OracleDriverr">
    </property>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:Ora"></property>
    <property name="username" value="scott"></property>
    <property name="password" value="tiger"></property>
    </bean>
    <!-- 配置事务管理器 目标对象-->
    <bean id="dsManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 将Struts交给Spring管理 -->

    <!-- 采用aop管理事务 -->
    <!-- 定义事务通知 -->
    <tx:advice id="dsAdvice" transaction-manager="dsManager">
    <tx:attributes>
    <!-- 定义事务的边界 -->
    <!-- 
    never: 不开启事务
    not-supported : 如果没有事务运行正常,如果有事务抛出异常
    support : 如果有事务运行则使用当前事务,如果没有就不开启新事务,正常运行
    required: (最常用)如果有事务运行则使用当前事务,如果没有就开启新事务
    requires_new: 如果有事务运行把当前的事务挂起,开启新事务;如果没有就开启新事务
      NESTED: (慎用) 有hibernate进行扩展,依赖于数据库的实现。支持 sql server, oracle 。。
     
     -->
    <tx:method name="insert*" propagation="REQUIRED"/>
    <tx:method name="delete*" propagation="REQUIRED"/>
    <tx:method name="update*" propagation="REQUIRED"/>
    <tx:method name="*"  read-only="true"/>

    </tx:attributes>
    </tx:advice>

    <!-- spring的依赖注入技术--> 
    <bean id="iempdao" class="com.crud.dao.EmpDAO">
    <property name="dataSource" ref="dataSource"></property>
    </bean>


    <bean id="iempService" class="com.crud.service.EmpService">
    <property name="iempdao" ref="iempdao"></property>
    </bean>

    <bean id="OperAction" class="com.crud.action.OperAction">
    <property name="iempService" ref="iempService"></property>
    </bean>
     
    </beans>
      

  3.   

    找个视频看看吧
    http://www.boobooke.com/bbs/thread-29172-1-1.html
    23-24集
    22号应该还有时间,看能不能救你
    自助者天助
    自救者天救
      

  4.   

    ------------------------create.jsp------------------
    <%@ page language="java" pageEncoding="UTF-8"%> 
    <%@ taglib uri="/struts-tags" prefix="s"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">     
    <html>   
    <head>   
    <title>增加雇员</title>   
    </head>   

    <body> 
      <form action="OperAction_doCreate.action" method="post">
      雇员编号:<input type="text" name="emp.empNo"><br>
      雇员姓名:<input type="text" name="emp.empName"><br>
      工作:<input type="text" name="job"><br>
      工资:<input type="text" name="sal"><br>
      奖金:<input type="text" name="comm"><br>
      <input type="submit" value="提交">
      <input type="reset" name="重置">  
      </form> 
    </body>   
    </html>  
    ------------------------delete.jsp------------------
    <%@ page language="java" pageEncoding="UTF-8"%> 
    <%@ taglib uri="/struts-tags" prefix="s"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">     
    <html>   
    <head>   
    <title>删除雇员</title>   
    </head>   

    <body>   
    请输入您要删除的员工编号:
    <form action="OperAction_doCreate.action" method="post">
      雇员姓名:<input type="text" name="empname">
      <input type="submit" value="提交">
      <input type="reset" name="重置">  
      </form> 
        </body>   
    </html>  
    ------------------------update.jsp------------------
    <%@ page language="java" pageEncoding="UTF-8"%> 
    <%@ taglib uri="/struts-tags" prefix="s"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">     
    <html>   
    <head>
    <title>更新雇员</title>
    </head>   

    <body>   
     <form action="OperAction_doUpdate.action" method="post">
      雇员编号:<input type="text" name="empno"><br>
      雇员姓名:<input type="text" name="empname"><br>
      工作:<input type="text" name="job"><br>
      工资:<input type="text" name="sal"><br>
      奖金:<input type="text" name="comm"><br>
      <input type="submit" value="提交">
      <input type="reset" name="重置">  
      </form>
        </body>   
    </html>  
    ------------------------select.jsp------------------
    <%@ page language="java" pageEncoding="UTF-8"%> 
    <%@ taglib uri="/struts-tags" prefix="s"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">     
    <html>   
    <head>   
    <title>查询雇员</title>   
    </head>   

    <body>   
    请输入您要查找的员工姓名:
    <form action="OperAction_findByName.action" method="post">
      雇员姓名:<input type="text" name="empname">
      <input type="submit" value="提交">
      <input type="reset" name="重置">  
      </form> 
        </body>   
    </html>  
    ------------------------emp_list.jsp------------------
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
    <html>
    <head>
    <title>雇员管理</title>
    </head>

    <body>

    <center>
    <h2>雇员管理程序</h2>
    <hr>
    <br/>
    <table>
    <s:a href="create.jsp">增加雇员</s:a>
    <s:a href="delete.jsp">删除雇员</s:a>
    <s:a href="update.jsp">修改雇员</s:a>
    <s:a href="select.jsp">查询雇员</s:a>
    </table>
       <br/>
       <br/>
    <table border="1" width="80%" cellpadding="5" cellspacing="0" bgcolor="F2F2F2">
    <tr>
    <td>雇员编号</td>
    <td>雇员姓名</td>
    <td>工作</td>
    <td>工资</td>
    <td>奖金</td>
    <td colspan="2">操作</td>
    </tr>    <s:iterator value="#request.emp" id="list">   
    <tr>   
    <td><s:property value="#list.empno"/></td>   
             <td><s:property value="#list.empname"/></td>   
              <td><s:property value="#list.job"/></td>   
             <td><s:property value="#list.scal"/></td>
             <td><s:property value="#list.comm"/></td>         
        </tr>   
      </s:iterator>   
     </table> 
       
        <s:url id="url_pre" value="show.action">   
           <s:param name="pageNow" value="pageNow-1"></s:param>   
        </s:url>       <s:url id="url_next" value="show.action">   
            <s:param name="pageNow" value="pageNow+1"></s:param>   
        </s:url>     
      
        <s:a href="%{url_pre}">上一页</s:a>   
            
        <s:iterator value="students" status="status">   
            <s:url id="url" value="show.action">   
                <s:param name="pageNow" value="pageNow"/>   
            </s:url>   
         </s:iterator>     
         <s:a href="%{url_next}">下一页</s:a>    
    </center>
    </body>
    </html>
      

  5.   

    这是全部的代码用的包不用我说了吧 麻烦帮我看一下情况 JSP页面可能有问题因为没改写完 理解一下 谢谢了 在线急等答
      

  6.   

    IEmpService 接口类发错了 
      

  7.   

    起码说出什么问题吧 你觉得你直接看帖出来的代码能看到问题吗
    我建议先别照你们的项目 你找个简单的例子 自己建一个表2,3个字段 等你CRUD都会了再去套你们的项目 
      

  8.   

    this.jdbcTempl.update(sql, new Object[]{emp.getEmpNo(),emp.getEName(),emp.getJob(),emp.getSal(),emp.getComm()}, new int[]{java.sql.Types.DECIMAL,java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,java.sql.Types.DECIMAL,java.sql.Types.DECIMAL});现在我都写完了 出现了新的情况怎么设定程序中的参数类型为Oracle中的数据类型啊 我这个update执行后 empNo,eName有值,但是Job的值插不进去,是空的,而且不管怎么插Sal,Comm始终也是0.0,感觉插不进去!
      

  9.   

    楼主上面说了数据库是oralce
    初学struts2的飘过
    看代码貌似不太难哦