Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何像jsp和oracle中的聊天机器人一样在文本区域显示输出_Java_Oracle_Jsp_Servlets - Fatal编程技术网

Java 如何像jsp和oracle中的聊天机器人一样在文本区域显示输出

Java 如何像jsp和oracle中的聊天机器人一样在文本区域显示输出,java,oracle,jsp,servlets,Java,Oracle,Jsp,Servlets,我正在做一个关于chatbot的项目,但是这个项目使用的是eclipse而不是AIML。我现在不知道如何显示已保存在oracle数据库中的数据` 聊天服务器 public class ChatServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static String ChatBot = "/ChatBot.jsp"; private static

我正在做一个关于chatbot的项目,但是这个项目使用的是eclipse而不是AIML。我现在不知道如何显示已保存在oracle数据库中的数据`

聊天服务器

public class ChatServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static String ChatBot = "/ChatBot.jsp";
    private static String HOME = "/Home.jsp";
    private ChatDAO dao;

    /**
     * @see HttpServlet#HttpServlet()
     */

     public ChatServlet() {
            super();
            dao = new ChatDAO();
            // TODO Auto-generated constructor stub
     }      
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        try {

            String forward="";
            String action = request.getParameter("action");
            ChatInfo chat = new ChatInfo(); 

            if(action.equalsIgnoreCase("delete"))
            {
                int USER_ID = Integer.parseInt(request.getParameter("USER_ID"));
                System.out.println(USER_ID);
                dao.deleteChat(USER_ID);
                forward = HOME;
                request.setAttribute("chats", dao.getAllChatDAO()); 
            }

            catch (Throwable theException) { 

                System.out.println(theException);
            }


    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

        ChatInfo chat = new ChatInfo();

        int USER_ID = 1;
        int ANSWER_ID = 1;

        chat.setANSWER(request.getParameter("answer"));
        chat.setUSER_ID(USER_ID);
        chat.setANSWER_ID(ANSWER_ID);

        chat = dao.add(chat);

        USER_ID++;
        ANSWER_ID++;

        response.sendRedirect("ChatBot.jsp");

    }
}
ChatBot.jsp

<div id = "container" align="left">
    <%  
        String ques = null;
        String[] OpenA = {"Apa yang membawa anda ke mari?","Apa yang boleh saya bantu?", "Bagaimana saya boleh bantu anda hari ini?"};
        List<String> listO = Arrays.asList(OpenA);
        Collections.shuffle(listO);
        for (String name : listO) {
            ques = name;
        }
        out.println("Dr.Anna : "+ ques);
     %>
    </div>

    <form action='ChatServlet' method="post">
    <div id = "controls">
        <textarea name = "answer" placeholder = "Enter your message here..."></textarea>
        <button type = "submit" value="submit">Send</button>
    </div>
    </form>

发送
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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>chat</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ChatServlet</display-name>
    <servlet-name>ChatServlet</servlet-name>
    <servlet-class>ChatServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ChatServlet</servlet-name>
    <url-pattern>/ChatServlet</url-pattern>
  </servlet-mapping>
</web-app>

聊天
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
聊天服务器
聊天服务器
聊天服务器
聊天服务器
/聊天服务器

我想显示的数据在ChatBot.jsp上。

您可以使用请求调度器在请求时保存变量,也可以在jsp上访问相同的请求对象

    int USER_ID = 1;
    int ANSWER_ID = 1;  
    chat.setANSWER(request.getParameter("answer"));
    chat.setUSER_ID(USER_ID);
    chat.setANSWER_ID(ANSWER_ID);

    chat = dao.add(chat);
    USER_ID++;
    ANSWER_ID++;
    String answer=   request.getParameter("answer");
    request.setAttribute("answer", answer);
    RequestDispatcher rd=req.getRequestDispatcher("/ChatBot.jsp");
    rd.forward(req, resp);
在jsp中,在程序中执行以下步骤

            <div id = "container" align="left">
        <%  
        String ques = null;
        String[] OpenA = {"Apa yang membawa anda ke mari?","Apa yang boleh saya bantu?", "Bagaimana saya boleh bantu anda hari ini?"};
        List<String> listO = Arrays.asList(OpenA);
        Collections.shuffle(listO);
        for (String name : listO) {
            ques = name;

        }
        out.println("Dr.Anna : "+ ques);     
        String answer=(String)request.getAttribute("answer");
            if(answer !=null)
            out.print(answer);
         %>
        </div>

        <form action='ChatServlet' method="post">
        <div id = "controls">
        <textarea name = "answer" placeholder = "Enter your messagehere...">
       </textarea>
        <button type = "submit" value="submit">Send</button>
        </div>
        </form> 

发送
此外,如果您希望增加用户Id和答案Id,并打印所有问题,我想您应该考虑以下几点来实现

  • 此外,递增变量answerID和UserID没有任何 影响,因为每次在函数调用时它们都被初始化为1 ,而是在请求变量中跟踪它们
  • 它将只打印最后一个问题Have out.println(“安娜博士:+ques”);在列表的for each循环中

  • 您可以使用请求调度器在请求时保存变量,也可以在jsp中访问相同的请求对象

        int USER_ID = 1;
        int ANSWER_ID = 1;  
        chat.setANSWER(request.getParameter("answer"));
        chat.setUSER_ID(USER_ID);
        chat.setANSWER_ID(ANSWER_ID);
    
        chat = dao.add(chat);
        USER_ID++;
        ANSWER_ID++;
        String answer=   request.getParameter("answer");
        request.setAttribute("answer", answer);
        RequestDispatcher rd=req.getRequestDispatcher("/ChatBot.jsp");
        rd.forward(req, resp);
    
    在jsp中,在程序中执行以下步骤

                <div id = "container" align="left">
            <%  
            String ques = null;
            String[] OpenA = {"Apa yang membawa anda ke mari?","Apa yang boleh saya bantu?", "Bagaimana saya boleh bantu anda hari ini?"};
            List<String> listO = Arrays.asList(OpenA);
            Collections.shuffle(listO);
            for (String name : listO) {
                ques = name;
    
            }
            out.println("Dr.Anna : "+ ques);     
            String answer=(String)request.getAttribute("answer");
                if(answer !=null)
                out.print(answer);
             %>
            </div>
    
            <form action='ChatServlet' method="post">
            <div id = "controls">
            <textarea name = "answer" placeholder = "Enter your messagehere...">
           </textarea>
            <button type = "submit" value="submit">Send</button>
            </div>
            </form> 
    
    
    发送
    
    此外,如果您希望增加用户Id和答案Id,并打印所有问题,我想您应该考虑以下几点来实现

  • 此外,递增变量answerID和UserID没有任何 影响,因为每次在函数调用时它们都被初始化为1 ,而是在请求变量中跟踪它们
  • 它将只打印最后一个问题Have out.println(“安娜博士:+ques”);在列表的for each循环中

  • 你能更具体地说明你打算收到什么吗?是否希望已保存的消息显示在文本区域中?是。我想让留言出现@Sathya您是指您在“在此处输入您的消息…”或使用divID=控件在同一位置输入的消息?如果是这样,下次您将在W聊天框中得到相同的答案我希望在“在此处输入您的消息”中输入消息到文本区域id='container'。。这意味着,在我在“在此处输入您的消息”处输入消息后,该消息将保存在oracle中。然后,来自oracle的数据,我希望它出现在文本区域id='container'您能更具体地说明您打算接收什么吗?是否希望已保存的消息显示在文本区域中?是。我想让留言出现@Sathya您是指您在“在此处输入您的消息…”或使用divID=控件在同一位置输入的消息?如果是这样,下次您将在W聊天框中得到相同的答案我希望在“在此处输入您的消息”中输入消息到文本区域id='container'。。这意味着,在我在“在此处输入您的消息”处输入消息后,该消息将保存在oracle中。然后,来自oracle的数据,我希望它出现在文本区域id='container'它正在工作。。谢谢,但是我怎样才能使userID和AnswerId增加呢?我试图声明int USER_ID;但这不可能是宣告它起作用了。。谢谢,但是我怎样才能使userID和AnswerId增加呢?我试图声明int USER_ID;但它不能申报