繁体   English   中英

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

[英]Java servlet using JSON - Connection to database and login authentication

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

附加信息:

  • 外部服务器可通过URL访问
  • 我正在使用Eclipse来制作Java Servlet

访问数据库(服务器)时是否还需要使用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; } } 

我想也许您可能在这里混淆了一些事情。 JSON(Javascript对象标记)是一种序列化对象的方法。 通常,当浏览器中运行一些Javascript并调用服务器获取一些数据时,将使用此方法。 数据将以JSON格式到达。 (一种精简格式,比XML轻巧)

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

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

JSONJSP端用于发送信息,在Servlate端用于获取信息和Servlate 就是这样,它仅在JSPServlet之间传递请求和响应,就不会与数据库通信。 阅读更多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM