上传excel数据到数据库中遇到问题(struts1.3)—修正版

(1)日期问题

从单元格中取得的日期与数据库中日期无法匹配,由于单元格中取得的日期默认形式为“Mon Mar 18 16:53:27 CST 2013”,我们要先把其格式化为想要格式的日期字符串,如“yyyy-mm-dd”,然后用java.sql.Date的valueOf( )方法取得该日期字符串对应于数据库中的日期。

1 java.util.Date date=cell.getDateCellValue();//取得单元格中的日期

2 DateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");//定义想要的日期格式

3 String working_date=fmt.format(date);//把日期格式化为"yyyy-MM-dd"形式的日期字符串

4 String sql="insert into tmp_excel(working_date) values(?)";

5 PreparedStatement stmt=conn.prepareStatement(sql);

6 stmt.setDate(1,java.sql.Date.valueOf(working_date));//取得字符串日期对应与数据库的日期

(2)提交(Submit)弹窗问题和取消(Cancel)按钮问题

当点击导入按钮时,会弹出提示"确认导入数据"窗口,确定则导入数据到真实表,删除临时表数据,并显示导入更新多少条数据。取消则不执行任何动作,回到当前页面。

当点击取消按钮时,删除保存在临时表中的数据,然后跳转到上传页面。使用取消按钮,必须在struts中配置相应的属性,否则会报InvalidCancelException异常。

dataImport.jsp

 1 <%@ page language="java" pageEncoding="GBK"%>

 2 

 3 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

 4 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

 5 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

 6 <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

 7 

 8 

 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

10 <html>

11     <head>

12         <title>生产能率Excel上传</title>

13         <script type="text/javascript">

14             function msg(){

15                 if(confirm("您确认要导入数据吗?")){

16                     document.importForm.submit();

17                 }

18             }

19         </script>

20     </head>

21     <body>

22 

23         <logic:notEmpty name="msg" scope="request">

24             <h4><%=request.getAttribute("msg")%></h4>

25             <h4>

26                 更新了

27                 <font color="red"><%=request.getAttribute("count")%></font>条记录。

28             </h4>

29         </logic:notEmpty>

30         <br />

31         <html:form  action="/dataImport" method="post">

32             <html:button value="导入" property="" style='font-size:18px' onclick="msg();"/>&nbsp;&nbsp;&nbsp;&nbsp;            

33             <html:cancel value="取消" style='font-size:18px'></html:cancel>

34         </html:form>

35     </body>

36 </html>

 

<html:form>不能像html中的form一样,设置name属性,而是在struts-config.xml中<action-mappings>中的action的name配置,<action name="importForm" ...>,js中事件取得表单名字时,也是根据这里的配置。

Action中对Cancel按钮的处理:判断是否点击了“取消”按钮,如果点击了“取消”按钮,则删除上传到临时表中的数据,并重定向导上传页面。

importAction.java

1 boolean flag=this.isCancelled(request);

2 if(flag){

3       String sql="delete from tmp_excel where userid=?";

4       stmt=conn.prepareStatement(sql);

5       stmt.setString(1, uid);

6       stmt.executeUpdate();

7       return mapping.findForward("upload");

8 }

在struts-config.xml文件中配置相应的跳转路径和取消属性。

 1 <global-forwards>

 2         <forward name="upload" path="/uploadExcel.jsp"></forward>

 3     </global-forwards>

 4 

 5 <action path="/dataImport"

 6                 type="com.foster.action.ImportAction"

 7                 name="importForm"

 8                 scope="request">

 9             <set-property property="cancellable" value="true"/>        

10             <forward name="success" path="/dataImport.jsp"></forward>

11         </action>

注:个人感觉日期问题处理很繁琐,贴出来,以待指正。

你可能感兴趣的:(Struts1.3)