Подтвердить что ты не робот

Вызов java-метода в jsp

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

В сервлет (который выполняется перед 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() --%>

Ответ 3

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

Если вы хотите предварительно обработать запрос, используйте метод Servlet 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, используйте тегlib как JTL core taglib или создайте пользовательские теги.

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

Ответ 4

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

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

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

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

Ответ 5

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

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

В любом случае, я рекомендую вам google о сценариях, пользовательских тегах jsp и шаблоне MVC.
С наилучшими пожеланиями, Гедеван