上传word文档并显示内容

 很长时间(也不算是很长)不碰myeclipse了,里面集成的那些插件在用的时候让人用着真的很舒服,今天恰好帮sj做一个小东西,又一次回忆了一下myeclipse中部署项目的整个过程,还有引入struts2...记录一下吧~

1. 新建工程后,先引入struts2的jar包:右击项目---myeclipse---add struts capabilities,引入后,web.xml中会生成对应的filter:

<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>*.action</url-pattern>
  </filter-mapping>

一个filter对应一个filter-mapping.也可以写自己的filter,比如写一个过滤器用来设置编码的,这样,就可以在web.xml中配置写好的action.

2. struts2的配置:

<package namespace="/" name="default" extends="struts-default">
    <action name="UploadAction" 
			class="com.up.action.UploadAction" >
     <!-- 将savePath设置为"根目录下的upload文件夹" -->
     <param name="savePath">/upload</param>
     <result name="show">/showc.jsp</result>
     <result name="error">/index.jsp</result>
     </action>
   </package>


首先是package,之后是action,action中对应一个或者多个result,如果有其他需要,再进行其他的设置,比如上面的param是用来上传文件的.

3. 编写对应的action,并在jsp页面中进行请求:

编写action要按照配置的struts.xml文件进行编写,action要继承ActionSupport类,并override public String execute(){} 方法

4. 最后,页面和action的传递工作可以由get和set方法实现.

哇,现在才发现,struts2真的很方便呢~

接下来记录今天写的功能啦!

首先用struts2自带的文件上传功能进行文件的上传,之后是读取上传的word文档.读取word文档用到了一个jar包:tm-extractors-0.4,在网上有下的.

具体代码如下:

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>Demo of upload files</title>
    <script type="text/javascript">
    function checkup(){
    //提示信息
var div=document.getElementById("uploadname");
if(document.form1.gljueyi.value.length==0){
				div.innerHTML="请选择要上传的文件";
				document.form1.gljueyi.focus();
				return false;
}
return  true;	
}
</script>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<style>
*{ font-size:14px;}
</style>
  </head>
  
 <body>
 <form action="UploadAction.action" name="form1" method="post" enctype="multipart/form-data">
 <table>
  <tr>
 <td > </td>
      <td ><span id="message" style="font-size:16px;color:red;" >
      
      </span></td>
 </tr>
  <tr>
 <td style="line-height:30px;">选择上传的文件:</td>
 <td> <input type="file" id="uploadname" name="upload"></td>
 </tr>
 <tr>
 <td style="line-height:30px;"><input type="submit" name="button" id="button" value="提交" onClick="return checkup();"></td>
 <td><input type="reset" name="button2" id="button2" value="重置"></td>
 </tr>

 </table>
 </form>
</body>
</html>

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>
<package namespace="/" name="default" extends="struts-default">
    <action name="UploadAction" 
			class="com.up.action.UploadAction" >
			<!-- 将savePath设置为"/upload" -->
			<param name="savePath">/upload</param>
     <result name="show">/showc.jsp</result>
     <result name="error">/index.jsp</result>
     </action>
   </package>
</struts>    

UploadAction.java:

package com.up.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.struts2.ServletActionContext;
import org.textmining.text.extraction.WordExtractor;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
    File upload;
    String uploadContentType;
    String uploadFileName;
    
    String str;
    
    
    private String savePath;

	public String execute() throws Exception{
//    	System.out.println("开始上传单个文件-----------------------");
//        System.out.println(getSavePath());
//        System.out.println("==========" + getUploadFileName());
//        System.out.println("==========" + getUploadContentType());
//        System.out.println("==========" + getUpload());
//        以服务器的文件保存地址和原文件名建立上传文件输出流
    	/*
    	 * 文件上传工作
    	 */
		String doc = getFilename(getUploadFileName());
		String filename =getTime() + "." + doc;
        
        //文件上传
		//getSavepath()是获取struts.xml中传过来的值
    	FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + filename);
        FileInputStream fis = new FileInputStream(getUpload());
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = fis.read(buffer)) > 0)
         {
            fos.write(buffer , 0 , len);
        }
        
        int ch = 0;
        String path = ServletActionContext.getServletContext().getRealPath("/upload");
        try{
            FileInputStream in = new FileInputStream (path + "\\" + filename);
            WordExtractor extractor = new WordExtractor();   //这里用tm-extractors-0.4.jar实现对word的读取操作. 
            str = extractor.extractText(in); 
            System.out.println(str); 
                }catch(Exception e){
                e.printStackTrace();
            }

        return "show";
    }
    
   String getTime(){
	   /**
	    * 获取时间来定义文件名称
	    * @return String as the name of the file
	    */
	   	SimpleDateFormat formatter_f = new SimpleDateFormat("yyyyMMddHHmmss");
	   	Date now = new Date();
	   	String time = formatter_f.format(now);
	   	return time;
   }
   String getTrueTime(){
	   /**
	    * 获取当前时间
	    * @return String time
	    */
	   	SimpleDateFormat formatter_f = new SimpleDateFormat("yyyy-MM-dd");
	   	Date now = new Date();
	   	String time = formatter_f.format(now);
	   	return time;
   }
   
   String getFilename(String name){
	   
	   /**
	    * 获取文件名的后缀
	    * @return String
	    */
	   int i = name.lastIndexOf(".")+1;
	   	return name.substring(i,name.length());
   }
   //接受依赖注入的方法
   public void setSavePath(String value)
    {
       this.savePath = value;
   }

   @SuppressWarnings("deprecation")
	private String getSavePath() throws Exception 
    {
       return ServletActionContext.getRequest().getRealPath(savePath);
   }
   

   public void setUpload(File upload)  {
       this.upload = upload; 
   }

   public void setUploadContentType(String uploadContentType)  {
       this.uploadContentType = uploadContentType; 
   }

   public void setUploadFileName(String uploadFileName)  {
       this.uploadFileName = uploadFileName; 
   }

   public File getUpload()  {
       return (this.upload); 
   }

   public String getUploadContentType()  {
       return (this.uploadContentType); 
   }

   public String getUploadFileName()  {
       return (this.uploadFileName); 
   }

public String getStr() {
	return str;
}

public void setStr(String str) {
	this.str = str;
}
   
}

最后显示,showc.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>Demo of upload files</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<style>
*{ font-size:14px;}
</style>
  </head>
  
 <body>
 <s:property value="str"/>
</body>
</html>


 

另外,很感谢网上无私奉献的大神们,谢谢...


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值