Commit 863a8d92 by WeiCong

验证码和工具类回退

parent f9c83778
package org.sss.presentation.noui.api.response; package org.sss.presentation.noui.api.response;
public class NoUiParam { public class NoUiVersion {
private String version = "1.0.0"; private String version = "1.0.0";
......
...@@ -23,7 +23,7 @@ import org.sss.presentation.noui.api.exception.NoUiException; ...@@ -23,7 +23,7 @@ import org.sss.presentation.noui.api.exception.NoUiException;
import org.sss.presentation.noui.api.model.Alias; import org.sss.presentation.noui.api.model.Alias;
import org.sss.presentation.noui.api.request.NoUiRequest; import org.sss.presentation.noui.api.request.NoUiRequest;
import org.sss.presentation.noui.api.response.ErrorCodes; import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.NoUiParam; import org.sss.presentation.noui.api.response.NoUiVersion;
import org.sss.presentation.noui.api.response.Result; import org.sss.presentation.noui.api.response.Result;
import org.sss.presentation.noui.api.response.ResultUtil; import org.sss.presentation.noui.api.response.ResultUtil;
import org.sss.presentation.noui.common.Constants; import org.sss.presentation.noui.common.Constants;
...@@ -48,7 +48,7 @@ public abstract class AbstractCommonController { ...@@ -48,7 +48,7 @@ public abstract class AbstractCommonController {
protected static String ON_STREAM_DOWNLOAD = "ON_STREAM_DOWNLOAD"; protected static String ON_STREAM_DOWNLOAD = "ON_STREAM_DOWNLOAD";
@Autowired @Autowired
private NoUiParam noUiParam; private NoUiVersion noUiVersion;
public String getMainPanel(){ public String getMainPanel(){
return ""; return "";
...@@ -139,10 +139,10 @@ public abstract class AbstractCommonController { ...@@ -139,10 +139,10 @@ public abstract class AbstractCommonController {
Map<String, Object> afterReturnData = handleReturnData(eventType, context, noUiRequest, alias); Map<String, Object> afterReturnData = handleReturnData(eventType, context, noUiRequest, alias);
ret = ResultUtil.result(NoUiPresentationUtil.retCode(context), NoUiPresentationUtil.retMsg(context), afterReturnData, ret = ResultUtil.result(NoUiPresentationUtil.retCode(context), NoUiPresentationUtil.retMsg(context), afterReturnData,
NoUiPresentationUtil.handleErrorReturnData(context, alias), NoUiPresentationUtil.handleCodeTableReturnData(context, alias),noUiParam.getVersion()); NoUiPresentationUtil.handleErrorReturnData(context, alias), NoUiPresentationUtil.handleCodeTableReturnData(context, alias), noUiVersion.getVersion());
} catch (Exception e) { } catch (Exception e) {
log.error("OnClick command error", e); log.error("OnClick command error", e);
ret = ResultUtil.result(ErrorCodes.ERROR, "hander error", e.getMessage(),noUiParam.getVersion()); ret = ResultUtil.result(ErrorCodes.ERROR, "hander error", e.getMessage(), noUiVersion.getVersion());
} finally { } finally {
if (context != null) if (context != null)
{ {
......
...@@ -9,7 +9,7 @@ import org.springframework.http.HttpStatus; ...@@ -9,7 +9,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.sss.presentation.noui.api.response.NoUiParam; import org.sss.presentation.noui.api.response.NoUiVersion;
import org.sss.presentation.noui.common.Constants; import org.sss.presentation.noui.common.Constants;
import org.sss.presentation.noui.jwt.RedisLoginInfo; import org.sss.presentation.noui.jwt.RedisLoginInfo;
import org.sss.presentation.noui.util.RedisUtil; import org.sss.presentation.noui.util.RedisUtil;
...@@ -24,14 +24,14 @@ public class FileBrowserController { ...@@ -24,14 +24,14 @@ public class FileBrowserController {
private static final Log log = LogFactory.getLog(FileBrowserController.class); private static final Log log = LogFactory.getLog(FileBrowserController.class);
@Autowired @Autowired
private NoUiParam noUiParam; private NoUiVersion noUiVersion;
@RequestMapping(value = "/fileBrowser/{docpath}/{usrName}/{fileName}/{fileExt}/{safeCode}", method = RequestMethod.GET) @RequestMapping(value = "/fileBrowser/{docpath}/{usrName}/{fileName}/{fileExt}/{safeCode}", method = RequestMethod.GET)
public ResponseEntity download(@PathVariable String docpath,@PathVariable String usrName, @PathVariable String fileName, @PathVariable String fileExt, @PathVariable String safeCode) { public ResponseEntity download(@PathVariable String docpath,@PathVariable String usrName, @PathVariable String fileName, @PathVariable String fileExt, @PathVariable String safeCode) {
try { try {
String file = fileName+"." + fileExt; String file = fileName+"." + fileExt;
if (checkFileName(fileName) && authVerify(usrName, file, safeCode)) { if (checkFileName(fileName) && authVerify(usrName, file, safeCode)) {
byte[] bytes = FileUtils.readFileToByteArray(new File(noUiParam.getRootFilePath()+docpath+"/"+file)); byte[] bytes = FileUtils.readFileToByteArray(new File(noUiVersion.getRootFilePath()+docpath+"/"+file));
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Content-Disposition", "attachment;filename="+file); headers.set("Content-Disposition", "attachment;filename="+file);
ResponseEntity entity = new ResponseEntity<>(bytes, headers, HttpStatus.OK); ResponseEntity entity = new ResponseEntity<>(bytes, headers, HttpStatus.OK);
......
...@@ -14,7 +14,7 @@ import org.sss.presentation.noui.api.model.Menu; ...@@ -14,7 +14,7 @@ import org.sss.presentation.noui.api.model.Menu;
import org.sss.presentation.noui.api.request.NoUiRequest; import org.sss.presentation.noui.api.request.NoUiRequest;
import org.sss.presentation.noui.api.response.ErrorCode; import org.sss.presentation.noui.api.response.ErrorCode;
import org.sss.presentation.noui.api.response.ErrorCodes; import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.NoUiParam; import org.sss.presentation.noui.api.response.NoUiVersion;
import org.sss.presentation.noui.api.response.ResultUtil; import org.sss.presentation.noui.api.response.ResultUtil;
import org.sss.presentation.noui.common.Constants; import org.sss.presentation.noui.common.Constants;
import org.sss.presentation.noui.context.NoUiContext; import org.sss.presentation.noui.context.NoUiContext;
...@@ -37,7 +37,7 @@ public class LoginController { ...@@ -37,7 +37,7 @@ public class LoginController {
public static final String ERROR="error"; public static final String ERROR="error";
@Autowired @Autowired
private NoUiParam noUiParam; private NoUiVersion noUiVersion;
@ResponseBody @ResponseBody
@RequestMapping(value = "/login", method = RequestMethod.POST) @RequestMapping(value = "/login", method = RequestMethod.POST)
...@@ -90,23 +90,23 @@ public class LoginController { ...@@ -90,23 +90,23 @@ public class LoginController {
//解决初次登陆,超期限登陆 //解决初次登陆,超期限登陆
final Object o = map.get(ERROR); final Object o = map.get(ERROR);
if (Objects.isNull(o)) { if (Objects.isNull(o)) {
return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap,noUiParam.getVersion()); return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap, noUiVersion.getVersion());
}else { }else {
ErrorCode errorCode = (ErrorCode) o; ErrorCode errorCode = (ErrorCode) o;
log.error(errorCode); log.error(errorCode);
return ResultUtil.result(errorCode.getCode(), errorCode.getMessage(), retDatamap,noUiParam.getVersion()); return ResultUtil.result(errorCode.getCode(), errorCode.getMessage(), retDatamap, noUiVersion.getVersion());
} }
}else { }else {
final ErrorCode errorCode = (ErrorCode) map.get(ERROR); final ErrorCode errorCode = (ErrorCode) map.get(ERROR);
log.error(errorCode); log.error(errorCode);
session.removeAttribute(Constants.VERIFYCODE); session.removeAttribute(Constants.VERIFYCODE);
return ResultUtil.result(errorCode.getCode(), errorCode.getMessage(), null,noUiParam.getVersion()); return ResultUtil.result(errorCode.getCode(), errorCode.getMessage(), null, noUiVersion.getVersion());
} }
} catch (Exception e) { } catch (Exception e) {
log.error("Login command error", e); log.error("Login command error", e);
//throw new NoUiException("Login command error", e); //throw new NoUiException("Login command error", e);
// return ResultUtil.result(ErrorCodes.ERROR, "login failed with exception", null); // return ResultUtil.result(ErrorCodes.ERROR, "login failed with exception", null);
return ResultUtil.result(ErrorCode.SYSTEM_ERROR.getCode(), ErrorCode.SYSTEM_ERROR.getMessage(), null,noUiParam.getVersion()); return ResultUtil.result(ErrorCode.SYSTEM_ERROR.getCode(), ErrorCode.SYSTEM_ERROR.getMessage(), null, noUiVersion.getVersion());
} }
finally{ finally{
if (context != null) if (context != null)
......
...@@ -13,7 +13,7 @@ import org.sss.common.model.Argument; ...@@ -13,7 +13,7 @@ import org.sss.common.model.Argument;
import org.sss.common.model.IResult; import org.sss.common.model.IResult;
import org.sss.presentation.noui.api.request.NoUiRequest; import org.sss.presentation.noui.api.request.NoUiRequest;
import org.sss.presentation.noui.api.response.ErrorCodes; import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.NoUiParam; import org.sss.presentation.noui.api.response.NoUiVersion;
import org.sss.presentation.noui.api.response.ResultUtil; import org.sss.presentation.noui.api.response.ResultUtil;
import org.sss.presentation.noui.context.NoUiContext; import org.sss.presentation.noui.context.NoUiContext;
import org.sss.presentation.noui.context.NoUiContextManager; import org.sss.presentation.noui.context.NoUiContextManager;
...@@ -28,7 +28,7 @@ import java.util.Map; ...@@ -28,7 +28,7 @@ import java.util.Map;
public class UkeyLoginController { public class UkeyLoginController {
@Autowired @Autowired
private NoUiParam noUiParam; private NoUiVersion noUiVersion;
private static final Log log = LogFactory.getLog(UkeyLoginController.class); private static final Log log = LogFactory.getLog(UkeyLoginController.class);
@ResponseBody @ResponseBody
...@@ -47,12 +47,12 @@ public class UkeyLoginController { ...@@ -47,12 +47,12 @@ public class UkeyLoginController {
{ {
retDatamap.put("msgCode", "0000"); retDatamap.put("msgCode", "0000");
retDatamap.put("loginid", loginid); retDatamap.put("loginid", loginid);
return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap,noUiParam.getVersion()); return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap, noUiVersion.getVersion());
} }
} }
retDatamap.put("msgCode", "9999"); retDatamap.put("msgCode", "9999");
retDatamap.put("loginid", ""); retDatamap.put("loginid", "");
return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap,noUiParam.getVersion()); return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap, noUiVersion.getVersion());
} }
private Map<String,Object> getLoginidByDN(String certdn,NoUiRequest noUiRequest) { private Map<String,Object> getLoginidByDN(String certdn,NoUiRequest noUiRequest) {
......
...@@ -7,7 +7,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -7,7 +7,7 @@ import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import org.sss.presentation.noui.api.response.ErrorCodes; import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.NoUiParam; import org.sss.presentation.noui.api.response.NoUiVersion;
import org.sss.presentation.noui.api.response.Result; import org.sss.presentation.noui.api.response.Result;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -22,7 +22,7 @@ import java.util.Map; ...@@ -22,7 +22,7 @@ import java.util.Map;
public class FileTypeInterceptor extends HandlerInterceptorAdapter { public class FileTypeInterceptor extends HandlerInterceptorAdapter {
@Autowired @Autowired
private NoUiParam noUiParam; private NoUiVersion noUiVersion;
private String type_list; private String type_list;
...@@ -44,7 +44,7 @@ public class FileTypeInterceptor extends HandlerInterceptorAdapter { ...@@ -44,7 +44,7 @@ public class FileTypeInterceptor extends HandlerInterceptorAdapter {
//限制文件类型,请求转发到原始请求页面,并携带错误提示信息 //限制文件类型,请求转发到原始请求页面,并携带错误提示信息
flag = false; flag = false;
response.setContentType("application/json; charset=utf-8"); response.setContentType("application/json; charset=utf-8");
Result result = new Result(ErrorCodes.ERROR, "不支持的文件类型!", null,noUiParam.getVersion()); Result result = new Result(ErrorCodes.ERROR, "不支持的文件类型!", null, noUiVersion.getVersion());
PrintWriter out = response.getWriter(); PrintWriter out = response.getWriter();
String json = new Gson().toJson(result); String json = new Gson().toJson(result);
out.print(json); out.print(json);
......
package org.sss.presentation.noui.jwt; package org.sss.presentation.noui.jwt;
import java.io.PrintWriter; import com.google.gson.Gson;
import log.Log;
import javax.servlet.http.HttpServletRequest; import log.LogFactory;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.sss.presentation.noui.api.request.NoUiRequest; import org.sss.presentation.noui.api.request.NoUiRequest;
import org.sss.presentation.noui.api.response.ErrorCodes; import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.NoUiParam; import org.sss.presentation.noui.api.response.NoUiVersion;
import org.sss.presentation.noui.api.response.Result; import org.sss.presentation.noui.api.response.Result;
import org.sss.presentation.noui.common.Constants; import org.sss.presentation.noui.common.Constants;
import org.sss.presentation.noui.context.NoUiContextManager; import org.sss.presentation.noui.context.NoUiContextManager;
...@@ -19,18 +17,15 @@ import org.sss.presentation.noui.util.NumericUtil; ...@@ -19,18 +17,15 @@ import org.sss.presentation.noui.util.NumericUtil;
import org.sss.presentation.noui.util.RedisUtil; import org.sss.presentation.noui.util.RedisUtil;
import org.sss.presentation.noui.util.StringUtil; import org.sss.presentation.noui.util.StringUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson; import java.io.PrintWriter;
import log.Log;
import log.LogFactory;
public class OpenTransInterceptor implements HandlerInterceptor { public class OpenTransInterceptor implements HandlerInterceptor {
protected static final Log log = LogFactory.getLog(OpenTransInterceptor.class); protected static final Log log = LogFactory.getLog(OpenTransInterceptor.class);
@Autowired @Autowired
private NoUiParam noUiParam; private NoUiVersion noUiVersion;
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception arg3) throws Exception { public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception arg3) throws Exception {
...@@ -67,7 +62,7 @@ public class OpenTransInterceptor implements HandlerInterceptor { ...@@ -67,7 +62,7 @@ public class OpenTransInterceptor implements HandlerInterceptor {
trnnam = url.substring(begpos, idx2); trnnam = url.substring(begpos, idx2);
if(trnnam==null) if(trnnam==null)
{ {
Result rt = new Result(ErrorCodes.UNKNOEW_TRANS, "未知的交易", null,noUiParam.getVersion()); Result rt = new Result(ErrorCodes.UNKNOEW_TRANS, "未知的交易", null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
...@@ -75,7 +70,7 @@ public class OpenTransInterceptor implements HandlerInterceptor { ...@@ -75,7 +70,7 @@ public class OpenTransInterceptor implements HandlerInterceptor {
log.debug("开放访问交易名:"+trnnam); log.debug("开放访问交易名:"+trnnam);
if(!NoUiContextManager.openTransactions.contains(trnnam)) if(!NoUiContextManager.openTransactions.contains(trnnam))
{ {
Result rt = new Result(ErrorCodes.FORBIDDEN_TRANS, "非法访问", null,noUiParam.getVersion()); Result rt = new Result(ErrorCodes.FORBIDDEN_TRANS, "非法访问", null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
......
...@@ -10,7 +10,7 @@ import org.springframework.web.servlet.HandlerInterceptor; ...@@ -10,7 +10,7 @@ import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.sss.presentation.noui.api.request.NoUiRequest; import org.sss.presentation.noui.api.request.NoUiRequest;
import org.sss.presentation.noui.api.response.ErrorCodes; import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.NoUiParam; import org.sss.presentation.noui.api.response.NoUiVersion;
import org.sss.presentation.noui.api.response.Result; import org.sss.presentation.noui.api.response.Result;
import org.sss.presentation.noui.common.Constants; import org.sss.presentation.noui.common.Constants;
import org.sss.presentation.noui.util.NoUiUtils; import org.sss.presentation.noui.util.NoUiUtils;
...@@ -23,7 +23,7 @@ import com.google.gson.Gson; ...@@ -23,7 +23,7 @@ import com.google.gson.Gson;
public class TokenInterceptor implements HandlerInterceptor { public class TokenInterceptor implements HandlerInterceptor {
@Autowired @Autowired
private NoUiParam noUiParam; private NoUiVersion noUiVersion;
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception arg3) throws Exception { public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception arg3) throws Exception {
NoUiUtils.clearLoginInfo(); NoUiUtils.clearLoginInfo();
...@@ -41,14 +41,14 @@ public class TokenInterceptor implements HandlerInterceptor { ...@@ -41,14 +41,14 @@ public class TokenInterceptor implements HandlerInterceptor {
String terminalType = noUiRequest.getTerminalType(); // APP WEB String terminalType = noUiRequest.getTerminalType(); // APP WEB
// token不存在 // token不存在
if (StringUtil.isEmpty(token)) { if (StringUtil.isEmpty(token)) {
Result rt = new Result(ErrorCodes.LOGIN_TOKEN_ISNULL, "登录token不能为空", null,noUiParam.getVersion()); Result rt = new Result(ErrorCodes.LOGIN_TOKEN_ISNULL, "登录token不能为空", null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
// userId不存在 // userId不存在
if (StringUtil.isEmpty(userId)) { if (StringUtil.isEmpty(userId)) {
Result rt = new Result(ErrorCodes.LOGIN_ID_ISNULL, "用户id不能为空", null,noUiParam.getVersion()); Result rt = new Result(ErrorCodes.LOGIN_ID_ISNULL, "用户id不能为空", null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
...@@ -61,20 +61,20 @@ public class TokenInterceptor implements HandlerInterceptor { ...@@ -61,20 +61,20 @@ public class TokenInterceptor implements HandlerInterceptor {
JwtLogin login = JWT.unsign(token, JwtLogin.class); JwtLogin login = JWT.unsign(token, JwtLogin.class);
if (login == null || (!userId.equals((login.getUserId())))) { if (login == null || (!userId.equals((login.getUserId())))) {
Result rt = new Result(ErrorCodes.LOGIN_TOKEN_CHECKERROR, "用户token或ID验证不通过", null,noUiParam.getVersion()); Result rt = new Result(ErrorCodes.LOGIN_TOKEN_CHECKERROR, "用户token或ID验证不通过", null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
RedisLoginInfo redisLoginInfo = (RedisLoginInfo) RedisUtil.get(StringUtil.userUniqueId(noUiRequest)); RedisLoginInfo redisLoginInfo = (RedisLoginInfo) RedisUtil.get(StringUtil.userUniqueId(noUiRequest));
if (redisLoginInfo == null) { if (redisLoginInfo == null) {
Result rt = new Result(ErrorCodes.LOGIN_ERROR, "登陆异常", null,noUiParam.getVersion()); Result rt = new Result(ErrorCodes.LOGIN_ERROR, "登陆异常", null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
//验证token是否一致 //验证token是否一致
if(!token.equals(redisLoginInfo.getToken())){ if(!token.equals(redisLoginInfo.getToken())){
Result rt = new Result(ErrorCodes.LOGIN_TOKEN_CHECKERROR, "token失效,该用户被强迫下线", null,noUiParam.getVersion()); Result rt = new Result(ErrorCodes.LOGIN_TOKEN_CHECKERROR, "token失效,该用户被强迫下线", null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
...@@ -82,7 +82,7 @@ public class TokenInterceptor implements HandlerInterceptor { ...@@ -82,7 +82,7 @@ public class TokenInterceptor implements HandlerInterceptor {
if (System.currentTimeMillis() > redisLoginInfo.getExpiredTime()) { if (System.currentTimeMillis() > redisLoginInfo.getExpiredTime()) {
Result rt = new Result(ErrorCodes.LOGIN_TIMEOUT, "会话超时,请重新登录。超时时间戳:"+redisLoginInfo.getExpiredTime()+ Result rt = new Result(ErrorCodes.LOGIN_TIMEOUT, "会话超时,请重新登录。超时时间戳:"+redisLoginInfo.getExpiredTime()+
",当前时间戳:"+System.currentTimeMillis(), null,noUiParam.getVersion()); ",当前时间戳:"+System.currentTimeMillis(), null, noUiVersion.getVersion());
responseMessage(response, response.getWriter(), rt); responseMessage(response, response.getWriter(), rt);
return false; return false;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment