1 首先,Jsp里的代码,
<Td class="r" width="15%">
对应表名:
</Td>
<Td class="l" width="35%">
<input type="text" id="bean.dybm" name="bean.dybm" maxlength="50" οnblur="tableNameIsRepeat();"/>
</Td>
2 验证表名是否存在的JS:
function tableNameIsRepeat(){
var tableName = document.getElementById('bean.dybm').value ;
if(tableName==''){
document.getElementById('in_ok').disabled = true ;
}else {
$.ajax({
type: "POST",
url: "${ctx}/dirManage_checkTableNameIsExist.do",
data: "tableName=" + tableName,
success: function(msg){
if(msg=='true'){
alert('表名'+tableName+'已存在,请重新输入表名.') ;
document.getElementById('bean.dybm').focus() ;
document.getElementById('in_ok').disabled = true ;
}else {
document.getElementById('in_ok').disabled = false ;
}
}
});
}
}
3 Action中,接收这个表名参数,验证之后,向前台返回值
/**
* 检查新建的表名是否存在
* @return
*/
public String checkTableNameIsExist() {
String tableName = getRequest().getParameter("tableName") ;
if(tableName!=null){
tableName = tableName.trim().toUpperCase() ;
boolean isExist = directoryManageService.tableNameIsExist(tableName) ;
try {
if (isExist) {
getResponse().getWriter().write("true") ;
} else {
getResponse().getWriter().write("false");
}
} catch (Exception e) {
e.printStackTrace();
}
}
return NONE ;
}
4 底层 DaoImpl中,
public boolean tableNameIsExist(String tableName) throws DataAccessException {
try {
DatabaseMetaData dbmd = getSession().connection().getMetaData();
ResultSet rs = dbmd.getTables(null, null, tableName, null );
if (rs.next()){
logger.debug("表名" + tableName + "已存在!") ;
return true ;
}else{
logger.debug("表名" + tableName + "不存在。") ;
return false ;
}
} catch (Exception e) {
e.printStackTrace();
}
return true ;
}