注意:
项目:war 和 项目:war exploded
两者并不同,idea 运行 项目:war exploded
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
</dependency>
所需依赖:
commons-fileupload:文件上传
jackson.core:三个jackson包
web.xml 、Springmvc.xml 如上期配置
package com.hc.controller;
import com.hc.entity.Point;
import com.hc.entity.Student;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class FirstController {
@RequestMapping("load")
public String load(MultipartFile file,HttpServletRequest request){
// System.out.println("名称\t"+file.getOriginalFilename());
// System.out.println("大小\t"+file.getSize());
// System.out.println("name\t"+file.getName());
//
// System.out.println("文件路径\t"+request.getRealPath("/images"));
//+System.currentTimeMillis()
String path=request.getRealPath("/images");
File f=new File(path+"/"+file.getOriginalFilename());
try {
FileUtils.copyInputStreamToFile(file.getInputStream(),f);
} catch (IOException e) {
e.printStackTrace();
}
return "success";
}
@RequestMapping("point")
public String point(Point point){
System.out.println(point);
return "success";
}
@RequestMapping("first")
public String first(HttpServletRequest request){
request.setAttribute("id",12);
return "forward:forWard.action";
}
@RequestMapping("forWard")
public String forWard(HttpServletRequest request){
System.out.println("forWard\t"+request.getAttribute("id"));
return "success";
}
@ResponseBody
@RequestMapping("json")
public Map<String,Object> json(){
Map<String,Object> map=new HashMap<>();
List<Student> studentList=new ArrayList<>();
studentList.add(new Student("话","女",12));
studentList.add(new Student("还是","男",32));
map.put("size",studentList.size());
map.put("students",studentList);
return map;
}
}
1.forward:可以转发数据
转发:可将数据转发至页面,地址不发生改变
重定向:不传递数据,直接 跳到另一个页面,地址将变为目标页面。
2.ResponseBody:自动转换
比fastjson更便捷
json格式的数据
{"size":2,"students":[{"stuId":0,"stuName":"话","stuSex":"女","stuAge":12},{"stuId":0,"stuName":"还是","stuSex":"男","stuAge":32}]}
3.收集一个util的date数据
user:
import java.util.Date;
public class Users {
private String uname;
private String upwd;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
}
在实体类需要特殊收集的属性上,开启DateTimeFormat注解
<mvc:annotation-driven></mvc:annotation-driven>
在springmvc中配置注解驱动
4.收集坐标
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/load.action" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="load">
</form>
first
<a href="/first.action">success</a>
<form action="/point.action" method="post">
<input type="text" name="point">
<input type="submit" value="ok">
</form>
</body>
</html>
坐标格式:(2,3)
首先,自定义转换器
package com.hc.controller;
import com.hc.entity.Point;
import org.springframework.core.convert.converter.Converter;
public class PointConverter implements Converter<String,Point> {
@Override
public Point convert(String s) {
String[] strings=s.split("-");
int x=Integer.parseInt(strings[0]);
int y=Integer.parseInt(strings[1]);
Point point=new Point(x,y);
return point;
}
}
构建point对象,属性为x、y
配置自定义转换器
<bean id="converters" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<bean class="com.hc.controller.PointConverter"></bean>
</property>
</bean>
<mvc:annotation-driven conversion-service="converters"></mvc:annotation-driven>
按照中间的 - 分割
例如: 667-87 ,那么将被格式化为 (667,87)
在point类中封装tostring方法,效果会很明显
5.图片上传
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="2097152"></property>
</bean>
设置默认编码为UTF-8
最大上传大小为:1024*1024*2= 2097152 2M
<form action="/load.action" method="post" enctype="multipart/form-data">
form 上传方式为POST
选择框的name与controller方法的参数MultipartFile的变量名一致
file.getOriginalFilename():图片名字
如有需要System.currentTimeMillis(),加上时间戳。
因为如果上传了同名的文件,已存在的将被覆盖。
file.getSize():图片大小
request.getRealPath("/images"):获得images在服务器的路径
try catch:alt+enter(回车)