2016-10-11 35 views
0

我可以將NewFile.jsp中的searchterm傳遞給HelloWorld servlet並將結果顯示在wemble jsp中。我有另一個程序寫在新的java類中。我不知道如何將searchterm傳遞給java類。以便運行該程序。如何在servlet中使用或調用java類並將結果顯示爲jsp

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <servlet> 
    <servlet-name>Hello</servlet-name> 
    <servlet-class>HelloWorld</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Hello</servlet-name> 
    <url-pattern>/HelloWorld</url-pattern> 
    </servlet-mapping> 
</web-app> 

NewFile.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> My JSP page </title> 
    </head> 
    <body>  
     <form method="post" action="HelloWorld">    
      Please enter a Keyword <br> 
      <input type="text" name="searchTerm"size="20px"> 
      <input type="submit" value="submit">       
     </form>  
    </body> 
</html> 

welcomepage.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>Insert title here</title> 
</head> 
<body> 
<%String X = (String)request.getAttribute("searchTerm");%> 

The search word is<%=X %> 

<%-- welcom <%=request.getAttribute("searchTerm")%> --%> 

</body> 
</html> 

的servlet:HelloWorld.java

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.PrintWriter; 

public class HelloWorld extends HttpServlet { 
    protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException 
    { 
    doPost(request,response); 

    } 

    protected void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException 
     { 


    // ..........reading the user input 
    String searchTerm= request.getParameter("searchTerm"); 
    request.setAttribute("searchTerm",searchTerm); 
    request.getRequestDispatcher("welcomepage.jsp").forward(request, response); 


    } 

    } 

其他的javascript: Myprogram.java

public class ParameterPy { 

public static void main(String a[]){ 
try{ 

String searchTerm="google"; 

ProcessBuilder pb = new ProcessBuilder("C:/Python27/python","D://program.py",""+searchTerm); 
Process p = pb.start(); 

BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream())); 

System.out.println(".........start process........."); 
String line = "";  
while ((line = bfr.readLine()) != null){ 
    System.out.println("Python Output: " + line); 
} 
System.out.println("........end process......."); 


}catch(Exception e){System.out.println(e);} 
} 
} 

如何在Myprogram.java在HelloWorld.java變量(取代了「谷歌」的實時用戶輸入檢索詞)鏈接變量搜索關鍵詞因爲HelloWorld.java是一個可以顯示給jsp的servlet。

+0

從要傳遞變量搜索關鍵詞來ParameterPy類在哪裏。 1)從NewFile.jsp中的表單到ParameterPy類2)或任何jsp/servlet到ParameterPy類 –

+0

我創建了一個名爲HelloWorld.java的servlet,我想將該servlet中的變量傳遞給java類 – HiPownedBi

回答

1

使用下面的代碼:
ParameterPy類

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
public class ParameterPy 
{ 

    public static void myMethodName(String searchTerm) 
     { 
      try 
       { 
        ProcessBuilder pb = new ProcessBuilder("C:/Python27/python", "D://program.py", ""+ searchTerm); 
        Process p = pb.start(); 

        BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream())); 

        System.out.println(".........start process........."); 
        String line = ""; 
        while ((line = bfr.readLine()) != null) 
         { 
          System.out.println("Python Output: " + line); 
         } 
        System.out.println("........end process......."); 

       } catch (Exception e) 
       { 
        System.out.println(e); 
       } 
     } 
} 

的HelloWorld的Servlet:

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class HelloWorld extends HttpServlet { 
private static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
     { 
     doPost(request,response); 

     } 

     protected void doPost(HttpServletRequest request, 
       HttpServletResponse response) throws ServletException, IOException 
      { 
     // ..........reading the user input 

     String searchTerm= request.getParameter("searchTerm"); 

     ParameterPy.myMethodName(searchTerm);//Call to java class method 

     request.setAttribute("searchTerm",searchTerm); 
     request.getRequestDispatcher("welcomepage.jsp").forward(request, response); 

     } 
} 

對於評論查詢,現在要打印ParameterPy對結果System.out。爲了在jsp網頁上顯示結果,您需要JspWriter對象,即out
爲此,我已經修改了您的邏輯,如下所示將結果返回爲String。這String結果將顯示在jsp頁面上。

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
public class ParameterPy 
{ 
    public static String myMethodName2(String searchTerm) 
     { 
      StringBuilder sb=null; 
      try 
       { 
        ProcessBuilder pb = new ProcessBuilder("C:/Python27/python", "D://program.py", ""+ searchTerm); 
        Process p = pb.start(); 

        BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream())); 

        sb=new StringBuilder(); 
        sb.append(".........start process........."); 
        String line = ""; 
        while ((line = bfr.readLine()) != null) 
         { 
          sb.append("Python Output: " + line); 
         } 
        sb.append("........end process......."); 

       } catch (Exception e) 
       { 
        System.out.println(e); 
       } 
       return sb.toString(); 
     } 
} 

JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1" import="stack.filter.ParameterPy"%> 
<!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>Insert title here</title> 
</head> 
<body> 
<% 
    String searchTerm = request.getParameter("searchTerm"); 
    out.println(ParameterPy.myMethodName2(searchTerm)); 
%> 
</body> 
</html> 
+0

非常感謝。我知道了。順便說一句,我可以問你一個問題嗎?如果我想在調用「ParameterPy.myMethodName(searchTerm); //調用serlvet中的java類方法」之後在jsp頁面上顯示ParameterPy結果。如何獲得結果並顯示在網頁上? – HiPownedBi

相關問題