2017-01-06 130 views
0

我使用tomcat在服务器中部署了我的servlet。它基本上有一些输入栏和保存修改按钮。当有人写东西并点击保存时,我想保存对数据库的更改以及客户端的PC名称和记录的用户名。一切都完成,直到更新客户端的PC名称和用户名。我可以通过InetAddress inetAddress = InetAddress.getByName(request.getRemoteAddr);String PCName = inetAddress.getHostName();获取PC名称如何获取用户名?我试过很多东西,如request.getRemoteUser()(返回NULL,request.getAuthType()也返回null。如何更改认证类型?),也试过System.getProperty("user.name")(返回服务器的用户名在那里,因为我需要客户端的用户名)Java Servlet获取登录用户名

通过用户名我指的是用户名通过登录到PC。

+0

@SamuelJMathew他已经做到了这一点。他*要求*代码。 – EJP

+0

所以说清楚,你在谈论获取用户登录到他的电脑的用户名,对吧?或者,您的Web应用程序是否有自己的身份验证机制,并且您想要输入的用户名? – Gimby

+0

@Gimby,对于登录到我的servlet被调用的PC的用户感兴趣。 –

回答

-1

HttpServletRequest.getUserPrincipal()返回当前用户主体(如果有),其中包含用户名:如果没有当前用户,则返回null。

+0

@Gimby只有当你没有阅读过这个问题。它关于servlet和“客户端的登录用户名”。 servlet的客户端位于HTTP会话的另一端,我提到的方法提供了该会话的用户主体。 “操作系统”这个词是你自己的发明:它们不出现在问题中。 – EJP

+0

我在代码中添加了以下代码行:Principal p = request.getUserPrincipal(); ();} System.out.println(“PrincipalUser:”+ p.getName());' 它在'request.getUserPrincipal()显示java.lang.NullPointerException'[INFO:请求不为空,我已验证] –

+0

@ jayachandrachillipuri所以,很显然,request.getUserPrincipal()返回null,在我的答案和它所引用的链接仔细指定的条件下。目前没有经过身份验证的用户。你需要检查这种情况。你真的不需要这些帮助来调试一个简单的NPE。 – EJP