使用Struts提供内置<s:file> 上传文件
编写封装类
package org.ccit.com.domain;
import java.io.File;
import java.util.Date;
/**
* @program: struts2_03
* @description
* @author: LIANG
* @create: 2021-01-22 12:43
**/
public class User {
private String username;
private String password;
//上传文件所需三个变量
private File photo; //自定义文件名称
private String photoFileName; //文件名+FileName 固定名称
private String photoContentType;//文件名+ContentType 固定名称
//+get.set toString
}
jsp页面使用struts内置标签
注意 form标签中enctype必须设置为=“multipart/form-data” 表单也必须是post方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--导入struts标签库--%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>login</title>
</head>
<body>
<%-- 显示文件上传失败的错误--%>
<s:actionerror></s:actionerror>
<s:form action="register" namespace="/user" enctype="multipart/form-data">
<s:file name="photo" label="头像" ></s:file>
<s:textfield name="username" label="用户名" requiredLabel="true" requiredPosition="left"></s:textfield><br>
<s:password name="password" label="密码" requiredLabel="true" showPassword="true"></s:password><br>
<s:submit value="注册" ></s:submit>
</s:form>
</body>
</html>
编写action类 使用模型注入 保存文件
package org.ccit.com.web.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.struts2.ServletActionContext;
import org.ccit.com.domain.User;
import java.io.File;
/**
* @program: struts2_02
* @description
* @author: LIANG
* @create: 2021-01-22 11:22
**/
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user=new User();
@Override
public User getModel() {
return user;
}
public String register(){
//保存文件夹
String dictory=ServletActionContext.getServletContext().getRealPath("/WEB-INF")+"\\upload\\"+user.getUsername();
File f=new File(dictory);
if (f.exists()==false){
f.mkdirs();
}
//文件保存路劲
String fileSavePath=dictory+"\\"+user.getPhotoFileName();
user.getPhoto().renameTo(new File(fileSavePath));
return SUCCESS;
}
}
在struts.xml中配置action
<package name="U1" extends="struts-default" namespace="/user">
<action name="register" class="org.ccit.com.web.action.UserAction" method="register">
<result name="input">/register.jsp</result>
<result name="success">/login.jsp</result>
</action>
</package>