一. MultiActionController 的控制类用Ajax,post异步请求,现在提供两个个方法来解决问题:
注意:是返回的json格式必须正确,否则出错!
1.在对应的控制类中写ajax方法
xml配置:
java代码:
public ModelAndView selectUploadPercent(HttpServletRequest request,HttpServletResponse response){
System.out.println("方法进入controller");
HttpSession session = request.getSession();
int percent = session.getAttribute("upload_percent") == null ? 0: Integer.parseInt(session.getAttribute("upload_percent").toString());
int sum = session.getAttribute("upload_sum") == null ? 0: Integer.parseInt(session.getAttribute("upload_sum").toString());
int end = session.getAttribute("upload_end") == null ? 0: Integer.parseInt(session.getAttribute("upload_end").toString());
String jsonStr = "{percent:'+percent+',sum:'+sum+',end:'+end+'}";
Map<String, Integer> map = new HashMap<String, Integer>();
try
{
map.put("percent",percent);
map.put("sum",sum);
map.put("end",end);
JSONArray json1 = JSONArray.fromObject(map);
//将json数据返回
response.getWriter().write(json1.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
js代码:
function showPercent() {
$.ajax( {
type : "POST",
url : "intoNetTCSubmit.htm?method=selectUploadPercent",
dataType : "json",
success : function(data) {
console.log(data);
var end = 0;
var per = 0;
end = data[0].end;
per = data[0].percent ;
},
error : function(data) {
alert("ajax异常!!!");
}
});
}
2.首先新建一个servlet类
方案:一般控制类继承MultiActionController异步请求后没法得到回调参数,现在我们重新做一个控制类专门处理异步请求,先新建一个servlet继承HttpServlet这个类,但不要继承MultiActionController;
2.1配置web.xml
2.2 <servlet>标签与<servlet-mapping>标签中的<servlet-name>中的名字需要一致;
2.3 <servlet-class> 标签中为新建servlet类的全类名;
2.4 <url-pattern> 中为访问servlet类的URL;
2.5接下来是jsp 中的异步请求,我们这里用post代替Ajax做异步请求:
java代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String data1 = "";
try
{
List<String> lii = new ArrayList<String>();
HttpSession session = request.getSession();
int percent = session.getAttribute("upload_percent") == null ? 0
: Integer.parseInt(session.getAttribute("upload_percent")
.toString());
int sum = session.getAttribute("upload_sum") == null ? 0 : Integer
.parseInt(session.getAttribute("upload_sum").toString());
int end = session.getAttribute("upload_end") == null ? 0 : Integer
.parseInt(session.getAttribute("upload_end").toString());
// 需要json格式数据,自己拼接
String jsonStr = "{percent:'" + percent + "',sum:'" + sum
+ "',end:'" + end + "'}";
lii.add(jsonStr);
data1 = Arrays.toString(lii.toArray());
response.getWriter().write(data1);
}
catch (IOException e)
{
e.printStackTrace();
}
}
js代码:
$.post("selectUploadPercent.do", {"a": "22"}, function(data, status) {
var end = 0;
var per = 0;
if (status == "success") {//成功回调参数
var da = eval(data) //转json
end = da[0].end;
per = da[0].percent ;
});