GVKun编程网logo

如何在servlet应用程序中更改用户的tomcat密码?(servlet修改)

9

想了解如何在servlet应用程序中更改用户的tomcat密码?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于servlet修改的相关问题,此外,我们还将为您介绍关于GWT应用程序-部署在

想了解如何在servlet应用程序中更改用户的tomcat密码?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于servlet修改的相关问题,此外,我们还将为您介绍关于GWT应用程序-部署在Tomcat或任何其他servlet容器上、java – 如何正确处理JSP / Servlet应用程序中的异常?、sip-servlet 如何在TOMCAT下部署》?、Tomcat Java Servlet-在应用程序启动时初始化类的新知识。

本文目录一览:

如何在servlet应用程序中更改用户的tomcat密码?(servlet修改)

如何在servlet应用程序中更改用户的tomcat密码?(servlet修改)

我们的Web应用程序已部署在Tomcat上,当前使用UserDatabaseRealm来确保安全。我们希望在应用程序中提供一个页面,用户可以在其中更改密码-
一种简单的通用Web应用程序功能。我找不到任何示例servlet代码来执行此操作。对UserDatabaseRealm的Tomcat描述意味着可以在服务器启动时加载XML之后以编程方式对其进行更新,并且还可以将更改保存回XML文件。简要介绍了JMX作为一种手段,但没有详细介绍。

我们的目标是在此应用程序中没有数据库,因此我们真的不想使用JDBC Realm。更改用户密码(对于管理员,添加/删除用户)的Java
Servlet代码看起来像什么?

感谢您提供的线索,这是我正在工作的Tomcat MemoryUserDatabase Servlet(减去任何加密,密码验证,错误处理等):

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    try {        // Get current password for currently authenticated user        String username =  request.getRemoteUser();        MBeanServer server = ManagementFactory.getPlatformMBeanServer();        ObjectName userObjName = new ObjectName("Users:type=User,username=\""+username+"\",database=UserDatabase");        Object password = server.getAttribute(userObjName, "password");        System.out.println("Current Password = "+password.toString());        // Get new password from request parms and update the DB        String newPw = request.getParameter("newpw");        server.setAttribute(userObjName, new Attribute("password", newPw));        // Password is updated in-memory, now write to file.        // Note Tomcat MemoryUserDatabase.save() implementation does not synchronize this         // operation, so it can fail badly if multiple users do this at the same time.         // Ugh. Should do this in a static synchronized method.        server.invoke(                new ObjectName("Users:type=UserDatabase,database=UserDatabase"),                "save",                new Object[0],                new String[0]);        // If no exception, save was OK (it returns VOID, so there is no return value to check)    }    catch (Throwable t) {        // Should return proper HTTP error code...        t.printStackTrace(System.err);    }}

答案1

小编典典

我只是想通了。

首先,您必须更新server.xml并将readonly = false添加到:

<Resource auth="Container" readonly="false" description="User database thatcan be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"name="UserDatabase" pathname="conf/tomcat-users.xml"type="org.apache.catalina.UserDatabase"/>

然后在一个jsp文件中:

 <%!public static boolean changePasswd(String user, String passwd, MBeanServer mbeanServer, JspWriter out) throws Throwable{ try {String userFDN = "Users:type=User,username=\""+user+"\",database=UserDatabase"; ObjectName userObjName = new ObjectName(userFDN);MBeanInfo info = mbeanServer.getMBeanInfo(userObjName);Attribute attr=new Attribute("password",passwd);mbeanServer.setAttribute(userObjName, attr);ObjectName databaseObjName=new ObjectName("Users:type=UserDatabase,database=UserDatabase");Object result= mbeanServer.invoke(databaseObjName,"save",new Object[0],new String[0]); out.println("<b>Changed password and, Saved: "+result+"</b>");return true;    } catch (Throwable t) {out.print("<font color=''red''>WHY: </font>" + t);} return false; }%>  <%MBeanServer mbeanServer = (MBeanServer) list.get(0);   //ObjectName obname = new ObjectName(   "Catalina:type=Resource,resourcetype=Global,class=org.apache.catalina.UserDatabase,name=\"UserDatabase\"" );   ArrayList list = MBeanServerFactory.findMBeanServer(null);     MBeanServer mbeanServer = (MBeanServer) list.get(0);   changePasswd("user","passwd",mbeanServer,out);

/ N

GWT应用程序-部署在Tomcat或任何其他servlet容器上

GWT应用程序-部署在Tomcat或任何其他servlet容器上

是否有Eclipse
GWT插件或任何其他方法可在Tomcat(或任何其他Serlvet容器)上自动部署和运行GWT应用程序?目前,我知道的唯一方法是将已编译的类复制到WEB-
INF目录中,但这是一项艰巨的工作。另外,您必须手动配置Apache Tomcat。我想在Eclipse Dynamic Web
Project中拥有类似的东西,您可以在其中通过生成tomcat进程直接运行servlet。

谢谢

java – 如何正确处理JSP / Servlet应用程序中的异常?

java – 如何正确处理JSP / Servlet应用程序中的异常?

如何正确处理servlet中遇到的错误?现在,我继承的应用程序(仅使用纯JSP / Servlet)有一个称为Controller的超类,它扩展了HttpServlet,所有其他servlet都从其中扩展.在Controller类中是一个try和catch块,如下所示:
try {
    // execute doPost or doGet here
} catch (Exception e) {
    // show a generic error page
}

这是正确的做法吗?看起来很笨重,似乎并不总是奏效.我只是一个实习生,所以我没有很多经验.任何建议?我试图让应用程序强大..

解决方法

标准的做法是让您的Servlet的doXxx()方法(例如doGet(),doPost()等)抛出一个servletexception,并允许容器捕获并处理它.您可以使用< error-page>指定要在WEB-INF / web.xml中显示的自定义错误页面.标签:
<error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
</error-page>

如果你最终捕获一个异常,你不能优雅地处理,只需将它包装在一个这样的servletexception中:

try {
    // code that throws an Exception
} catch (Exception e) {
    throw new servletexception(e);
}

sip-servlet 如何在TOMCAT下部署》?

sip-servlet 如何在TOMCAT下部署》?

sip-servlet  如何在TOMCAT下部署》?

求详细步骤。。。

Tomcat Java Servlet-在应用程序启动时初始化类

Tomcat Java Servlet-在应用程序启动时初始化类

我有一个类,它会花一些时间来启动(进行一些JNI调用,而不会进行),因此在每次页面加载时初始化该类都是不可行的。是否可以在应用程序启动时初始化此类,然后在提供页面时访问其方法?

例如:

我有MyClass。当应用程序(tomcat)启动时,我希望它按如下方式初始化我的校准:

MyClass myClassInstance = new MyClass("arg1","arg2");

然后,当调用页面时,例如说/ testpage,我想调用myClassInstance:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import MyClass;

public class TestPage extends HttpServlet {

    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
    {
        String myResult = myClassInstance.getResult("whatever");

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Test</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>" +myResult +"</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

这可能吗?

关于如何在servlet应用程序中更改用户的tomcat密码?servlet修改的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于GWT应用程序-部署在Tomcat或任何其他servlet容器上、java – 如何正确处理JSP / Servlet应用程序中的异常?、sip-servlet 如何在TOMCAT下部署》?、Tomcat Java Servlet-在应用程序启动时初始化类的相关知识,请在本站寻找。

本文标签: