SpringMVC配置,简单实例,文件上传与下载,ajax请求
2013-05-10 17:43
1071 查看
本文基于SpringMVC采用注解方式,从配置到简单常用的功能举例详解,功能已经在本机测试过,能跑起来。
参考资料:iteye博客;
Spring文档;
1、导入相关jar包:
spring-core-3.2.0.jar;spring-web-3.2.0.jar;spring-webmvc-3.2.0.jar;common-annotations.jar;commons-fileupload-1.2.2.jar;spring-beans-3.2.0.RELEASE.jar。
2、在web.xml配置DispatcherServlet,拦截匹配的请求;(初始化过程中默认WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml,也可加入参数classpath指定)
3、配置[servlet-name]-servlet.xml
4、Controller类的编写
5、jsp页面的编写,采用注解方式,无需配置其他配置,与struts2一样,将input name属性与java bean对应,参数自动封装。
6、配置views.properties(默认在classpath下找)
userView.(class)=org.springframework.web.servlet.view.JstlView
userView.url=/WEB-INF/userInfo.jsp
以上完成了文件上传和User信息的获取。
二、下面简单贴出文件下载代码
三、ajax请求json数据
步骤一:加入json jar包 示例:ackson-core-asl-1.7.2.jar ,jackson-mapper-asl-1.7.2.jar
步骤二:spring的配置文件中加入:<mvc:annotation-driven/>(HttpMessageConverter需开启)
步骤三:在返回的对象上加@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。(开启这个注释后AnnotationMethodHandlerAdapter将会初始化以下7个转换器ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter---spring默认的json协议由Jackson完成)
参考资料:iteye博客;
Spring文档;
1、导入相关jar包:
spring-core-3.2.0.jar;spring-web-3.2.0.jar;spring-webmvc-3.2.0.jar;common-annotations.jar;commons-fileupload-1.2.2.jar;spring-beans-3.2.0.RELEASE.jar。
2、在web.xml配置DispatcherServlet,拦截匹配的请求;(初始化过程中默认WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml,也可加入参数classpath指定)
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <!-- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/userInfo.jsp</welcome-file> </welcome-file-list>
3、配置[servlet-name]-servlet.xml
<context:annotation-config /> <!-- 把标记了@Controller注解的类转换为bean --> <context:component-scan base-package="com.test.Controllers" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --><!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" /> --> <!-- 配置视图解析器默认的属性文件是classpath下的:views.properties --> <bean id="resourceBundleViewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> <property name="basename" value="views" > </property> </bean> <!-- 通过setViewClass方法,可以指定用于该解析器生成视图使用的视图类 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/" p:suffix=".jsp"/> <!-- 文件上传配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8"> <property name="maxUploadSize" value="1024000000"/> <property name="resolveLazily" value="true"/> </bean>
4、Controller类的编写
@Controller @RequestMapping("/userInfo.do") public class UserController { /** * 文件上传与获取user对象,这里没连数据库只是将值获取,文件上传目录下 * @param user * @param request * @param files 文件组 * @return * @throws Exception */ @RequestMapping(params="method=saveUser") public ModelAndView saveUser(User user,HttpServletRequest request,@RequestParam("fileName")MultipartFile[] files ) throws Exception{ ModelAndView mav=new ModelAndView(); System.out.println(user.getUserName()+"密码"+user.getUserPwd()); mav.addObject("message","成功!"); mav.addObject("user",user); //List<MultipartFile>files=mRequest.getFiles("fileName"); String uploadpath = request.getSession().getServletContext().getRealPath("/"); System.out.println(uploadpath); //System.out.println(files.isEmpty()); for (MultipartFile multipartFile : files) { if (multipartFile.isEmpty()) continue; System.out.println(multipartFile.getOriginalFilename()); FileOutputStream fileOS = new FileOutputStream(uploadpath + multipartFile.getOriginalFilename()); fileOS.write(multipartFile.getBytes()); System.out.println(fileOS); fileOS.close(); } /*FileOutputStream fileOS = new FileOutputStream(uploadpath+file.getOriginalFilename()); fileOS.write(file.getBytes()); System.out.println(fileOS); fileOS.close();*/ mav.setViewName("userView");//设置返回的视图,具体页面将会在views.properties里设置 return mav; }
5、jsp页面的编写,采用注解方式,无需配置其他配置,与struts2一样,将input name属性与java bean对应,参数自动封装。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> </head> <body> <form id="addUserInfoForm" action="<%=request.getContextPath()%>/userInfo.do?method=saveUser" method="post" enctype="multipart/form-data"> <input name="userName" value="${user.userName}"/> <input name="userPwd" value="${user.userPwd}"/> <input type="file" name="fileName"> <input type="file" name="fileName"> <input type="submit" value="提交"/> </form> </body> </html>
6、配置views.properties(默认在classpath下找)
userView.(class)=org.springframework.web.servlet.view.JstlView
userView.url=/WEB-INF/userInfo.jsp
以上完成了文件上传和User信息的获取。
二、下面简单贴出文件下载代码
/** * 文件下载 * @param request * @param response * @return 由于只是测试,很多信息都是手动写死的,凑合着看。 * @throws Exception */ @RequestMapping(params="method=downLoadFile") public ModelAndView downLoadFile(HttpServletRequest request,HttpServletResponse response) throws Exception{ BufferedInputStream bis = null; BufferedOutputStream bos = null; // String downLoadPath="rr.sql"; String realName="rr.sql"; //设置下载文件名字 String fileName=request.getParameter("fileName"); //获取完整的文件名 System.out.println(fileName); long fileLength=new File(fileName).length(); String ctxPath = request.getSession().getServletContext().getRealPath("/"); response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment; filename=" + new String(realName.getBytes("utf-8"), "ISO8859-1")); response.setHeader("Content-Length", String.valueOf(fileLength)); bis = new BufferedInputStream(new FileInputStream(fileName)); bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } bis.close(); bos.close(); ModelAndView mav=new ModelAndView(); return null; }JSP下载页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> </head> <body> <form id="addUserInfoForm" action="<%=request.getContextPath()%>/userInfo.do?method=saveUser" method="post" enctype="multipart/form-data"> <a href="<%=request.getContextPath()%>/userInfo.do?method=downLoadFile&fileName=F:\Server\apache-tomcat-6.0.36\webapps\SpringMVC\rr.sql">下载</a> <input type="submit" value="提交"/> </form> </body> </html>上面的参数fileName直接写的,因为没有连数据库。
三、ajax请求json数据
步骤一:加入json jar包 示例:ackson-core-asl-1.7.2.jar ,jackson-mapper-asl-1.7.2.jar
步骤二:spring的配置文件中加入:<mvc:annotation-driven/>(HttpMessageConverter需开启)
步骤三:在返回的对象上加@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。(开启这个注释后AnnotationMethodHandlerAdapter将会初始化以下7个转换器ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter---spring默认的json协议由Jackson完成)
相关文章推荐
- SpringMVC和jQuery的Ajax简单文件上传下载示例
- SpringMVC和jQuery的Ajax简单文件上传下载示例
- spring mvc 第二天【注解实现springmvc Handler处理ajax简单请求 的配置】
- springMVC文件上传下载-实例1
- springmvc文件上传下载简单实现案例(ssm框架使用)
- SpringMVC文件上传的配置实例详解
- SpringMVC Ajax上传文件实例
- python实现的简单FTP上传下载文件实例
- springMVC文件上传下载-实例2
- Ajax请求二进制流进行处理(ajax异步下载文件)的简单方法
- SpringMVC ajax技术无刷新文件上传下载删除示例
- springmvc文件上传下载简单实现案例(ssm框架使用)
- springMVC文件上传的简单配置
- SSM框架-SpringMVC 实例文件上传下载
- SpringMVC+Ajax实现文件批量上传和下载功能实例代码
- struts2开发文件上传下载的简单实例
- springMVC配置环境实现文件上传和下载
- 使用springMVC实现文件上传和下载之环境配置与上传
- SSM框架-SpringMVC 实例文件上传下载
- SpringMVC简单入门 源码jar包下载和文件上传