基于springMVC 3.0项目开发实例(六)

2014-11-23 19:17:51 · 作者: · 浏览: 275
p/jstl/core"%>

${requestScope.a}

${requestScope.user.uname}

地址栏输入:http://localhost:8080/springmvc03/user.do method=reg

结果为:

基于spring 3.0mvc 框架的文件上传实现

1. spring使用了apache-commons下得上传组件,因此,我们需要引入两个jar包:

1. apache-commons-fileupload.jar

2. apache-commons-io.jar

2. 在springmvc-servlet.xml配置文件中,增加CommonsMultipartResoler配置:

"multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

"defaultEncoding"value= "gbk"/>

"maxInMemorySize"value= "10240"/>

"uploadTempDir"value= "/upload/"/>

"maxUploadSize"value= "-1"/>

3. 建立upload.jsp页面,内容如下:

<%@ page language="java"import="java.util.*"pageEncoding="gbk"%>

测试<u>springmvc</u>中上传的实现

"upload.do" method= "post"enctype= "multipart/form-data">

"text"name= "name"/>

"file"name= "file"/>

"submit"/>

4. 建立控制器,代码如下:

package com.sxt.web;

import java.io.File;

import java.util.Date;

import javax.servlet.ServletContext;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.context.ServletContextAware;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

@Controller

public class FileUploadController implements ServletContextAware {

private ServletContext servletContext;

@Override

public void setServletContext(ServletContext context) {

this.servletContext = context;

}

@RequestMapping(value="/upload.do", method = RequestMethod.POST)

public String handleUploadData(String name,@RequestParam("file")[微软用户2] CommonsMultipartFile file){

if (!file.isEmpty()) {

String path = this.servletContext.getRealPath("/tmp/"); //获取本地存储路径

System.out.println(path);

String fileName = file.getOriginalFilename();

String fileType = fileName.substring(fileName.lastIndexOf("."));

System.out.println(fileType);

File file2 = new File(path,new Date().getTime() + fileType); //新建一个文件

try {

file.getFileItem().write(file2); //将上传的文件写入新建的文件中

} catch (Exception e) {

e.printStackTrace();

}

return "redirect:upload_ok.jsp";

}else{

return "redirect:upload_error.jsp";

}

}

}

5. 建立upload_ok.jsp页面

<%@ page language="java"import="java.util.*"pageEncoding="gbk"%>

上传成功!

6. 建立upload_error.jsp页面

<%@page language="java"import="java.util.*"pageEncoding="gbk"%>

上传失败!

7. 发布项目,运行测试:http://localhost:8080/springmvc03/upload.jsp

进入项目发布后的目录,发现文件上传成功:

处理ajax请求

spring使用了jackson类库,帮助我们在java对象和json、xml数据之间的互相转换。他可以将控制器返回的对象直接转换成json数据,供客户端使用。客户端也可以传送json数据到服务器进行直接转换。使用步骤如下:

1. 项目中需要引入如下两个jar包:

jackson-core-asl-1.7.2jar

jackson-mapper-asl-1.7.2jar

2. spring配置文件中修改:

"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

"cacheSeconds"value= "0"/>

"messageConverters">

"org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">

3. 客户端代码a.jsp如下:

<%@page language="java"import="java.util.*"pageEncoding="gbk"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

"<%=basePath%> ">

My JSP 'index.jsp' starting page</span> </div> <div class="pagination mt-40"> <a href="bencandy.php?fid=76&aid=15304&page=1" title="首页">首页</A> <a href="bencandy.php?fid=76&aid=15304&page=5" title="上一页">上一页</A> <a href="bencandy.php?fid=76&aid=15304&page=3" title="第3页">3</a> <a href="bencandy.php?fid=76&aid=15304&page=4" title="第4页">4</a> <a href="bencandy.php?fid=76&aid=15304&page=5" title="第5页">5</a> <a href='#'><font color=red>6</font></a> <a href="bencandy.php?fid=76&aid=15304&page=7" title="第7页">7</a> <a href="bencandy.php?fid=76&aid=15304&page=8" title="第8页">8</a> <a href="bencandy.php?fid=76&aid=15304&page=7" title="下一页">下一页</A> <a href="bencandy.php?fid=76&aid=15304&page=8" title="尾页">尾页</A> <a href='#'><font color=red>6</font>/8/8</a> </div> <div class="article-footer mt-60 pt-40"> <div class="share-box"> <!-- Baidu Share Code Simplified or Removed if not needed. Keeping basic structure --> <div class="bdsharebuttonbox"><a href="#" class="bds_more" data-cmd="more"></a><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a><a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a></div> <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"24"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> </div> <div class="prev-next mt-20"> <div class="prev"> <span class="label">上一篇</span> <a href="bencandy.php?fid=76&id=15305" onclick="" class="link">ftk学习记(list篇)</a> </div> <div class="next"> <span class="label">下一篇</span> <a href="bencandy.php?fid=76&id=15303" onclick="" class="link">策略模式Strategy――回家乘什么..</a> </div> </div> </div> </div> </div> </div> </div><!-- End .container.main-content --> <footer class="container mt-20 site-footer"> <div id="copyright"> Copyright © https://www.cppentry.com all rights reserved <a href="http://www.miibeian.gov.cn" target="_blank">粤ICP备13067022号-3</a><br> </div> </footer> <script> // Logic for double click admin editing </script> <script> if(typeof clickEdit !== 'undefined') clickEdit.init(); </script> </body> </html>