javascript
学习日志day52(2021-09-22)(1、SpringMVC文件上传 2、Spring发送邮件 3、拦截器 4、日志 )
學(xué)習(xí)內(nèi)容:學(xué)習(xí)Spring框架(Day52)
1、SpringMVC文件上傳
2、Spring發(fā)送郵件
3、攔截器
4、日志
1、SpringMVC文件上傳
(1)需要的jar包
commons-fileupload.jar
(2)在mvc-servlet.xml文件配置文件上傳解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 可選屬性,最大上傳字節(jié)--> <property name="maxUploadSize" value="100000"/> </bean>(3)上傳多個(gè)文件
創(chuàng)建upload.js頁面
上傳多個(gè)文件
@PostMapping("/upload") public String fileUpload(String desc, MultipartFile[] file) {int count = 1;System.out.println("文件描述:" + desc);for (MultipartFile mf : file) {System.out.println(mf.getContentType()); //獲取文件類型System.out.println(mf.getName());//獲取file控件name屬性值System.out.println(mf.getOriginalFilename());//上傳的文件名稱System.out.println(mf.getSize());//獲取文件大小try {InputStream is = mf.getInputStream();OutputStream os = new FileOutputStream(new File("e:/img" + count + ".jpg"));int len = -1;while ((len = is.read()) != -1) {os.write(len);}os.flush();is.close();os.close();count++;} catch (IOException e) {e.printStackTrace();}return "upload"; }SpringMVC文件上傳方法
@PostMapping("/upload") public String fileUpload(String desc, MultipartFile[] file) {int count = 1;System.out.println("文件描述:" + desc);for (MultipartFile mf : file) {System.out.println(mf.getContentType()); //獲取文件類型System.out.println(mf.getName());//獲取file控件name屬性值System.out.println(mf.getOriginalFilename());//上傳的文件名稱System.out.println(mf.getSize());//獲取文件大小try {String path = "e:/img/" + mf.getOriginalFilename();mf.transferTo(new File(path));} catch (IOException e) {e.printStackTrace();}}return "upload"; }2、Spring發(fā)送郵件
(1)需要的jar包
mail.jar
spring-context-support.jar
(2)在applicationContext.xml文件配置發(fā)送郵件解析器
<!--配置郵件解析器--> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="smtp.163.com"/><property name="username" value="yang7email@163.com"/><property name="password" value="ROBQTYBQTQVSQVNW"/><property name="defaultEncoding" value="UTF-8"/> </bean>(3)新建線程發(fā)送郵件
@Controller public class EmailController {@Autowiredprivate JavaMailSender javaMailSender;@GetMapping("/email/send")public String sendEmail() {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom("yang7email@163.com");message.setSubject("Hi,this is spirng mail");message.setTo("1064289281@qq.com");message.setText("hi,xixing");javaMailSender.send(message);}});thread.start();return "";} }3、攔截器
(1)攔截器和過濾器類似,但是只能攔截到controller請求。
創(chuàng)建攔截器Logininterceptor.java,用戶登錄后才能請求到使用頁面,否則跳轉(zhuǎn)到登錄信息頁面
(2)在mvc-servlet.xml配置攔截器
<!--配置攔截器--> <mvc:interceptors><mvc:interceptor><!--攔截器作用的路徑,/**代表所有--><mvc:mapping path="/**"/><!--通過set注入方法向攔截器注入uris,請求這些路徑下的頁面不用攔截--><bean class="com.hisoft.interceptor.LoginInterceptor"><property name="uris"><list><value>/user/login</value><value>/user/msg</value></list></property></bean></mvc:interceptor> </mvc:interceptors>(3)配置異常解析器
可以拋出自定義異常,通過異常解析器來進(jìn)行重定向
4、日志
(1)日志組件有Apache Commons Logging、Log4j、SLF4J、Log4j2等等,這里使用Log4j組件
需要的jar包有 log4j.jar
日志級別從高到低為:fatal→error→warn→info→debug
(2)創(chuàng)建log4j.properties配置文件
#輸出器,也就是當(dāng)前日志輸出的位置,ConsoleAppender代表控制臺(tái) log4j.appender.A1=org.apache.log4j.ConsoleAppender #指定輸出日志的格式 log4j.appender.A1.layout=org.apache.log4j.PatternLayout #定義輸出日志的格式,\r\n表示回車換行 log4j.appender.A1.layout.ConversionPattern=[%p](%d)---%l--%m\r\n #定義輸出日志的優(yōu)先級,定義的級別和比定義優(yōu)先級更高的級別的輸出日志都可以輸出 log4j.rootLogger=debug,A1(3)輸出格式中特殊符號(hào)代表的含義:
%m 輸出代碼中指定的消息
%p 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)
%c 輸出所屬的類目,通常就是所在類的全名
%t 輸出產(chǎn)生該日志事件的線程名
%n 輸出一個(gè)回車換行符,Windows平臺(tái)為“/r/n”,Unix平臺(tái)為“/n”
%d 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式, 比如:%d{yyy MMM dd HH:mm:ss , SSS}
%l 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。
(4)Log4jTest.java文件中輸出日志信息
//將當(dāng)前類的映射傳入Logger.getLogger方法中 Logger logger = Logger.getLogger(Log4jTest.class); log.debug("debug message"); log.info("info message"); log.warn("warn message"); log.error("error message"); log.fatal("fatal message");(5)將日志信息輸出到文件中
#日志信息輸出到文件 log4j.appender.fout=org.apache.log4j.FileAppender log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n #輸出的文件的路徑 log4j.appender.fout.file=D:/logs/log.log log4j.rootLogger=fout(6)以天為單位生成日志文件
#日志信息以天為單位輸出到文件 log4j.appender.B=org.apache.log4j.DailyRollingFileAppender log4j.appender.B.layout=org.apache.log4j.PatternLayout log4j.appender.B.layout.ConversionPattern=[%p](%d)---%l--%m log4j.appender.B.DatePattern='.'yyyy-MM-dd log4j.appender.B.file=D:/logs/log.log log4j.rootLogger=fout(7)根據(jù)日志級別存放的不同的位置
log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n log4j.appender.fout.DatePattern='.'yyyy-MM-dd #指定輸出等級為INFO log4j.appender.fout.Threshold=INFO log4j.appender.fout.file=D:/logs/log.loglog4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%p](%d)---%l--%m\r\n log4j.rootLogger=DEBUG, A1,fout(8)根據(jù)包輸出日志信息
log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n log4j.appender.fout.DatePattern='.'yyyy-MM-dd log4j.appender.fout.file=C:/logs/x.log log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%p](%d)---%l--%m\r\n #log4j.logger后面加上包名,表示只輸出這個(gè)包中日志信息 log4j.logger.com.google=ERROR,fout log4j.rootLogger=DEBUG, A1總結(jié)
以上是生活随笔為你收集整理的学习日志day52(2021-09-22)(1、SpringMVC文件上传 2、Spring发送邮件 3、拦截器 4、日志 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mkv格式视频怎么转成mp4?
- 下一篇: JS中改变this指向的两种方法