js腳本中執(zhí)行java后臺代碼方法解析
使用場景:關(guān)閉頁面彈窗時執(zhí)行sql語句。
其實js里執(zhí)行sql語句有多種方式。
方式一:直接在js代碼里調(diào)用sql語句,原則上不能使用,因為這將sql直接暴露在客戶端,安全性極差。
方式二:在js里運用ajax技術(shù),調(diào)用后臺方法執(zhí)行sql語句。
方式三:運用dwr框架,其實是對ajax技術(shù)進行了封裝。
一、首先編寫一個dwr.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr//dwr20.dtd">
<dwr>
<allow>
<!-- 對呼叫類型的操作 -->
<create javascript="CallTypeOpDwr" creator="new">
<param name="class"
value="cn.etcom.jfgl.tel.fee.callType.CallTypeOpDwr" />
<include method="addCallType" />
<include method="modifyCallType" />
<include method="deleteCallType" />
<include method="updateSp" />
</create>
</allow>
<!-- 用戶信息管理操作中用到的map配置 -->
<signatures>
<![CDATA[
import java.util.List;
import cn.etcom.jfgl.customer.tel.userInfo.UserInfoManageOpDwr;
UserInfoManageOpDwr.addUsersInfo(String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,Map<String,String>);
UserInfoManageOpDwr.addUserInfo(String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,Map<String,String>);
]]>
</signatures>
</dwr>
二、在web.xml文件里配置servlet
<!-- DWR相關(guān)配置 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>
allowGetForSafariButMakeForgeryEasier
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
三、寫一個普通的JAVA類
package cn.etcom.jfgl.tel.fee.callType;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.json.JSONException;
import org.json.JSONObject;
import cn.etcom.common.utility.DBUtil;
import cn.etcom.common.utility.RsHandler;
import cn.etcom.common.utility.SqlActuator;
import cn.etcom.common.utility.StringUtil;
/*******************************************************************************
*
* @author 劉彥寧 2011-08-12
*
*/
// 處理呼叫類型的dwr
public class CallTypeOpDwr {
/***************************************************************************
* DWR 方法,執(zhí)行存儲過程。
*
*/
public String updateSp() {
String sql = "exec Pub_Sp_UpdateFieldMemo ?";
Connection conn = DBUtil.getConnection();
PreparedStatement psmt = null;
try {
psmt = conn.prepareStatement(sql);
psmt.setString(1, "CALL");
boolean a = psmt.execute();
DBUtil.close(null, psmt, conn);
conn = DBUtil.getConnection();
psmt = conn.prepareStatement(sql);
psmt.setString(1, "USER");
boolean b = psmt.execute();
System.out.println(a);
System.out.println(b);
System.out.println("關(guān)閉彈窗執(zhí)行存儲過程 >> "+sql);
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(null, psmt, conn);
}
return null;
}
}
四、寫一個JSP頁面,主要導入engine.js和相應(yīng)的java類映射的js文件,然后編寫js即可調(diào)用
//以下為jsp的引入js文件部分 <script type="text/javascript"> //設(shè)置根路徑,放在 tab.js 前 var glbRootPath = "<%=basePath%>"; </script> <script src="<%=basePath%>js/lhgdialog/lhgcore.min.js" type="text/javascript"></script> <script src="<%=basePath%>js/lhgdialog/lhgdialog.js" type="text/javascript"></script>
五、js文件里調(diào)用后臺代碼
var basePath = "";
if(typeof(glbRootPath) != "undefined"){
basePath = glbRootPath;
document.write("<script type='text/javascript' src='"+basePath+"\/dwr\/engine.js'><\/script><script type='text/javascript' src='"+basePath+"\/dwr\/interface\/CallTypeOpDwr.js'><\/script>");
}
/*
中間省略若干代碼
*/
.
.
.
if(typeof(glbRootPath) != "undefined"&&$(this).parent().children().eq(0).text()=="呼叫類型設(shè)置"){
console.log("進來了");
DWREngine.setAsync(false);
CallTypeOpDwr.updateSp();
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Selenium執(zhí)行JavaScript腳本的方法示例
- Selenium執(zhí)行Javascript腳本參數(shù)及返回值過程詳解
- Java執(zhí)行JS腳本工具
- JS腳本加載后執(zhí)行相應(yīng)回調(diào)函數(shù)的操作方法
- Angularjs通過指令監(jiān)聽ng-repeat渲染完成后執(zhí)行腳本的方法
- JS動態(tài)加載腳本并執(zhí)行回調(diào)操作
- node.js 動態(tài)執(zhí)行腳本
- 瀏覽器環(huán)境下JavaScript腳本加載與執(zhí)行探析之動態(tài)腳本與Ajax腳本注入
- 瀏覽器環(huán)境下JavaScript腳本加載與執(zhí)行探析之defer與async特性
- 探析瀏覽器執(zhí)行JavaScript腳本加載與代碼執(zhí)行順序
- 詳解javascript腳本何時會被執(zhí)行
相關(guān)文章
JavaScript中創(chuàng)建原子的方法總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript中創(chuàng)建原子的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08
JavaScript DOM節(jié)點操作方法總結(jié)
下面小編就為大家?guī)硪黄狫avaScript DOM節(jié)點操作方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
解決Layui當中的導航條動態(tài)添加后渲染失敗的問題
今天小編就為大家分享一篇解決Layui當中的導航條動態(tài)添加后渲染失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09

