NameValue .java文件里:
package com.tanzhou.util;
/**
* 参数拼接工具类
* @author Ming
* @version 1.0
* 2015-2-7
*/
public class NameValue {
// &client=t&hl=zh-CN&ie=UTF-8&multires=1&oe=UTF-8&otf=1&prev=conf&psl=zh-CN&ptl=zh-CN&sc=1&sl=zh-CN&ssel=3&text=%E4%BD%A0%E5%A5%BD&tl=en&tsel=6
private StringBuilder sb = new StringBuilder();
/**
* &参数=参数值&参数=参数值 ....
* @param name 参数
* @param value 参数值
*/
public void add(String name,Object value){
sb.append("&");
sb.append(name);
sb.append("=");
sb.append(value);
}
public String toString(){
return sb.toString();
}
}
///////////////////////////////////////////////////////////////////
Test 文件里:
package com.tanzhou.util;
import org.apache.taglibs.standard.tag.common.xml.IfTag;
public class Test {
public static void main(String[] args){
String str = Google.translate("晚上好!", "中文简体", "英语");
if(str==null || "".equals(str)){
System.out.println("失败");
}else{
System.out.println("成功!");
// [[["Good evening !","晚上好!","","Wǎnshàng hǎo!"]],,"zh-CN",,[["Good evening",[3],true,false,1000,0,2,1],["!",[4],false,false,1000,2,3,1]],[["好 晚上",3,[["Good evening",1000,true,false]],[[0,3]],"晚上好!"],["!",4,[["!",1000,false,false]],[[3,4]],""]],,,[["zh-CN"]],3]
String s = Test.mid(str, "[[[", "]]");
String[] ss = s.split(",");
for(int i=0;i<ss.length;i++){
System.out.println(ss[i]);
}
}
}
/**
* 截取字符串
* @param value
* @param left [[[
* @param right ]]
* @return
*/
public static String mid(String value,String left,String right){
int i = value.indexOf(left) +left.length();
String str = value.substring(i, value.indexOf(right,i));
return str;
}
}
/////////////////////////////////////////////////////////////
WebRequest 文件里:
package com.tanzhou.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 调用接口的核心类
* @author Ming
* @version 1.0
* 2015-2-7
*
*/
public class WebRequest {
private static void setRequestHeader(HttpURLConnection conn){
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
conn.setRequestProperty("Accept", "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
}
/**
* 访问接口的核心方法
* @param url 接口路径
* @return 返回的翻译信息
*/
public static String get(String url){
try {
URL _url = new URL(url); // 将字符串信息转换成url对象
// 通过路径打开链接
HttpURLConnection conn = (HttpURLConnection)_url.openConnection();
setRequestHeader(conn); // 设置接口的头信息
// 读取数据
BufferedReader bis = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String line = null;
StringBuilder sb = new StringBuilder();
while((line= bis.readLine())!=null){
sb.append(line);
sb.append("\n");
}
bis.close();
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
//////////////////////////////////////////////////////////////////
Google .java文件里:
package com.tanzhou.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.Encoded;
/**
* 拼接URL的类
* @author Ming
* @version 1.0
* 2015-2-7
*/
public class Google {
// http://translate.google.cn/translate_a/t?&client=t&hl=zh-CN&ie=UTF-8&multires=1&oe=UTF-8&otf=1&prev=conf&psl=zh-CN&ptl=zh-CN&sc=1&sl=zh-CN&ssel=3&text=%E4%BD%A0%E5%A5%BD&tl=en&tsel=6
private static final Map<String, String> LANGUAGE = new HashMap<String, String>();
// 静态块
static{
LANGUAGE.put("中文简体", "zh_CN");
LANGUAGE.put("中文繁体", "zh_TW");
LANGUAGE.put("英语", "en");
LANGUAGE.put("日语", "ja");
}
/**
* 翻译的类(拼接url)
* @param value 要翻译的内容
* @param src 要翻译内容的语种
* @param target 目标语言的语种
* @return
*/
public static String translate(String value,String src,String target){
String url = "http://translate.google.cn/translate_a/t?";
src = LANGUAGE.get(src); // 将语种参数转换成计算机能够识别的编码
target = LANGUAGE.get(target);
NameValue form = new NameValue();
form.add("client", "t");
form.add("hl",src); // 要翻译的语种 src
form.add("ie", "UTF-8");
form.add("multires", 1);
form.add("oe", "UTF-8");
form.add("otf", 1);
form.add("prev", "conf");
form.add("psl", src); // 要翻译的语种 src
form.add("ptl", src); // 要翻译的语种 src
form.add("sc", 1);
form.add("sl", src); // 要翻译的语种 src
form.add("ssel", 3);
form.add("text", encode(value,"UTF-8")); // 要翻译的内容
form.add("tl", target);// 目标语种
form.add("tsel", 6);
return WebRequest.get(url+form.toString());
}
public static String encode(String value,String charset){
try {
return URLEncoder.encode(value,charset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
/**
* 截取字符串
* @param value
* @param left [[[
* @param right ]]
* @return
*/
public static String mid(String value,String left,String right){
int i = value.indexOf(left) +left.length();
String str = value.substring(i, value.indexOf(right,i));
return str;
}
}
////////////////////////////////////////////////////////////
google.jsp文件里:
<%@ page language="java" import="java.util.*,com.tanzhou.util.*" pageEncoding="GBK"%>
<%@ page contentType="text/html;charset=GBK" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'google.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
String content = (String)request.getAttribute("content");
String toContent = (String)request.getAttribute("toContent");
%>
<form action="${pageContext.request.contextPath}/check.jsp" method="post">
<table>
<tr>
<td><select id="sel1" name="sel1">
<option value="中文简体">中文简体</option>
<option value="英语">英语</option>
<option value="日语">日语</option>
<option value="韩语">韩语</option>
</select>
</td>
<td>
<select id="sel2" name="sel2">
<option value="中文简体">中文简体</option>
<option value="英语">英语</option>
<option value="日语">日语</option>
<option value="韩语">韩语</option>
</select>
</td>
</tr>
<tr>
<td>
<textarea name= "content" cols= "40" rows= "5"><%=content==null? "" : content%></textarea>
</td>
<td>
<textarea name= "toContent" cols= "40" rows= "5"><%=toContent==null? "" : toContent%></textarea>
<input type="submit" value="翻译" />
</td>
</tr>
</table>
</form>
</body>
</html>
///////////////////////////////////////////////////////////////////////
check.jsp文件里:
<%@ page language="java" import="java.util.*,com.tanzhou.util.*" pageEncoding="GBK"%>
<%
String sel1 = new String(request.getParameter("sel1").getBytes("ISO-8859-1"),"GBK"); // 要翻译的语种
String sel2 = new String(request.getParameter("sel2").getBytes("ISO-8859-1"),"GBK"); // 目标语种
String content = new String(request.getParameter("content").getBytes("ISO-8859-1"),"GBK"); // 要翻译的内容
String str = Google.translate(content, sel1, sel2);
System.out.println(str);
if(str==null || "".equals(str)){
System.out.println("失败");
}else{
System.out.println("成功!");
String s = Google.mid(str, "[[[", "]]");
String[] ss = s.split(",");
request.setAttribute("content", content);
// 剔除 引号
request.setAttribute("toContent", ss[0].substring(1, ss[0].length()-1));
request.getRequestDispatcher("google.jsp").forward(request, response);
}
%>
////////////////////////////////////////////////////////////////
index.jsp文件里:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<script type="text/javascript">
location.href="google.jsp";
</script>