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";
}