Java 如何从同一类中的方法调用servlet?

Java 如何从同一类中的方法调用servlet?,java,servlets,methods,Java,Servlets,Methods,如何从方法调用servlet? 一个方法是由一个按钮启动的,我希望该方法启动servlet,但是,我遇到了困难,因为它是一个servlet?? 我希望setRc调用doGet,doGet反过来调用processRequest public class rc extends HttpServlet { public void setRc(String rc) throws ServletException, IOException { rc test = new rc(); t

如何从方法调用servlet?
一个方法是由一个按钮启动的,我希望该方法启动servlet,但是,我遇到了困难,因为它是一个servlet?? 我希望setRc调用doGet,doGet反过来调用processRequest

public class rc extends HttpServlet {


public void setRc(String rc) throws ServletException, IOException {
    rc test = new rc();
    test.doGet(null, null);
    this.rc = rc;
}

public String getRc() {
    return rc;
}

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    System.out.println("FROM doGet");
    response.setContentType("text/xml");
     //this is where the debugger quits...
    PrintWriterout = response.getWriter();
    processRequest(request, response);
    setRc(rc);
}

public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    name = request.getParameter("rc");
    IP = request.getRemoteAddr();
    FileWriter fstream = new FileWriter("C:\\commands\\IPLog\\IP.txt");
    BufferedWriter txt = new BufferedWriter(fstream);
    txt.write(IP);
    txt.close();
    Process p = Runtime.getRuntime().exec("c:\\commands\\psexec \\\\" + IP + "  -s -i     C:\\Windows\\System32\\mstsc.exe /v:" + name);
}
}


指数
请在此处输入您的全名:
名字: RDWeb 欢迎使用Web工具
${UserDetails.displayName0}
${UserDetails.Full\u User\u Name0} 输入UB ID、用户名或计算机名: 联系方式: 电子邮件:
IM:
电话:${UserDetails.telephoneNumber0}
上次登录:${UserDetails.login\u Date} 广告网站 ${UserDetails.AD_Site} 计算机 PC:${UserDetails.Computer\u Name}
OS:${UserDetails.Network\u Operating\u System0}
IP:${UserDetails.IP_Address} 硬件资源清册: 远程控制: RemX_OKillX.exe: 5685-SourceOne.exe:
请求调度器 forward方法将请求的控制权传递给另一个servlet或jsp,而不告诉任何关于向客户端浏览器发送请求的信息。因此,客户端浏览器不知道返回的资源是否来自另一个servlet/jsp

不调用 方法停止对请求的进一步处理,并在响应头中将http状态代码“301”和要重定向到客户端浏览器的位置的URL发送。将重定向相关的HTTP头发送到客户端浏览器后,服务器无法控制此请求。客户端浏览器看到http状态301,然后知道应该向服务器设置的“位置”http头中的url发送新请求。客户端浏览器向新URL发送一个新请求,服务器会将其作为另一个正常请求进行处理

因此,请求分派完全发生在服务器端。
但是sendRedirect是通过客户端浏览器处理的。

尝试:
response.sendRedirect(“servlet”)只是一种预感,但是您的doGet和processRequest方法应该在rc classIn setRc中,我假设它是按钮回调,您没有请求或响应变量,因此发送null。在doGet中,由于它们为null,因此会出现null引用异常,您在其中注释调试器退出,因为您说null.getWriter。这似乎是一种奇怪的模式@niculare提供了一个很好的建议,可以满足servlet的需要。否则,请考虑使用jquery将您的按钮连接到ajax,以便doGet方法获得传入的正确参数,而不是null。它们在类中-我删除了一些变量并意外地将“}”留在了中…我不明白您为什么要这样做。在任何情况下,用请求和响应调用请求处理都是毫无意义的。
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Index</title>
    </head>
    <body>
        <jsp:useBean id="info" scope="session" class="org.mypackage.WebTools.info" />
        <jsp:setProperty name="info" property="info" />
        <jsp:useBean id="hinv" scope="session" class="org.mypackage.WebTools.hinv" />
        <jsp:setProperty name="hinv" property="hinv" />
        <jsp:useBean id="rc" scope="session" class="org.mypackage.WebTools.rc" />
        <jsp:setProperty name="rc" property="rc" />
        <jsp:useBean id="remx" scope="session" class="org.mypackage.WebTools.remx" />
        <jsp:setProperty name="remx" property="remx" />
        <jsp:useBean id="SOne" scope="session" class="org.mypackage.WebTools.SOne" />
        <jsp:setProperty name="SOne" property="SOne" />

        <b><font color="blue">Please Enter your Full Name here:</font></b><br>
        <form name="frm" method="get" action="rc.java">
            <table border = "0">
                <tr align="left" valign="top">
                    <td>First Name:</td>
                    <td><input type="text" name ="name" /></td>
                </tr>
                <tr align="left" valign="top">
                    <td></td>
                    <td><input type="submit" value="submit"/></td>
                </tr>
            </table>
        </form>
        <%--   --%>     

        <table border="1">
            <tbody>
                <tr>
                    <td><a href="http://intranet/SITES/UBOX/SUPPORTUNITS/ITG/Pages/Default.aspx?cm_re_o=JPRr%20ZBFwCjCaB5%20WzM%20C%20mA55Byf%20JEbflCjCGa7"><img src="UBLogo.jpg" class ="ublogo" alt="UBLogo"/></a></td>
                    <td><strong>RDWeb</strong><a href="https://mpsc-dcs-util1/RDWeb/Pages/en-US/Desktops.aspx"><img src="RD.png" class ="rd" alt="UBLogo"/></a></td>
            </tbody>
        </table>



        <table border="1">
            <thead>
                <tr><th colspan="2">Welcome to Web Tools</th><br>
            <th colspan="2">${UserDetails.displayName0}
                <br>${UserDetails.Full_User_Name0}</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <form name="info" action="index.jsp">
                    Enter the UB ID, User Name or Computer Name:</td>
            <td><input type="text" name="info" />
                <input type="submit" value="OK" />
                </form>
            </td>
            <td><strong>Contact Details: </strong></td>
            <td><strong>Email: </strong><a href="mailto:${UserDetails.mail0}">${UserDetails.mail0}</a>
                <br><strong>IM: </strong><a href="im:<sip:${UserDetails.givenName0}.${UserDetails.sn0}@uboc.com>">${UserDetails.givenName0} ${UserDetails.sn0}</a>
                <br><strong>phone:</strong>${UserDetails.telephoneNumber0}              

                <br><span style="font-size:smaller; font-style:italic;">
                    <em>last login: ${UserDetails.Login_Date}</em></span></td>
        </tr>
        <tr>
            <td><strong>AD Site</strong></td>
            <td><strong>${UserDetails.AD_Site}</strong></td>
            <td><strong>Computer</strong></td>
            <td><strong>PC: ${UserDetails.Computer_Name}</strong>
                <br><strong>OS: ${UserDetails.Network_Operating_System0}</strong>
                <br><strong>IP: ${UserDetails.IP_Address}</strong></td>
        </tr>
        <tr>
            <td>
                <form name="hinv" action="index.jsp" />
                Hardware Inventory:<input type="submit" value="${UserDetails.Computer_Name}" onsubmit=jsp:setProperty name="hinv"/>
                </form>
            </td>
            <td>
                <form name="rc" action="index.jsp" />
                Remote Control:<input type="submit" value="${UserDetails.Computer_Name}" onsubmit=jsp:setProperty name="rc"/>
                </form>               
            </td>
            <td>
                <form name="remx" action="index.jsp" />
                RemX_OKillX.exe:<input type="submit" value="${UserDetails.Computer_Name}" onsubmit=jsp:setProperty name="remx"/>
                </form>
            </td>
            <td>
                <form name="SOne"  action="index.jsp" />
                5685-SourceOne.exe:<input type="submit" value="${UserDetails.Computer_Name}" onsubmit=jsp:setProperty name="SOne"/>
                </form>
            </td>
        </tr>
    </tbody>
</table>
<br>
<table border="1">
    <tbody>
        <tr>
            <c:forEach var="columnName" items="${result.columnNames}">
                <th><c:out value="${columnName}"/></th>
            </c:forEach>
        </tr>
        <!-- column data -->
        <c:forEach var="row" items="${result.rowsByIndex}">
            <tr>
                <c:forEach var="column" items="${row}">
                    <td><c:out value="${column}"/></td>
                </c:forEach>
            </tr>
        </c:forEach>
    </tbody>
</table>
</body>
</html>
    RequestDispatcher reqDisp = new RequestDispatcher("index.jsp");
    reqDisp.forward(request,response);
    or 
    reqDisp.forward(request,response);

or other way is
response.sendRedirect("/url to call");