第三十九天學習java
總結
json
-
json是一種基於JavaScript 語法開放的輕量級資料交換格式
-
導包
- jackson-annotations-2.5.0.jar
- jackson-core-2.5.0.jar
- jackson-databind-2.5.0.jar
-
後臺使用
@RequestMapping("/add") @ResponseBody public Emp add(Emp emp){ return emp; }
-
對日期格式的處理
-
後臺向前臺傳輸格式時
-
在日期的get屬性上新增
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
-
-
前臺向後臺傳輸格式時
-
在日期的set屬性上新增
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-
-
-
避免IE返回json時下載檔案的情況
<!-- 開啟spring對MVC的支援 --> <mvc:annotation-driven> <!-- 避免在IE瀏覽器中返回JSON時出現下載檔案的情況 --> <mvc:message-converters> <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
檔案的上傳(重點)
-
在上傳的時候在form表單的屬性中配置
<form action="/loadon" method="post" enctype="multipart/form-data">
-
在spring-mvc.xml中配置檔案的最大尺寸
<!-- 設定檔案最大的尺寸 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 設定上傳檔案的最大尺寸為10MB --> <property name="maxUploadSize"> <!-- spring el寫法:10MB --> <value>#{1024*1024*10}</value> </property> <!-- 效果同上 <property name="maxUploadSize" value="1048576" /> --> </bean>
-
將上傳的檔案拷貝下來
@Controller public class LoadOnController { @RequestMapping("/loadon") @ResponseBody public void loadon(HttpServletRequest req,String username,MultipartFile photo) throws Exception{ if(!photo.isEmpty()){ //獲取輸入流 InputStream in = photo.getInputStream(); //通過UUID獲取新的名字 String namePath = UUID.randomUUID().toString().replace("-", "")+photo.getOriginalFilename(); //得到前面的路徑 String realPath = req.getServletContext().getRealPath("/myFile"); File dir = new File(realPath); //判斷是否有改路徑 if(!dir.exists()){ dir.mkdirs(); } //拼接路徑 File file = new File(dir,namePath); //獲取輸入流 OutputStream out = new FileOutputStream(file); //通過工具拷貝資料 IOUtils.copy(in, out); //釋放資源 out.close(); in.close(); } } }
檔案的下載(有時還是會用)
@Controller
public class LoadDownController {
@RequestMapping("/loaddown")
public void loadDown(HttpServletRequest req,HttpServletResponse resp,String name) throws Exception{
//獲取前面的路徑
String realPath = req.getServletContext().getRealPath("/download");
File file = new File(realPath,name);
//獲取輸入流
InputStream in = new FileInputStream(file);
//設定編碼
//ie瀏覽器
if(req.getHeader("User-Agent").toUpperCase().indexOf("TRIDENT")!=-1){
name = URLEncoder.encode(name, "utf-8");
//電腦自帶edge【edʒ】瀏覽器
}else if(req.getHeader("User-Agent").toUpperCase().indexOf("EDGE")!=-1){
name = URLEncoder.encode(name, "utf-8");
}else{//其他瀏覽器
name = new String(name.getBytes("UTF-8"),"ISO-8859-1");//轉碼的方式
};
//設定彈窗
//設定相應頭為 檔案下載
resp.setContentType("multipart/form-data");
resp.setHeader("Content-Disposition", "attachment;fileName="+name);
//獲取輸出流
ServletOutputStream out = resp.getOutputStream();
//拷貝
IOUtils.copy(in, out);
//釋放資源
out.close();
in.close();
}
}
過濾器
-
寫一個類實現HandlerInterceptor,其中preHandle方法用於請求之前攔截,返回值boolean決定是否攔截
-
spring-mvc.xml配置
<mvc:interceptors> <mvc:interceptor> <!-- 攔截的路徑 /*只能攔截一層 /a /b --> <mvc:mapping path="/**"/> <!-- 不攔截的路徑 --> <mvc:exclude-mapping path="/fileloadup.jsp"/> <!-- 自己定義的攔截器位置 --> <bean class="cn.itsource.hello.MyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
相關文章
- Java登陸第三十九天——Router路由入門Java路由
- java第三週學習Java
- 學習Java的第三週Java
- java學習記錄第三週Java
- java學習第三天2020/7/8Java
- android基礎學習-java篇day7-step3-第三節:java字串AndroidJava字串
- java學習之道 --- 如何學習java?Java
- 學習css第三天CSS
- 第三週學習日曆
- golang學習第三天Golang
- 學Java的第三週(迴圈)Java
- 複習Java的第三天3.20Java
- Java學習Java
- Java學習自學Java
- Java學習之路 -- Java怎麼學?Java
- 《JAVA學習指南》學習筆記Java筆記
- Java學習—java-RedisJavaRedis
- Java學習:反射Java反射
- Java學習方法Java
- 如何學習JavaJava
- java學習之路Java
- java學習11.12Java
- java學習11.15Java
- java學習10.17Java
- java學習10.23Java
- Java學習11.14Java
- java學習11.18Java
- java學習11.19Java
- java學習11.25Java
- java學習11.29Java
- java學習9.21Java
- java學習7Java
- Java學習(3)Java
- JAVA JNDI學習Java
- java學習11.22Java
- java學習9.13Java
- java學習06Java
- java學習03Java