我有一个Java类,其中有一个方法正在向我返回一个json,我想将该方法调用到我的servlet doGet方法中,以便以后可以进行AJAX调用
但是在调用java类方法( Outlet.Outlet )时,它要求传递一个参数,但我不知道该传递什么 请看一下我的代码
这是我的java类
public class Outlet {
static Connection con = null;
static Statement statement = null;
ResultSet resultSet = null;
public static String Outlet(String idDB) throws ClassNotFoundException, SQLException {
List<String> list = new ArrayList<String>();
con = DBConnection.createConnection();
statement = con.createStatement();
String sql="select CUSTOMERDESCRIPTOR as OUTLETNAME from ecustomer where CUSTOMERIDENTIFIER in(select CUSTOMERIDENTIFIER from mt_distributrol where mt_distributr_vcdistributrcode = '"+idDB+"')";
System.out.println("iddb :"+idDB);
try {
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
list.add(resultSet.getString("OUTLETNAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}
String json = new Gson().toJson(list);
System.out.println("Json Outlet :"+json);
return json;
}
}
在上面的java类中,我返回一个Json,我想将该方法调用到我的servlet doGost中。
我的doGet是
try {
String json = Outlet.Outlet(); //what should i pass here as a parameter
response.setContentType("application/json");
response.getWriter().write(json);
System.out.println("dheeraj"+json);
}
catch (Exception e) {
e.printStackTrace();
}
}
如果我通过idDB,则会引发错误。请任何有知识的人帮助我
答案 0 :(得分:1)
请阅读OWASP - SQL Injection并了解PreparedStatements
首先,方法不应以大写字母开头,因此您可以将其命名为Outlet.findById
而不是Outlet.Outlet
(方法不应与类相同;阅读起来确实令人困惑),您可以从请求中获取参数
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String s = Outlet.findById(id);
调用API时,您添加?id=value
或者,假设您的API的设置类似于request
,则可以从/path/ids/value
获取路径的最后一部分-请参考What's the difference between getRequestURI and getPathInfo methods in HttpServletRequest?以获取与此选项有关的信息
在执行此操作之前,您当然应该仔细检查正在运行的查询,当直接查询数据库时实际上返回了数据。