• JavaWeb -- Struts1 多文件上传与下载 DownloadAction, DispatchAction


    1. 多文件上传与下载

    上传下载jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      
      <body>
      
      	<a href="${pageContext.request.contextPath }/downFile.do">下载</a>
        
        <form action="${pageContext.request.contextPath }/UpFile.do" method="post" enctype="multipart/form-data">
        	上传用户:<input type="text" name="username"><br/>
        	上传文件1:<input type="file" name="list[0]"><br/>
        	上传文件2:<input type="file" name="list[1]"><br/>
        	<input type="submit" value="上传">
        
        </form>
        
      </body>
    </html>

    actionform bean:

    public class UpFileFormBean extends ActionForm {
    
    	private String username;
    	private List<FormFile> list = new ArrayList();;
    	
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public FormFile getList(int index) {
    		return list.get(index);
    	}
    	public void setList(int index,FormFile file) {
    		list.add(file);
    	}
    	
    	public List<FormFile> getAll(){
    		return list;
    	}
    	
    	
    }

    上传action:

    //加过滤器解决乱码
    public class UpFileAction extends Action {
    
    	@Override
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
    		
    		UpFileFormBean formbean = (UpFileFormBean) form;
    		
    		/*  //单文件上传
    		System.out.println("上传用户:" + formbean.getUsername());
    		FormFile file = formbean.getUpfile();
    		
    		String filename = file.getFileName();
    		InputStream in = file.getInputStream();
    		FileOutputStream out = new FileOutputStream("c:\" + filename);
    		int len = 0;
    		byte buffer[] = new byte[1024];
    		while((len=in.read(buffer))>0){
    			out.write(buffer, 0, len);
    		}
    		in.close();
    		out.close();*/
    		
    		//多文件上传
    		List<FormFile> all = formbean.getAll();
    		System.out.println(all.size());
    		for(FormFile formFile : all){
    			String filename = formFile.getFileName();
    			InputStream in = formFile.getInputStream();
    			FileOutputStream out = new FileOutputStream("c:\" + filename);
    			int len = 0;
    			byte buffer[] = new byte[1024];
    			while((len=in.read(buffer))>0){
    				out.write(buffer, 0, len);
    			}
    			in.close();
    			out.close();
    		}
    		
    		
    		return super.execute(mapping, form, request, response);
    	}
    }

    下载action:

    public class DownFileAction extends DownloadAction {
    
    	@Override
    	protected StreamInfo getStreamInfo(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest request, HttpServletResponse response) throws Exception {
    		
    		response.setHeader("content-disposition", "attachment;filename=1.jpg");
    		String downfile = request.getSession().getServletContext().getRealPath("/download/1.jpg");  //servlet  
    		return new DownloadAction.FileStreamInfo("image/jpg", new File(downfile));
    	}
    }

    struts-config.xml 配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
    
    <struts-config>
    
    	<form-beans>
    		<form-bean name="UpFileFormBean" type="cn.itcast.web.formbean.UpFileFormBean"></form-bean>
    	</form-beans>
    
    	<action-mappings>
    	
    		 <action path="/downFile" type="cn.itcast.web.action.DownFileAction"></action>
    	
    		<action path="/UpFile"
    				type="cn.itcast.web.action.UpFileAction"
    				name="UpFileFormBean"
    				scope="request"
    				>
    		</action>
    	</action-mappings>
    
    	<!--最大上传文件-->
    	<controller processorClass="org.apache.struts.action.RequestProcessor" maxFileSize="1K"></controller>
    
    </struts-config>

    web.xml 配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    	xmlns="http://java.sun.com/xml/ns/j2ee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      
      <servlet>
      	<servlet-name>ActionServlet</servlet-name>
      	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      	 <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
      	
      </servlet>
      
      <servlet-mapping>
      	<servlet-name>ActionServlet</servlet-name>
      	<url-pattern>*.do</url-pattern>
      </servlet-mapping>
      
      
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    


    2. 如何实现一个action处理多个请求,  两种实现 DispatchAction 和 MappingDispatchAction

    多请求jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP '1.jsp' starting page</title>
      </head>
      
      <body>
        
        <html:link action="/BookAction?method=add">添加图书</html:link>
         <html:link action="/BookAction?method=delete">删除图书</html:link>
          <html:link action="/BookAction?method=update">修改图书</html:link>
           <html:link action="/BookAction?method=find">查找图书</html:link>
        
       <br/> <br/>---------------------------------------------<br/><br/>
        
        <html:link action="/addbook">添加图书</html:link>
         <html:link action="/deletebook">删除图书</html:link>
          <html:link action="/updatebook">修改图书</html:link>
           <html:link action="/findbook">查找图书</html:link>
        
      </body>
    </html>

    action 处理,两种实现DispatchAction 和 MappingDispatchAction, 配置文件不同

    //DispatchAction---action  ---execute()  add 
    
    /*
       String method = mapping.getParamter();
       String methodName = request.getParameter(method);  //add update 
     */
    public class BookAction extends DispatchAction {
    
    	
    	public ActionForward add(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    		
    		System.out.println("add....");
    		return null;
    	}
    	
    	public ActionForward update(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {		
    		System.out.println("udpate....");
    		return null;
    	}
    	
    	public ActionForward delete(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {		
    		System.out.println("delete....");
    		return null;
    	}
    	
    	public ActionForward find(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    		System.out.println("find....");
    		return null;
    	}	
    }
    
    
    
    
    
    
     
    public class BookAction2 extends MappingDispatchAction {
    
    	public ActionForward add(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    		
    		System.out.println("add....");
    		return null;
    	}
    	
    	public ActionForward update(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    		// TODO Auto-generated method stub
    		
    		System.out.println("udpate....");
    		return null;
    	}
    	
    	public ActionForward delete(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    		// TODO Auto-generated method stub
    		
    		System.out.println("delete....");
    		return null;
    	}
    	
    	public ActionForward find(ActionMapping arg0, ActionForm arg1,
    			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    		// TODO Auto-generated method stub
    		System.out.println("find....");
    		return null;
    	}

    web.xml 配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    	xmlns="http://java.sun.com/xml/ns/j2ee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      
      <!--struts配置文件可以添加多个配置文件struts-config2.xml-->
      <servlet>
      	<servlet-name>ActionServlet</servlet-name>
      	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      	 <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config2.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
      	
      </servlet>
      
      <servlet-mapping>
      	<servlet-name>ActionServlet</servlet-name>
      	<url-pattern>*.do</url-pattern>
      </servlet-mapping>
      
      
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    struts-config.xml 配置文件1

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
    
    <struts-config>		
    	<action-mappings>
    		<action path="/BookAction" 
    				type="cn.itcast.web.action.BookAction"
    				parameter="method"> <!-- 告诉struts,要调用的方法名称是通过什么参数带过来的 -->
    		</action>				
    	</action-mappings>
    </struts-config>

    struts-config2.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
    
    <struts-config>
    	
    	
    	<action-mappings>
    		<action path="/addbook" type="cn.itcast.web.action.BookAction2" parameter="add"/>
    		<action path="/updatebook" type="cn.itcast.web.action.BookAction2" parameter="update"/>
    		<action path="/findbook" type="cn.itcast.web.action.BookAction2" parameter="find"/>
    		<action path="/deletebook" type="cn.itcast.web.action.BookAction2" parameter="delete"/>
    	</action-mappings>
    
    </struts-config>




     

     

    
    
    
    
  • 相关阅读:
    如何利用WGET覆写已存在的档案
    linux 脚本返回值
    ubuntu的配置网络
    非交互模式修改Ubuntu密码的命令
    [zz]python多进程编程
    [zz]linux修改密码出现Authentication token manipulation error的解决办法
    [zz]4.1.5 进程的处理器亲和性和vCPU的绑定
    vcpu
    非交互式调用交互式程序
    HDOJ_ACM_饭卡
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648149.html
Copyright © 2020-2023  润新知