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>




 

 


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java EE 项目的目录结构可以根据具体的需求进行灵活设计,但一般情况下,推荐使用以下的标准目录结构: ``` project ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ ├── controller │ │ │ ├── dao │ │ │ ├── entity │ │ │ ├── service │ │ │ └── util │ │ ├── resources │ │ │ ├── mapper │ │ │ └── db.properties │ │ └── webapp │ │ ├── WEB-INF │ │ │ ├── classes │ │ │ ├── lib │ │ │ └── web.xml │ │ ├── css │ │ ├── js │ │ ├── images │ │ └── index.jsp │ └── test │ ├── java │ └── resources ├── target ├── pom.xml └── README.md ``` 其中,各个目录的作用如下: - `src/main/java`:存放项目的 Java 源代码,按照包名分层,一般包括 `controller`、`dao`、`entity`、`service` 和 `util` 等包; - `src/main/resources`:存放项目的配置文件和资源文件,一般包括数据库连接配置文件 `db.properties`、MyBatis 的 mapper 文件等; - `src/main/webapp`:存放 Web 应用的 Web 资源,包括 JSP 页面、CSS 样式表、JavaScript 脚本等; - `src/test/java`:存放项目的测试代码; - `src/test/resources`:存放测试代码所需要的资源文件; - `target`:存放编译后的 .class 文件、打包后的 .war 文件等; - `pom.xml`:Maven 项目管理工具的配置文件; - `README.md`:项目说明文件。 以上是一种常见的 Java EE 项目目录结构,但并不是唯一的标准。在实际开发中,可以根据项目的具体需求进行合理的调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值