2015-02-10 3 views
0

Я новичок в Java Web Development и столкнулся с небольшим количеством проблем.Вызов основного метода в Java-классе от JSP

У меня есть назначение, где мне нужно создать страницу JSP, которая отображает содержимое XML-файла. Я создал приложение Java, которое анализирует XML-файл и отправляет его в txt-файл, который отлично работает. ReadXml отображается ниже, есть элемент класса, который является getter и setter и ParseXml, но они функционируют так, как надеялись.

package xml.reader; 

import java.util.List; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.PrintStream; 

import xml.reader.Item; 

public class ReadXml { 

    public static void main(String args[]) throws FileNotFoundException{ 

    File file = new File("PageOutput.txt"); 
    FileOutputStream fos = new FileOutputStream(file); 
    PrintStream ps = new PrintStream(fos); 

    XmlParser read = new XmlParser(); 
    List<Item> readConfig = read.readConfig("UnderMaintenanceConfig.xml"); 

    for (Item item : readConfig) 
    { 
     System.setOut(ps); 
     System.out.println(item); 
    } 


    } 
} 

Я также был в состоянии отобразить текстовый файл в пределах моей JSP страницы, это немного окольным способ сделать это, однако, это требование уступки. Это означает, что при внесении изменений в файл XML он должен отфильтровать файл .txt, а затем изменения должны отображаться на странице JSP. Ниже показан мой JSP Страница:

<%@page import ="java.io.*" %> 
<%@page import ="java.util.List" %> 
<%@page import ="xml.reader.ReadXml" %> 
<%@page import ="xml.reader.Item" %> 
<%@page import ="xml.reader.XmlParser" %> 

<%@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>HoldingPage</title> 
</head> 
<body> 

<jsp:useBean id="test" class="xml.reader.ReadXml" /> 

<% 
ReadXml a = new ReadXml(); 
a.main(null); 
%> 

<% 
InputStreamReader in = new InputStreamReader(new FileInputStream("C:\\workspace\\WS\\HoldingPage\\PageOutput.txt")); 
     BufferedReader br = new BufferedReader(in); 
     String line = br.readLine(); 

     while(line!=null){ 
     out.println(line); 
     line = br.readLine(); 
     out.println("<br>"); 
     } 
%> 
</body> 
</html> 

я искал через ресурсы, чтобы найти решение, но не увенчались успехом, я надеялся, что я мог бы получить ответы на некоторые вопросы о том, как вызвать класс Java от с JSP страницы, по сути я хотите, чтобы моя страница выполняла ReadXml при загрузке, чтобы загрузить последнюю версию файла XML и txt.

Спасибо за вашу помощь заранее!

+1

Правильный способ сделать это - это точный обратный путь. Вместо того, чтобы выполнять JSP и вызывать Java-метод из JSP, нужно сделать так, чтобы вызвать сервлет, вызвать метод Java из сервлета, сохранить результат метода в атрибуте запроса и использовать диспетчер запросов для переслать JSP. Затем JSP будет использовать результат, сохраненный в атрибуте request, чтобы отобразить его. В JSP вообще не должно быть скрипта. –

ответ

2
public class ReadXml { 

    public void doSomeThing(){ 

    File file = new File("PageOutput.txt"); 
    FileOutputStream fos = new FileOutputStream(file); 
    PrintStream ps = new PrintStream(fos); 

    XmlParser read = new XmlParser(); 
    List<Item> readConfig = read.readConfig("UnderMaintenanceConfig.xml"); 

    for (Item item : readConfig) 
    { 
     System.setOut(ps); 
     System.out.println(item); 
    } 


    } 
} 

Вы можете вызвать функции. Измените основной метод на функцию и используйте вот так.

<% 
ReadXml a = new ReadXml(); 
a.doSomeThing(); 
%> 
Смежные вопросы