SpringMVC学习笔记续

ModelandView这个类用于存储数据并将其访问到视图解析器

另外的方法有就是利用关键字进行,forward:转发

@RequestMapping("/you")
public  String you(HttpRequest request,HttpResponse response){

   return "forward:/web-inf/pages/success.jsp"
}

重定向:redirect:

@RequestMapping("/you")
public  String you(HttpRequest request,HttpResponse response){

   return "redirect:/index.jsp"
}

通常在请求时,静态资源会被过滤器给拦截比如:cs,js等,想要不被拦截就得告诉springmvc的配置文件

<!--前端控制,那些静态资源-->
<mvc:resources mapping="/js/**/" location="/js/"/>

前端也要有ajax的设置如:

$(function () {
    $("#true").click(function () {
        $.ajax({
            url:"user/",
            contentType:"application/json;charset=UTF-8",
            data:'{"name":"aaa","sex":"nan","old":12}',
            dataType:"json",
            type:"post",
            success:function (data) {

            }
        });
    });
});

后端:

@RequestMapping("/view")
public ModelAndView view(@RequestBody  String body){
    System.out.println(body);
    ModelAndView mode=new ModelAndView();
    Account account=new Account();
    account.setName("doubi");
    account.setSex("nan");
    account.setOld(12);
    mode.addObject("user",account);
    mode.setViewName("two");
    return mode;
}

如果想把数据封装成json发给前端的话,. json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.11.0</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.11.0</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.11.0</version>
</dependency>

使用@ResponseBody注解把JavaBean对象转换成json字符串,直接响应

文件上传-----传统方式

@RequestMapping("/find")
public String fileuoload1(HttpServletRequest request) throws Exception {
    System.out.println("文件上传");
    String path=request.getSession().getServletContext().getRealPath("/uploads");
    File file=new File(path);
    if(!file.exists()){
        file.mkdirs();
    }
    DiskFileItemFactory factory=new DiskFileItemFactory();
    ServletFileUpload upload=new ServletFileUpload(factory);
    List<FileItem>items=upload.parseRequest(request);
    for(FileItem item:items){
        if (item.isFormField()){

        }else {
            String filename=item.getName();
            item.write(new File(path,filename));
            item.delete();
        }
    }
    return "two";
}

那有没有相关的简单的方式用别人来帮我们进行解析这一个文件

来自的MultipartResolverorg.springframework.web.multipart包是一种分析多部分请求(包括文件上载)的策略。有一种实现基于Commons FileUpload,另一种基于Servlet3.0多部分请求解析。
要启用多部分处理,您需要在DispatcherServlet Spring配置中声明一个名为MultipartResolver的MultipartResolver bean。DispatcherServlet检测到它并将其应用于传入的请求。当接收到内容类型为multipart/form data的POST时,解析程序解析内容并将当前HttpServletRequest包装为multipartttpservletrequest,以提供对已解析部分的访问,并将其作为请求参数公开。

Apache Commons文件上载
要使用apachecommonsfileupload,可以配置CommonsMultipartResolver类型的bean,名称为multipartResolver。您还需要将commons fileupload作为类路径的依赖项。(就是在spring的配置文件中建立一个CommonsMultipartResolver类型的bean,名称就是id即为multipartResolver,在文件请求的对应方法中添加参数multipartfile file(这个参数名就文件上传器中的name属性))

SpringMVC跨服务器方式的文件上传

在实际开发中,我们会有很多处理不同功能的服务器,例如:

应用服务器:负责部署我们的应用

数据库服务器:运行我们的hunc数据库

缓存和消息服务器:负责处理大并发访问的缓存和消息

文件服务器:负责存储用户上传文件的服务器

首先需要导入两个包

<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-core</artifactId>
  <version>1.19.4</version>
</dependency>

<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-client</artifactId>
  <version>1.19.4</version>
</dependency>

在相应的类中,进行如下操作

@RequestMapping("updown")
public String fileOutput(MultipartFile upload) throws IOException {
    String path="http://localhost:9090/uplodads";
    String filename=upload.getOriginalFilename();
    Client client=Client.create();
    WebResource webResource=client.resource(path+filename);
    webResource.put(upload.getBytes());
    return "two";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值