获取HTTP状态404错误,我的网页无法正常工作

时间:2014-05-22 11:45:05

标签: java html xml jsp

  

我的ExecuteScript.java类

    package scriptOnJsp;

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.Map;

    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.swing.JOptionPane;

    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelExec;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.JSchException;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.SftpATTRS;
    import com.jcraft.jsch.SftpException;

    //@WebServlet("/ExecuteScript")
    public class ExecuteScript extends HttpServlet {

        private static final long serialVersionUID = 1L;

        Session session = null;
        Channel channel = null;
        ChannelSftp channelSftp = null;

        HashMap<String, String> hashMap = new HashMap<String, String>();

        HashMap<String, HashMap<String, String>> hashingMap = new HashMap<String, 

                                                            HashMap<String, String>>();
            MapValue keyValue = new MapValue();

        String scriptResult;
        String host;
        String password;
        String command = "ls";
        String executeDirectory = "/t3/envs/wlppp4/";

        public ExecuteScript() {
            super();

        }

        /*
         * protected void doGet(HttpServletRequest request, HttpServletResponse
         * response) throws ServletException, IOException {
         * response.setContentType("text/html"); PrintWriter printWriter =
         * response.getWriter(); printWriter.println("<h1>ExecuteScript</h1>"); }
         */

        protected void processRequest(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, 
                                                                          IOException {
            // Get user_name and pass_word from the JSP page
            host = request.getParameter("host_name");
            String password = request.getParameter("pass_word"); // Print the 
                                                                                 above

                      // got values in

                               // console
            System.out.println("The username is" + host);
            System.out.println("\nand the password is" + password);
            request.setAttribute("dd", keyValue);
        }

        public void connect() {
            try {
                JSch jsch = new JSch();
                session = jsch.getSession("sftp_t3", host, 22);
                session.setPassword(password);
                session.setConfig("StrictHostKeyChecking", "no");
                java.util.Properties config = new java.util.Properties();
                session.setConfig(config);
                session.connect();
                channel = session.openChannel("sftp");
                channel.connect();
                channelSftp = (ChannelSftp) channel;
                channelSftp.cd(executeDirectory);

                executeCommand(command);
                System.out.println("Executed :)");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public void executeCommand(String script) throws JSchException,
                IOException, SftpException {
            System.out.println("Execute sudo");
            String sudo_pass = "test";
            ChannelExec channel = (ChannelExec) session.openChannel("exec");
            Channel channelTemp = (ChannelSftp) session.openChannel("sftp");

            ((ChannelExec) channel).setCommand(script);

            InputStream in = channel.getInputStream();
            OutputStream out = channel.getOutputStream();
            ((ChannelExec) channel).setErrStream(System.err);
            channel.connect();
            out.write((sudo_pass + "\n").getBytes());
            out.flush();

            byte[] tmp = new byte[1024];
            while (true) {
                while (in.available() > 0) {
                    int i = in.read(tmp, 0, 1024);
                    if (i < 0)
                        break;
                    scriptResult = new String(tmp, 0, i);
                    String[] strArray = scriptResult.split("\n");

                    for (String temp : strArray) {
                        int var = temp.indexOf(":");
                        String arr = temp.substring(0, var);
                        String arry = temp.substring(var, 
                                                                        temp.length());
                        hashMap.put(arr, arry);
                    }

                    for (Map.Entry<String, String> pairs : 
                                                                 hashMap.entrySet()) {
                        System.out.println("" + pairs.getKey() + 
                                                                     pairs.getValue());
                    }

                    keyValue.setMinDays(hashMap.get("Last password 
                                                                             change"));
                    keyValue.setPassExpires(hashMap.get("Password 
                                                                             expires"));
                    keyValue.setPassInactive(hashMap.get("Password 
                                                                            inactive"));
                    keyValue.setAccExpires(hashMap.get("Account 
                                                                            expires"));
                    keyValue.setMinDays(hashMap
                            .get("Minimum number of days between 
                                                                     password change"));
                    keyValue.setMaxDays(hashMap
                            .get("Maximum number of days between 
                                                                     password change"));
                    keyValue.setNoWarnings(hashMap
                            .get("Number of days of warning 
                                                             before password expires"));

                    hashingMap.put(host, hashMap);

                    for (Map.Entry<String, HashMap<String, String>> 
                                                                  newPairs : hashingMap
                            .entrySet()) {
                        System.out.println("Set 1: \n" + 
                                                             newPairs.getKey()
                                    + newPairs.getValue());
                        for (Map.Entry<String, String> newPairsTemp 
                                                                              : newPairs
                                .getValue().entrySet()) {
                            System.out.println("Set 2: \n" + 
                                                                   newPairsTemp.getKey()
                                    + 
                                                               newPairsTemp.getValue());
                        }
                    }

                    System.out.print("Data are: " + scriptResult);

                }
                if (channel.isClosed()) {
                    System.out.println("exit-status: " + 
                                                               channel.getExitStatus());
                    break;
                }
                try {
                    Thread.sleep(1000);
                } catch (Exception ee) {
                    System.out.println(ee);
                }
            }
            channel.disconnect();
            System.out.println("Sudo disconnect");
        }

        public void disconnect() {
            session.disconnect();
        }

        public void Openpage(HttpServletResponse res) throws IOException {
            // here type your JSP page that you want to open
            res.sendRedirect("host.jsp");
        }

        /*
         * public static void main(String... args) throws JSchException,
         * IOException, SftpException {
         * 
         * ExecuteScript escript = new ExecuteScript();
         * 
         * //escript.processRequest(request, response); escript.connect();
         * escript.disconnect(); }
         */
    }
  

我的bean类 - MapValue.java

   package scriptOnJsp;

   public class MapValue {

    private String minDays;
    private String passInactive;
    private String lastPassChange;
    private String maxDays;
    private String passExpires;
    private String accExpires;
    private String noWarnings;

    public String getMinDays() {
        return minDays;
    }

    public void setMinDays(String minDays) {
        this.minDays = minDays;
    }

    public String getPassInactive() {
        return passInactive;
    }

    public void setPassInactive(String passInactive) {
        this.passInactive = passInactive;
    }

    public String getLastPassChange() {
        return lastPassChange;
    }

    public void setLastPassChange(String lastPassChange) {
        this.lastPassChange = lastPassChange;
    }

    public String getMaxDays() {
        return maxDays;
    }

    public void setMaxDays(String maxDays) {
        this.maxDays = maxDays;
    }

    public String getPassExpires() {
        return passExpires;
    }

    public void setPassExpires(String passExpires) {
        this.passExpires = passExpires;
    }

    public String getAccExpires() {
        return accExpires;
    }

    public void setAccExpires(String accExpires) {
        this.accExpires = accExpires;
    }

    public String getNoWarnings() {
        return noWarnings;
    }

    public void setNoWarnings(String noWarnings) {
        this.noWarnings = noWarnings;
    }

   }
  

我的jsp - host.jsp

   <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                                              "http://www.w3.org/TR/html4/loose.dtd">
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Host details</title>
   </head>
   <body>
    <form name=host action="SaveUser" method="Post">
        Host name: <input type="text" name="host_name"> <br />
        Password: <input type="password" name="pass_word" /> <input
            type="submit" value="Submit" />
    </form>

   </body>
   </html>

   > My web.xml

   <?xml version="1.0" encoding="UTF-8"?>
   <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                                    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>Scriptingpage</display-name>
    <welcome-file-list>
        <welcome-file>host.jsp</welcome-file>
    </welcome-file-list>
   </web-app>
  

我需要在主机名上获取用户entery并将其提取到java类中,   操纵它并将ezxecuted查询显示为键值对。   在这,我甚至无法显示我的jsp页面。   请帮助我解决这个问题。

2 个答案:

答案 0 :(得分:0)

如果您收到404错误,则表示您在地址栏上放置的网址不存在。在检查您的代码之前,请确保您已将文件上传到服务器的正确位置,并且您已在浏览器中提供了正确的路径。

答案 1 :(得分:0)

您需要在web.xml中添加servlet条目,如下所示,

<?xml version="1.0" encoding="UTF-8"?>
   <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                                    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>Scriptingpage</display-name>
        <servlet>
        <servlet-name>ExecuteScript</servlet-name>
        <servlet-class>PackageName.ExecuteScript</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ExecuteScript</servlet-name>
        <url-pattern>/ExecuteScript</url-pattern>
    </servlet-mapping>     
    <welcome-file-list>
        <welcome-file>host.jsp</welcome-file>
    </welcome-file-list>
   </web-app>

在你的jsp中,

<form name=host action="/ExecuteScript" method="Post">
    Host name: <input type="text" name="host_name"> <br />
    Password: <input type="password" name="pass_word" /> <input
        type="submit" value="Submit" />
</form>

操作中的网址应与web.xml

中提供的网址格式相匹配