配置springmvc.xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 8 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 9 10 <context:component-scan base-package="com.neuedu"></context:component-scan> 11 12 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 13 <property name="prefix" value="/WEB-INF/views/"></property> 14 <property name="suffix" value=".jsp"></property> 15 </bean> 16 17 <!-- 数据格式化配置 --> 18 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> 19 <property name="order" value="100"></property> 20 </bean> 21 <!-- 上传配置 --> 22 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" > 23 <property name="defaultEncoding" value="utf-8"></property> 24 <property name="maxInMemorySize" value="102400"></property> 25 </bean> 26 27 <mvc:default-servlet-handler/> 28 <mvc:annotation-driven conversion-service="ConversionService"></mvc:annotation-driven> 29 30 <!-- 数据类型转换器 --> 31 <bean id="ConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 32 <property name="converters"> 33 <set> 34 <ref bean="myConverter"/> 35 </set> 36 </property> 37 </bean> 38 <!-- 自定义拦截器 --> 39 <mvc:interceptors> 40 <bean class="com.neuedu.interceptor.MyInterceptor"></bean> 41 </mvc:interceptors> 42 </beans>
controller代码
1 package com.neuedu.controller; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 import java.util.UUID; 10 11 import javax.servlet.ServletContext; 12 import javax.servlet.http.HttpServletRequest; 13 14 import org.springframework.stereotype.Controller; 15 import org.springframework.web.bind.annotation.RequestMapping; 16 import org.springframework.web.bind.annotation.RequestMethod; 17 import org.springframework.web.bind.annotation.RequestParam; 18 import org.springframework.web.multipart.commons.CommonsMultipartFile; 19 20 import com.neuedu.bean.Student; 21 22 import jdk.nashorn.internal.ir.RuntimeNode.Request; 23 24 @Controller 25 public class AController { 26 //测试View 27 @RequestMapping(value="/testView") 28 public String testView(){ 29 System.out.println("handler方法执行了"); 30 return "myView"; 31 } 32 33 //数据格式化 34 @RequestMapping(value="/addStu",method=RequestMethod.POST) 35 public String addStu(Student student){ 36 System.out.println("addStu方法执行了"); 37 return "success"; 38 } 39 40 //数据类型转换 41 @RequestMapping(value="/testConverter",method=RequestMethod.POST) 42 public String testConverter(@RequestParam(value="stu") Student stu) { 43 System.out.println(stu); 44 return "success"; 45 } 46 47 //上传 48 @RequestMapping(value="/testUpload",method=RequestMethod.POST) 49 public String testUpload(HttpServletRequest request,@RequestParam(value="desc") String desc, @RequestParam(value="photo") CommonsMultipartFile file){ 50 ServletContext servletContext=request.getServletContext(); 51 String realPath=servletContext.getRealPath("/upload"); 52 File file2=new File(realPath); 53 System.out.println(realPath); 54 if(!file2.exists()){ 55 file2.mkdir(); 56 } 57 InputStream in=null; 58 OutputStream out=null; 59 String perfix=UUID.randomUUID().toString(); 60 perfix=perfix.replace("-", ""); 61 String fileName=perfix+"_"+file.getOriginalFilename(); 62 try { 63 in=file.getInputStream(); 64 out=new FileOutputStream(new File(realPath+"\\"+fileName)); 65 byte[] buffer=new byte[10240]; 66 int len=0; 67 while((len=in.read(buffer))!=-1){ 68 out.write(buffer, 0, len); 69 } 70 out.close(); 71 in.close(); 72 } catch (IOException e) { 73 // TODO Auto-generated catch block 74 e.printStackTrace(); 75 } 76 System.out.println(desc); 77 System.out.println(file.getOriginalFilename()); 78 return "success"; 79 } 80 81 @RequestMapping(value="/testInterceptor") 82 public String testInterceptor(){ 83 System.out.println("到达testInterceptor"); 84 return "success"; 85 } 86 }
数据类型转换器converter
1 package com.neuedu.converter; 2 3 import org.springframework.core.convert.converter.Converter; 4 import org.springframework.stereotype.Component; 5 6 import com.neuedu.bean.Student; 7 10 @Component 11 public class MyConverter implements Converter<String,Student>{ 12 13 14 @Override 15 public Student convert(String stu) { 16 if(stu!=null){ 17 String[] split=stu.split("-"); 18 if(split.length==2){ 19 String name=split[0]; 20 Integer age=Integer.parseInt(split[1]); 21 Student student=new Student(); 22 student.setName(name); 23 student.setAge(age); 24 return student; 25 } 26 } 27 return null; 28 } 32 }
拦截器interceptor代码
package com.neuedu.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3){ System.out.println("afterCompletion方法"); } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3){ System.out.println("postHandle方法"); } @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { System.out.println("preHandle方法"); return true; } }
jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="${pageContext.request.contextPath}/script/jquery-1.9.1.min.js"></script> </head> <body> <!-- 测试View --> <a href="${pageContext.request.contextPath}/testView">测试View</a> <br> <br> <!-- 数据格式化 --> <form action="${pageContext.request.contextPath}/addStu" method="post" > 姓名:<input type="text" name="name"> <br> 年龄:<input type="text" name="age"> <br> 生日:<input type="text" name="brith"> <br> 薪水:<input type="text" name="salary"> <br> <input type="submit" value="提交"> </form> <br> <!-- 数据类型转换 --> <form action="${pageContext.request.contextPath}/testConverter" method="post"> 学生:<input type="text" name="stu"> <br> <input type="submit" value="测试converter"> </form> <br> <!-- 文件上传 --> <form action="${pageContext.request.contextPath}/testUpload" method="post" enctype="multipart/form-data"> file:<input type="file" name="photo"> <br> desc:<input type="text" name="desc"> <br> <input type="submit" value="提交"> </form> <br> <a href="${pageContext.request.contextPath}/testInterceptor">测试Interceptor</a> </body> </html>