【发布时间】:2016-05-07 15:55:56
【问题描述】:
我是一名大学生,目前正在为一个模块开发一个 Android 应用。正在将其连接到服务器以执行登录等。部门给了我们一个服务器来使用并指导我们使用 Servlet。我宁愿以一种 Restful 的方式来做这件事,因为它似乎是一个行业标准。这是我目前写的代码:
import javax.ws.rs.QueryParam;
/**
*
* @author Tom
*/
public class Login {
public boolean doLogin(@QueryParam("email") String email) {
return checkCredentials(email);
}
private boolean checkCredentials(String email){
boolean result = false;
if (email != ""){
try {
result = DBConnection.checkLogin(email);
} catch (Exception e) {
result = false;
}
} else {
result = false;
}
return result;
}
}
我写了另一个类,DBConnection,但这似乎工作正常(使用 JDBC 连接到 MySQL 数据库)。
我遇到的问题是,当我运行网络服务器(使用Jetty,ant 是构建工具)并尝试通过浏览器访问服务器上的页面时,它只是给了我一个503,Servlet not initialised 错误。我认为这是因为我没有扩展 HttpServlet 类?这是他们给我们的一些示例 Servlet 代码:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class Product extends HttpServlet
{
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException
{
httpServletResponse.setContentType("text/plain");
PrintWriter out = httpServletResponse.getWriter();
out.println("Hello");
out.close();
}
}
他们给了我们一个名为 JettyStart.java 的文件,它会在您运行 ant 时启动 Web 服务器:
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.ServletHttpContext;
public class JettyStart
{
public static void main(String[] args) throws Exception
{
//A server running at http://localhost:8085 is created
Server server = new Server();
server.addListener(":8085");
ServletHttpContext context = (ServletHttpContext) server.getContext("/");
context.addServlet("/path/to/Login", "package.name.Login");
server.start();
}
}
那么我将如何将 Servlet 集成到我的 Restful 方法中以与服务器/数据库进行通信?还是我做错了?
【问题讨论】: