2015-01-09 53 views
0

我目前正在制作Captive Portal。现在我遇到了一个问题,我希望你们可以帮助我。我想使用JSON(数据库连接)创建Java Servlet,但我不知道如何将JSON与Java结合。我在网上搜索了我的问题的答案,但没有成功。我不知道该如何开始。使用JSON的Java servlet - 连接数据库和登录认证

其他信息:

  • 外部服务器可以访问由URL
  • 我使用Eclipse进行了Java Servlet

难道我还需要使用SQL当我接近我的数据库(服务器)

在此先感谢!

我有以下3个Java servlet。这些不完整:

我可能必须与第一个Servlet进行连接。第二个是用于身份验证。但我不确定。你能给我解释一下这些servlet的用途吗?或可以做到?

package BL; 
 

 
import java.io.IOException; 
 

 
import javax.servlet.ServletException; 
 
import javax.servlet.annotation.WebServlet; 
 
import javax.servlet.http.HttpServlet; 
 
import javax.servlet.http.HttpServletRequest; 
 
import javax.servlet.http.HttpServletResponse; 
 
import javax.servlet.http.HttpSession; 
 

 
/** 
 
* Servlet implementation class BLServlet 
 
*/ 
 
@WebServlet("/BLServlet/*") 
 
public class BLServlet extends HttpServlet { 
 

 
\t enum BLServlet_Request { 
 
\t \t Unknown, 
 
\t \t User 
 
\t }; 
 

 
\t private static final long serialVersionUID = 1L; 
 
     
 
    /** 
 
    * @see HttpServlet#HttpServlet() 
 
    */ 
 
    public BLServlet() { 
 
     super(); 
 
    } 
 

 
\t /** 
 
\t * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
 
\t */ 
 
\t protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
 
    \t dispatchRequest(request, response); 
 
\t } 
 

 
\t /** 
 
\t * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
 
\t */ 
 
\t protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
 
\t } 
 

 
\t 
 
    private int dispatchRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
 
     int rc = 0; 
 
     
 
     HttpSession _HttpSession = request.getSession(); 
 
     
 
     String s_RequestURL = request.getRequestURL().toString(); 
 
     String s_RequestURI = request.getRequestURI(); 
 
     String s_ContextPath = request.getContextPath(); 
 

 
     String s_Request_Prefix = s_ContextPath; 
 
     String s_Request = s_RequestURI.substring(s_Request_Prefix.length(), s_RequestURI.length()); 
 
     if (!s_Request.startsWith("/")) { 
 
      s_Request = "/" + s_Request; 
 
     } 
 
     
 
     BLServlet_Request _CurrentRequest = requestFromURI(s_Request); 
 
     
 
     System.out.println("BL servlet Context: " + s_ContextPath + " request URL: " + s_RequestURL + " URI: " + s_RequestURI + " Request: " + s_Request); 
 
     
 
    \t switch (_CurrentRequest) { 
 
\t \t \t case User: 
 
\t \t \t \t rc = new BLRequestUser().handle(request, response); 
 
\t \t \t \t break; 
 
\t \t \t case Unknown: 
 
\t \t   System.out.println("BL servlet Context: received unknown request [" + s_Request + "]"); 
 
\t \t \t \t break; 
 
    \t } 
 
    \t 
 
    \t return rc; 
 
    } 
 
\t 
 

 
    static BLServlet_Request requestFromURI(final String _uri) { 
 
    \t if (_uri.equals("/BLServlet/User")) { 
 
    \t \t return BLServlet_Request.User; 
 
    \t }  \t \t 
 
\t \t return BLServlet_Request.Unknown; 
 
    } 
 

 
    
 
    static String requestAsString(final BLServlet_Request _request) { 
 
    \t switch (_request) { 
 
    \t \t case User: 
 
    \t \t \t return "User"; 
 
    \t \t case Unknown: 
 
    \t \t \t return "Unknown"; 
 
    \t } 
 
\t \t return "Unknown"; 
 
    } 
 
     \t 
 
\t 
 
}

package BL; 
 

 
import java.io.IOException; 
 

 
import javax.json.Json; 
 
import javax.json.stream.JsonGenerator; 
 
import javax.servlet.http.HttpServletResponse; 
 

 
public class BLUser { 
 
\t 
 
\t private String Id = ""; 
 
\t private String Surname = ""; 
 

 
\t public BLUser(String s_Id) { 
 
\t \t Id = s_Id; 
 
\t \t if (s_Id.equals("1")) { 
 
\t \t \t Surname = "Doe"; 
 
\t \t } 
 
\t } 
 
\t 
 
\t public void toJson(HttpServletResponse response) throws IOException { 
 
\t \t JsonGenerator _JsonGenerator = Json.createGenerator(response.getWriter()); 
 
\t \t 
 
\t \t _JsonGenerator 
 
\t \t \t .writeStartObject() 
 
\t \t \t \t .write("id", Id) 
 
\t \t \t \t .write("surname", Surname) 
 
\t \t \t .writeEnd(); 
 
\t \t _JsonGenerator.close(); 
 
\t } 
 
}

package BL; 
 

 
import java.io.IOException; 
 

 
import javax.servlet.http.HttpServletRequest; 
 
import javax.servlet.http.HttpServletResponse; 
 

 
public class BLRequestUser { 
 

 
\t public BLRequestUser() { 
 
\t } 
 
\t 
 
\t public int handle(HttpServletRequest request, HttpServletResponse response) throws IOException { 
 
\t \t String s_UserId = request.getParameter("id"); 
 
\t \t if (s_UserId == null) { 
 
\t \t \t response.setStatus(400); 
 
\t \t } 
 
\t \t else { 
 
\t \t \t response.setStatus(200); 
 
\t \t \t response.setContentType("application/json"); 
 
\t \t \t BLUser _BLUser = new BLUser(s_UserId); 
 
\t \t \t _BLUser.toJson(response); 
 
\t \t } 
 
\t \t 
 
\t \t return 0; 
 
\t } 
 
}

回答

1

我想也许你可能会在这里混淆一​​些东西。 JSON(Javascript Object Notatation)是一种序列化对象的方式。通常情况下,当你在浏览器中运行一些JavaScript时,会使用它,并且调用服务器来获取一些数据。数据将以JSON格式到达。 (精简格式,比XML更轻量级)

当您的服务器端Java想要与数据库进行通信(假定SQL数据库)时,您需要使用JDBC。 (Java数据库连接)。这是一个API。

认证是另一回事。您可以将一些凭据“硬编码”到Servlet中,如果这是足够的,但根据您的需要,您可能需要提示用户输入凭据,并使用它们访问数据库。

+0

我发现了以下内容,但我不知道如何应用它,你能帮我或给我任何提示吗? - PS。我很新编程 - 请参阅以下链接:http://restsql.org/examples/java/example-restsql.properties – Hakan

0

JSON在用于结束为发送信息和Servlate结束为采取信息并且即。就是这样,它不会与你的数据库通信,它只是通过JSPServlet之间的请求和响应。 Read more

+0

首先,我想感谢您的回答。 是否可以使用JSON代码(使用/在Java servlet中)来验证用户?(登录系统) – Hakan

+0

是的!你可以应该使用JSON将你的JSP之间的数据传递,这样就可以在JSP上提交表单并且借助JSON将它发布到servlet并使用servlet可以编写业务逻辑来验证用户。 –