Java 将数据库值检索到applet中

Java 将数据库值检索到applet中,java,jsp,servlets,jdbc,applet,Java,Jsp,Servlets,Jdbc,Applet,从上两天开始,我一直试图在我的网页中嵌入一个小程序,小程序将检索数据库值并将其显示在组合框中 但是,当我试图运行我的jsp页面(我已经在其中嵌入了小程序)时,我得到了AccessControlException异常。现在,我有了最后一个选择,即使用3层体系结构将applet与数据库进行通信,就像我在internet上找到的那样。现在,我不知道如何使用Servlet作为中间层将值从数据库检索到applet中。因为,我无法将数据从数据库中获取到我的小程序中。请帮帮我。提前感谢 在Applet中编写J

从上两天开始,我一直试图在我的网页中嵌入一个小程序,小程序将检索数据库值并将其显示在组合框中


但是,当我试图运行我的jsp页面(我已经在其中嵌入了小程序)时,我得到了AccessControlException异常。现在,我有了最后一个选择,即使用3层体系结构将applet与数据库进行通信,就像我在internet上找到的那样。现在,我不知道如何使用Servlet作为中间层将值从数据库检索到applet中。因为,我无法将数据从数据库中获取到我的小程序中。请帮帮我。提前感谢

在Applet中编写JDBC确实走错了路。小程序的源代码对最终用户公开可见。恶意的最终用户将能够对其进行反编译,查看数据库名称/密码和/或对其进行编辑,以更改SQL查询,从而执行
删除
截断
或任何其他不好的操作。再见数据库

您需要设计并创建一个“Web服务”,它只监听特定的URL,并以XML、JSON、CSV等通用格式返回结果。然后,小程序只需通过
URLConnection
准确地调用该URL并处理结果。有很多Java库可以将Java对象转换为XML/JSON/CSV格式,反之亦然。您可以在web服务和小程序的代码中使用相同的库

假设您选择了JSON,并使用它在Java和JSON之间进行转换,那么您基本上可以在充当“Web服务”的Servlet中执行以下操作:

@覆盖
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//这只是一个基本的例子。实际上,只是从数据库中检索数据。
列表=新的ArrayList();
列表。添加(“第1项”);
列表。添加(“第2项”);
列表。添加(“第3项”);
字符串json=new Gson().toJson(列表);
setContentType(“应用程序/json”);
响应。setCharacterEncoding(“UTF-8”);
response.getWriter().write(json);
}
可在小程序中获得以下信息:

URL url = new URL(getCodeBase(), "servletURL");
Reader reader = new InputStreamReader(url.openStream(), "UTF-8");
List<String> list = new Gson().fromJson(reader, new TypeToken<List<String>>() {}.getType());
// ...
URL URL=newurl(getCodeBase(),“servletURL”);
Reader Reader=新的InputStreamReader(url.openStream(),“UTF-8”);
List List=new Gson().fromJson(读取器,new TypeToken(){}.getType());
// ...

通常将数据库设置为仅接受本地主机的连接。这意味着您只能从servlet(或其他东西,但不能从服务器)连接到它。小程序试图从客户端的ip连接到数据库,但通常是被禁止的。您能告诉我什么是Gson和这个typetoken吗,因为我在这里遇到了错误:(不要盲目地复制粘贴代码。还要阅读答案文本,包括所有链接。那些蓝色的单词不仅仅是装饰。对不起……我的问题……我对此很陌生。这就是为什么我要问这种类型的问题。最后一件事,我如何将此列表应用到小程序的组合框中。这是一个完全不需要回答的不同问题处理数据库和applet servlet通信。只需问一个新问题,其中您会问如何在
JComboBox
中显示
列表。
URL url = new URL(getCodeBase(), "servletURL");
Reader reader = new InputStreamReader(url.openStream(), "UTF-8");
List<String> list = new Gson().fromJson(reader, new TypeToken<List<String>>() {}.getType());
// ...