请教关于多个ajax请求同一个servlet的安全性问题
我做的是一个下拉框,要求第一次点击去数据库查最新的,然后我是通过ajax请求同一个servlet,得到的,用户量方面过万人可能同时使用,就是保险公司打电话的人用,上万人同时用就很多了,下面代码是js到servlet,然后到一个java文件里,我想知道我现在这样做会不会导致这个人下拉框查出来的数据显示到别人的下拉框里面,这是绝对不容许的,我想要百分百的安全性,最好效率上也能稍微考虑下,一个下拉框等太久不好吧,我对ajax懂的比较少,只是会用,async:false这个同步属性是百度我加上去的,不知道有没有用,各位大神们,帮帮忙,非常感谢
---------------------------------------------------------------
-------------------------------------------------------------------
-------------------------
---------------------------------
---------------------------------------------------------------
//obj:当前对象、固定值this; sqlFlag:对应CodeSelectBL中的sql; paramSQL:where后面拼接的查询条件
function selectCodeList(obj, sqlFlag, paramSQL) {
$.ajax({url:"../servlet/CodeSelectServlet",
datatype:"json",
async:false,
type:"post",
data:{"sqlFlag":sqlFlag, "paramSQL":paramSQL},
success:function (jsonStr) {
var jsonobj = eval("(" + jsonStr + ")");
var data = jsonobj["datas"];
var codemap = data["0"]["0"];
for (var key in codemap) {
var s = codemap[key];
obj.append("<li><i>" + key + "</i><span>" + s + "</span></li>");
//当li数量过多给Ul加滚动条
var $HselectUlHeight = obj.height();
console.log('高度'+$HselectUlHeight);
if($HselectUlHeight > 125){
$(selector).find('.HselectUl').css({
'height':'125px',
'overflow': 'scroll',
'overflow-y': 'scroll'
});
}
}
}, error:function () {
alert("error!");
}});
}-------------------------------------------------------------------
/**
* 下拉框查询
*
* @author YanJianZhe
*/
public class CodeSelectServlet extends BaseServlet {
@Override
public void setQuerySql() {
// TODO Auto-generated method stub
}
@Override
public void setSearchConditions(HttpServletRequest request,
HttpServletResponse response) {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.addHeader("Access-Control-Allow-Origin", "*");
PrintWriter out = response.getWriter();
String sqlFlag = (String) request.getParameter("sqlFlag");
String paramSQL = (String) request.getParameter("paramSQL");
CodeSelectBL codeSelectBl = new CodeSelectBL();
// 返回json
String jsonStr = codeSelectBl.codeSelects(sqlFlag, paramSQL);
System.out.println("下拉列表前台flag=======" + sqlFlag);
System.out.println("下拉列表返回到前台的json=======" + jsonStr);
out.write(jsonStr);
out.close();
}
}-------------------------
public class CodeSelectBL {
// 执行sql语句类
private ExeSQL tExeSQL = new ExeSQL();
/** 存储查询语句 */
private String mSQL = "";
private StringBuffer mSBql = new StringBuffer(256);
/** 存储全局变量 */
private GlobalInput mGlobalInput = new GlobalInput();
/** 业务处理相关变量 */
private LDCodeSchema mLDCodeSchema = new LDCodeSchema();
/** 存储查询条件 */
private String mCodeCondition = "";
private String mConditionField = "";
/** 系统日期*/
private String mCurrentDate = PubFun.getCurrentDate();
private String mCurrentTime = PubFun.getCurrentTime();
public String codeSelects(String sqlFlag,String paramSQL) {
mLDCodeSchema.setCodeType(sqlFlag);
String result = "success";
String message = "成功!";
String jsonStr = "";
String data = "";
String codeId = "";
String codeName = "";
Map codeMap = new HashMap();
List jqueryList = new ArrayList();
mCodeCondition = paramSQL;
//mConditionField = conditionField;
//System.out.println(objCondition+"---"+conditionField);
String codesql = getCodeSql();
SSRS ssrs = new SSRS();
ssrs = tExeSQL.execSQL(codesql);
if (ssrs != null && ssrs.getMaxRow() > 0) {
for (int i = 1; i <= ssrs.getMaxRow(); i++) {
codeId = ssrs.GetText(i, 1);
codeName = ssrs.GetText(i, 2);
codeMap.put(codeId, codeName);
}
} else {
result = "fail";
message = "查询下拉列表失败!";
}
String jsonStr4 = "{\"codeMap\":\"" + codeMap + "\"}";
data += jsonStr4;
jqueryList.add(codeMap); // 拼装jqyery的json
JSONArray jsonArraytemp = new JSONArray();
jsonArraytemp = JSONArray.fromObject(jqueryList);
// 返回前台页面json数据
jsonStr = "{\"result\":\"" + result + "\",\"message\":\"" + message
+ "\",\"datas\":[" + jsonArraytemp + "]}";
return jsonStr;
}
}---------------------------------
<servlet>
<servlet-name>CodeSelectServlet</servlet-name>
<servlet-class>com.sinosoft.servlet.selected.CodeSelectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CodeSelectServlet</servlet-name>
<url-pattern>/servlet/CodeSelectServlet</url-pattern>
</servlet-mapping>
...全文
相关推荐
AJAX 实时获得数据(来自某一个Servlet)示例
一个使用AJAX显示某一个Servlet当前运行状态的例子,能从页面中实时的获得一个运行着的Servlet中的数据,并显示出来.
Ajax + Servlet 技术应用实践指南
本文还有配套的精品资源,点击获取 简介:本文介绍了Ajax和Servlet在网络开发中的核心作用,详细阐述了Ajax的核心技术组件和Servlet的处理流程。Ajax通过异步方式更新网页内容,提升用户体验,而Servlet作为服务器端组件处理HTTP请求。文章进一步探讨了两者的结合在数据异步获取更新、表单验证和分页无限滚动等场景下的应用,并提及了Java端口扫描器在网络诊断...
Ajax与Servlet实现网页局部刷新与实时聊天功能
Servlet技术是Java EE的一个核心组件,主要用于处理客户端请求并生成响应。在Web应用中,Servlet相当于一个中间件,它介于HTTP协议与应用程序的业务逻辑之间。当客户端(比如浏览器)向服务器发送请求时,Servlet容器(例如Tomcat)负责接收请求,根据请求的URL定位到对应的Servlet,并将请求转发给Servlet处理。处理完成后,Servlet生成响应返回给客户端。
Servlet及Ajax数据交互
Servlet及Ajax数据交互代码示例(服务端Java的Servlet,客户端Ajax)
Java+servlet+jsp页面ajax请求
Java+servlet+jsp页面ajax请求 有详细的注释



