Вызов метода Java в jsp

У меня есть класс Java, который выполняет некоторые операции на файлах. Так как код Java огромен, я не хочу писать этот код в jsp. Я хочу назвать методы в jsp каждый раз, когда требуется.

Скажите мне путь, где я должен сохранить этот файл. Также некоторый пример кода, как использовать его, был бы полезен.

20
задан sth 1 March 2010 в 07:17
поделиться

5 ответов

Я думаю, вопрос в том, как сделать Java-код доступным в JSP? Вы должны сделать его доступным, как любой другой код Java, а это значит, что его нужно скомпилировать в файл .class и поместить в путь к классам.

В веб-приложениях это означает, что файл класса должен существовать в WEB-INF / classes в файле или каталоге приложения .war в обычной структуре каталогов, соответствующей его пакету. Итак, скомпилируйте и разверните этот код вместе со всем остальным Java-кодом вашего приложения, и он должен оказаться в нужном месте.

Обратите внимание, что вам нужно будет импортировать свой класс в JSP или использовать полное имя класса, но в противном случае вы можете написать любой код Java, который вам нравится, используя синтаксис <%%>.

Вы также можете объявить метод в какой-нибудь другой служебной программе JSP, используя <%! %> (обратите внимание на!), импортируйте JSP, а затем вызовите метод, объявленный в таком блоке. Но это плохой стиль.

10
ответ дан 29 November 2019 в 23:29
поделиться

В сервлете (который выполняется до JSP):

Person p = new Person(); // instantiate business object
p.init(...); // init it or something
request.setAttribute("person", p); // make it available to the template as 'person'

В шаблоне вы можете использовать следующее:

your age is: ${person.age}  <%-- calls person.getAge() --%>
24
ответ дан 29 November 2019 в 23:29
поделиться

В зависимости от того, какое действие вы хотите вызвать, для этого обычно используются taglibs, EL-функции или сервлеты. Java-коду действительно, действительно не место в JSP-файлах, а в Java-классах.

Если вы хотите предварительно обработать запрос, используйте метод сервлета doGet() . Например,

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Preprocess request here.
    doYourThingHere();
    // And forward to JSP to display data.
    request.getRequestDispatcher("page.jsp").forward(request, response);
}

Если вы хотите постпроцессировать запрос после отправки формы, используйте метод Servlet doPost() вместо этого.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Postprocess request here.
    doYourThingHere();
    // And forward to JSP to display results.
    request.getRequestDispatcher("page.jsp").forward(request, response);
}

Если вы хотите контролировать поток страницы и/или вывод HTML, используйте библиотеку тегов, например JSTL core taglib или создайте пользовательские теги.

Если вы хотите выполнять статические/помогающие функции, используйте EL-функции, например JSTL fn taglib или создайте пользовательские функции.

7
ответ дан 29 November 2019 в 23:29
поделиться

Хотя я не буду советовать вам выполнять какие-либо вызовы Java в JSP, вы можете сделать это внутри JSP:

<%
   //Your java code here (like you do in normal java class file.
%>

<!-- HTML/JSP tags here -->

Если вам интересно, <% ...%> раздел называется скриптлетом : -)

4
ответ дан 29 November 2019 в 23:29
поделиться

На самом деле, jsp не подходит для «выполнения некоторых операций с файлами». Вы слышали о шаблоне MVC ?

Если вас все еще интересует вызов java-метода из jsp, вы можете сделать это, например:
1. <% MyUtils.performOperation ("delete")%> ( скриптлет )
2. (настраиваемый тег)

В любом случае я рекомендую вам Google по поводу скриптлетов, настраиваемых тегов jsp и шаблона MVC. {{1 }}
С уважением, Гедеван

1
ответ дан 29 November 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: