Java 使用 JSON 的 servlet - 连接到数据库和登录身份验证

Java servlet using JSON - Connection to database and login authentication

我目前正在制作强制门户。现在我遇到了一个问题,希望大家能帮帮我。我想使用 JSON(数据库连接)制作一个 Java Servlet,但我不知道如何将 JSON 与 java 结合使用。我在网上搜索了我的问题的答案,但没有成功。我不知道如何开始。

附加信息:

当我访问我的数据库(服务器)时是否还需要使用 SQL

提前致谢!

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

我可能必须与第一个 Servlet 建立连接。第二个 2 用于身份验证。但我不确定。您能解释一下这些 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 {

 enum BLServlet_Request {
  Unknown,
  User
 };

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

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

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

 
    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);
        
     switch (_CurrentRequest) {
   case User:
    rc = new BLRequestUser().handle(request, response);
    break;
   case Unknown:
          System.out.println("BL servlet Context: received unknown request [" + s_Request + "]");
    break;
     }
     
     return rc;
    }
 

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

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

package BL;

import java.io.IOException;

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

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

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

package BL;

import java.io.IOException;

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

public class BLRequestUser {

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

JSONJSP端用于发送信息,Servlate端用于获取信息,即。就是这样,它不会与您的数据库通信,它只是在 JSPServlet 之间传递请求和响应。 Read more

我想您可能在这里混淆了一些事情。 JSON(Javascript Object Notatation)是一种序列化对象的方法。通常,当您在浏览器中有一些 Java 脚本 运行 并且您调用服务器以获取一些数据时,会使用它。数据将以 JSON 格式到达。 (精简格式,比 XML 更轻量级)

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

身份验证是另一回事。如果足够的话,您可以 "Hard Code" 将一些凭据放入 Servlet,但根据您的需要,您可能需要提示用户输入凭据,并使用这些凭据来访问您的数据库。