項目遇到個需求,需要使用在線翻譯功能
果斷,選擇百度翻譯
地址
注冊開發者賬號,完成后
一系列申請后【具體忘了,,,這兩天一直在忙別的。。。。】
可以在開發者頁面看到分配到的 APP ID和密鑰
接下來,下載示例JAVA文件
下載完成后,進入"java"目錄
進入該目錄下的 src 目錄
進入 com 根目錄下的三個java文件
在相應的項目中創建包,復制三個java文件進入
test.java
這里的 "auto" 和 "zh",是指,自動檢測需要翻譯的文字所用的語言,翻譯成中文
測試輸出一下
{"from":"en","to":"zh","trans_result":[{"src":"Programming Thought Of Java","dst":"Java\u7f16\u7a0b\u601d\u60f3"}]}
Java編程思想
最后,只需要在JSP網頁中調用這個test類的fanyi()方法,傳入要翻譯的英文即可
在上方圖片所在網頁中,點擊“提取”按鈕后,觸發以下的javaScript程序
<script> function getfanyi() {
//獲取輸入框的文字 var xx = document.getElementById("in").value; if(xx == ""){
//如果沒有輸入文字,就在輸入框下方的結果顯示框發出提示 document.getElementById("fyre").value = "請先輸入..."; }else{ //通過AJAX向服務器 fanyi.jsp 發送一個同步請求,傳入提取到的要翻譯的文字
//為啥用 false ,下面解釋
var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST","/xxx/fanyi.jsp?query="+xx,false); xmlhttp.send(null); //ajax 請求完畢,開始讀取cookie var re = getCookie("fanyi"); document.getElementById("fyre").value = re; } }; function getCookie(cname){ var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name)==0) { return c.substring(name.length,c.length); } } return ""; }; </script>
fanyi.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="fanyi.*" %> <% request.setCharacterEncoding("UTF-8"); String q = request.getParameter("query"); test ts = new test(); //實例化test類,調用其 fanyi() 方法,返回 字符串形式的結果 String xx = ts.fanyi(q); response.setContentType("text/html;charset=UTF-8"); //設置服務器的響應,對request請求者返回翻譯的結果到其瀏覽器的本地cookie中 Cookie cc = new Cookie("fanyi",xx); cc.setMaxAge(10); response.addCookie(cc); %>
通過AJAX向服務器 fanyi.jsp 發送一個同步請求時,用到的是 false。。原因是,只有等到 fanyi.jsp 獲取到結果並將其寫入請求者的本地cookie中,才可以通過javaScript 讀取到存在的、正確的、有結果的cookie,獲得翻譯的結果
否則,輸入xxx后,第一次點擊翻譯按鈕是沒有結果的【因為javaScript是單線程,不會等到 fanyi.jsp 執行完畢就會去執行下一條程序,所以本地cookie中是沒有翻譯結果的】,再次點擊才會出現
當然,完全可以寫成servlet。。。。就是有點懶的配置。。。。。。