转发与重定向&文件上传

重定向与Flash属性
重定向可以在方法中重定向 从一个方法指向另一个方法 传值只能两个页面传值不能跨页面 需要重定向,则可以在返回的结果前加上一个前缀“redirect:”,可以重定向到一个指定的页面,也可以是另一个action

@RequestMapping("/action22")
public String action2(Model model) {
    return "index";
}
@RequestMapping("/action23")
public String action3(Model model) {
    model.addAttribute("name", "action3Message");
    return "redirect:action22";
}

Flash属性 在多个页面传值时可以用于Flash属性进行传值
向方法加入RedirectAttributes形参用redirectAttributes形参点addFlashAttribute("", );方法 进行传值

// 接收重定向参数
@RequestMapping("/action2")
public String action2(Model model, Product product) {
    model.addAttribute("message", product);
    model.addAttribute("name","李四");
    System.out.println(model.containsAttribute("product")); // true
    return "index";
}
//重定向属性
@RequestMapping("/action3")
public String action3(Model model, RedirectAttributes redirectAttributes) {
    Product product = new Product(2, "iPhone7 Plus", 6989.5);
    redirectAttributes.addFlashAttribute("product", product);
    return "redirect:action2";
}

转发
str=”forward : 路径”      请求转发到一个页面中
str=”forward : controller的映射”  请求转发到一个controller方法中 可进行跨页面传值

//11.转发
@RequestMapping("/act11")
public String act11(Model model){
    return "index";
}
//12.转发
@RequestMapping("/act12")
public String act12(Model model){
    model.addAttribute("msg","act12");
    return "forward:act11";
}

文件上传
Servlet3.0以下的通过commons-fileupload上传 需要
添加上传依赖包commons-io 2.4版本 commons-fileupload 1.3.1 版本

表单需加enctype=“multipart/form-data” 文件上传input标签中需加multiple="multiple"关键
修改配置文件,增加上传配置defaultEncoding:默认编码格式
maxUploadSize:上传文件最大限制(字节byte)
maxInMemorySize:缓冲区大小




在pom.xml文件添加依赖

 <!--文件上传 -->        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>2.4</version>        </dependency>        <dependency>            <groupId>commons-fileupload</groupId>            <artifactId>commons-fileupload</artifactId>            <version>1.3.1</version>        </dependency>```
    **controller页面**
```java
@Controller
@RequestMapping("/up")
public class UpFileController {
    @RequestMapping(value="/fileSave",method=RequestMethod.POST)
    public String fileSave(Model model, @RequestParam MultipartFile[] files, HttpServletRequest request) throws Exception{
        String username=request.getParameter("username");
        System.out.println(username);
        //文件存放的位置
        String path=request.getServletContext().getRealPath("/files");
        String fileName=null;
        for (MultipartFile file : files) {
            fileName=file.getOriginalFilename();
            System.out.println(file.getOriginalFilename());
            File tempFile=new File(path, fileName);
            if(!tempFile.exists()) {
                tempFile.mkdirs();
            }
            file.transferTo(tempFile);
        }
        System.out.println(path);
        model.addAttribute("path",path);
        model.addAttribute("fileName",fileName);
        model.addAttribute("username",username);
        return "upload";
    }

springmvc-servlet.xml配置文件jsp页面

 <bean id="multipartResolver"        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">        <property name="defaultEncoding" value="utf-8" />        <property name="maxUploadSize" value="10485760000" />        <property name="maxInMemorySize" value="40960" />    </bean>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
<h2>上传文件(支持多文件上传)</h2>
<form action="<%=request.getContextPath()%>/up/fileSave" method="post"  enctype="multipart/form-data">
    <p>
        姓名:<input type="text" name="username"><br>
        文件:
        <input type="file" name="files"  multiple="multiple" />
        <%--<input type="file" name="files"  multiple="multiple" />--%>
        <%--<input type="file" name="files"  multiple="multiple" />--%>
    <p>
        <button>提交</button>
    </p>
    <p>
        ${message}<br>
        路径:${path}<br>
        文件名:${fileName}<br>
        姓名:${username}<br>
        <img src="<%=request.getContextPath()%>/files/${fileName}">
    </p>
</form>
</body>
</html>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值