struts2_day05

struts2文件上传
1.文件上传前端三要素:1)post请求
(2)enctype="multipart/form-data"3<input type="file" name="uploadFile"/>
JSP代码:
 	<s:form action="upload.action" enctype="multipart/form-data">
        <s:textfield name="username" label="用户名"/>
        <s:file name="uploadFile" label="上传文件"/>
        <s:submit value="上传"/>
    </s:form>
    
2. 配置struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- 开启静态方法调用 -->
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
    <!-- 设置开发者模式 -->
    <constant name="struts.devMode" value="true"></constant>
    <!-- 限制文件上传的大小 (默认为2)-->
    <constant name="struts.multipart.maxSize" value="5242880"></constant>
    <!-- 配置全局消息资源包,解决英文问题 -->
    <constant name="struts.custom.i18n.resources" value="fileupload_message"></constant>
    <package name="fileupload" extends="struts-default" namespace="/">
        <!-- 上传 -->
        <action name="upload" class="com.baidu.action.UploadAction" method="upload">
            <!-- 限制文件的扩展名,如果有多个限制条件用逗号隔开
            <interceptor-ref name="defaultStack">
                <param name="fileUpload.allowedExtensions">jpg</param>
            </interceptor-ref>
             -->
             <!-- 限制文件的MIME,如果有多个文件时使用逗号隔开 -->
             <interceptor-ref name="defaultStack">
                <param name="fileUpload.allowedTypes">image/jpeg</param>
             </interceptor-ref>
        </action>
    </package>
</struts>

3.编写Action类
@Data
public class UploadAction extends ActionSupport {
    private File uploadFile;
    public String upload() throws Exception {
        //获取文件上传目录
        String realPath = ServletActionContext.getServletContext().getRealPath("/WEB-INF/file/");
        File dirFile = new File(realPath);
        if (!dirFile.exists()) {
            dirFile.mkdirs();
        }
        //上传文件
        if (uploadFile != null) {
            uploadFile.renameTo(new File(dirFile, uploadFile.getName()));
        }
        return "none";
    }
}
struts2异常处理
1.声明式异常捕捉:
	struts2的异常处理机制是通过在struts.xml文件中配置<exception-mapping>标签完成的,配置该标签时,需要指定两个属性:
    exception:指定该异常类型的完全限定名。
    result:指定逻辑视图名。
* 全局异常处理:
	 <global-exception-mappings>
           <exception-mapping exception="java.sql.SQLException" result="sql"/>
           <exception-mapping exception="java.lang.Exception" result="root"/>
     </global-exception-mappings>
	<global-results>
           <result name="sql">/exception.jsp</result>
           <result name="root">/exception.jsp</result>
     </global-results>
    
 * 局部异常处理:
	<result name="nullPointer">/nullPointer.jsp</result>
     <exception-mapping exception="java.lang.NullPointerException" result="nullPointer"/>
     
2.struts2声明式异常捕捉流程:
	当在struts2.xml中,配置了Action类关联exception-mapping后,一但Action抛出了exception-mapping中配置了的异常,就会匹配到exception-mapping标签的result属性值,从而匹配result标签

猜你喜欢

转载自blog.csdn.net/qq_42514129/article/details/85911905