首先JQuery中封装了一些方便的方法:$.ajax()、$.get()、$.post()、$.getJSON()
除了$.ajax(),$.get()、$.post()、$.getJSON()使用方法都一样
例如常用的$.getJSON():
$(function (){
$("#send").click(function(){
$.getJSON("jsp/ajax", //提交的URL地址
{
name:$("#name").val(), //提交的数据
content:$("#content").val()
},
getAjaxData //回调函数,注意getAjaxData不能加()
)
})
})
function getAjaxData(data){ //响应的操作
alert(data)
}
//创建一个页面控制器
@Controller
public class CommentAjaxController {
@RequestMapping("jsp/ajax")
@ResponseBody //将ajax发送为客户端的Java对象自动转换为json格式时
public String CommentAjax(String name,String content) { //返回类型为java对象,不能为ModelMap
System.out.println(name);
return name; //返回的数据不再是逻辑视图名,而是页面需要的数据
}
}
SpringMVC拦截器
//创建一个拦截器,继承HandlerInterceptorAdapter类
public class MyIntercepor extends HandlerInterceptorAdapter{
//在前端控制器返回响应到用户之前,不能拦截
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("在前端控制器返回响应到用户之前,不能拦截");
}
//在页面控制器返回模型数据到前端控制器前,不能拦截
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("在页面控制器返回模型数据到前端控制器前,不能拦截");
}
//在前端控制器将请求派发给页面控制器前,可以拦截请求
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("在前端控制器将请求派发给页面控制器前,可以拦截请求");
return true;
}
}
需要添加springMVC-servlet.xml配置
<!-- 配置拦截器 (可选)-->
<mvc:interceptors>
<mvc:interceptor>
<!-- 配制URL地址映射 -->
<mvc:mapping path="/login"/>
<!-- 拦截器所在的地址 -->
<bean class="com.mitu.interceptor.MyIntercepor"/>
</mvc:interceptor>
<!-- 添加其他拦截器 -->
</mvc:interceptors>
SpringMVC中文件上传(非ajax,上传多个文件)
首先需要表单设置:enctype="multipart/form-data"
<form action="uploads" method="post" enctype="multipart/form-data">
文件标题: <input type="text" name="title" /> <br/>
第一个文件: <input type="file" name="file1" /> <br/>
第二个文件: <input type="file" name="file2" /> <br/>
第三个文件: <input type="file" name="file3" /> <br/>
<input type="submit" value="提 交" />
</form>
页面控制器:
@Controller
public class FileUploadController {
@RequestMapping("uploadCard")
public String uploadCard(@RequestParam(value="myfile", required=true)MultipartFile[] myfile,HttpServletRequest request) throws IOException, ServletException {
if (myfile !=null && myfile.length>0) {
//如果只是上传一个文件,则只需要MultipartFile类型接收文件即可,而且无需显式指定@RequestParam注解
//如果想上传多个文件,那么这里就要用MultipartFile[]类型来接收文件,并且要指定@RequestParam注解
//上传文件时,前台表单中的所有<input type="file"/>的name都应该是myfile,否则参数里的myfile无法获取到所有上传的文件
for (int i = 0;i<myfile.length;i++){
long start = System.currentTimeMillis();
try {
String filePath = request.getSession().getServletContext()
.getRealPath("/") + "uploads/" +start+ myfile[i].getOriginalFilename();
//转存文件
myfile[i].transferTo(new File(filePath));
}catch (Exception e){
e.printStackTrace();
}
System.out.println("成功");
} return "ok";
} else {
System.out.println("失败");
return "no";
}
}
}
需要添加springMVC-servlet.xml配置:
<!-- 配置文件上传(可选) -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 字符集编码 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 设置上传文件最大字节数 -->
<property name="maxUploadSize" value="10485760000"/>
<!-- 设置上传文件缓冲区大小 -->
<property name="maxInMemorySize" value="40960"/>
</bean>