| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Вопросы к JSP и Servlets |
| Автор: ElectricalStorm 22.6.2004, 19:06 |
| Проясните пожалуйста возникший в голове бардак... 1) Я так понимаю есть у меня JSP это типа Верстка + Java мешанина... которая как-то работает самостоятельно точнее Web Server сам понимает JSP теги и их интерпритирует (кстати а что это за Web Server такой) 2) Есть servlet'ы это Java програмы расположенные на сервере к которым я могу обращатся через Web Server как к cgi скриптам, но там верстки нет тада(!) раз там верстки нет у них (сервлетов) должны быть либо типа SSI что-то либо какой то шаболнизатор тоесть теги более высокого уровня не HTML которые встраиваются в сервлет и потом происходит транформация в HTML и на клиента отдается вот ... если такие шаблонизаторыы есть хотелось бы узнать как они называются ... 3) И наконец каким боком здесь EJB ? Спасибо ! |
| Автор: Domestic Cat 22.6.2004, 19:23 |
| 1. На самом деле контеuнер компилирует JSP в Servlet и получает обычныu класс 2. Не понял? Сервлет - ето класс, которыж получает реквест и отсылает респонс ТАКИМ КАКИМ ego yвидит броусер клиента. При чем тут шаблонизатор? Сервлет посылает респонс которыж содержит скажем <img src=""> ну а броусер интерпретирует етот теxт. Сервлет абсол-тно не занимается версткоu, шаблонами и пр - ето программа которую пишете Вы. 3. При том что EJB - tozhe часть J2EE, кстати более еффективная технология по части производительноисти и пр. Можно обеспечить коммуникацию JSP/Servlets и EJB; но для обычных wеб-саuтов JSP/Servlets с головоu хватит. |
| Автор: ElectricalStorm 22.6.2004, 19:50 |
| Большое спасибо но все-таки не все ясно... Значит сервлет получает реквест и отсылает респонс ТАКИМ КАКИМ ego yвидит броусер клиента т.е // Я сервлет импорты . . . реквест = гет реквест; если (реквест.экшн эквивалентно логин) { респонсе = "Введите логин <input type=text name=login><br>"+ "Введите пароль<input type=password name=password>"; } // и терь куда-нибудь типа принт респонсе; вот так ? если так то это таже самая мешанина... кода и верстки тока маленько сдругой стороны.... |
| Автор: Domestic Cat 22.6.2004, 20:30 | ||
Сервлет конечно можно использовать для формирования реквеста, например
Получается дежствительно мешанина. Поетому я бы советовал прочесть Falkner, Jones. Servlets and JSP the J2EE Web Tier (http://www.jspbook.com/index.jsp ) но поскольку возможно такоu книжки вы не наuдете, то вкраtце суть в следуюшем: 1. JSP используется ТОЛьКО для преzентации и получения/прикрепления обьектов от/к session, page, application, request. Если нужно например сделать что-то еше (то что называетса business logic) na .jsp stranice, используuте tag-фаuлы, классические тег classy, simple-теги. В результате страница не будет також мешаниноu. 2. Сервлеты используюстя ТОЛьКО как фильтры и для business logic. Например, при переходе на страницу "форум" сервлет читает из DB и присоединяет список тем к session , передает реквест .jsp, а .jsp просто получает список и показывает его (желательно через JSTL/tags). В результате не нужно никаких out.println-ov. Например вам надо написать страницу регистрации. Вы даете ссылку не на нее, а на сервлет которыu генерирует, skazhem, анти-бот image, сохраняет его и перенаправляет реквест на обычную форму, которая посылает POST реквест на другоu сервлет. Етот сервлет загоняет все в DB, проверяет что нужно, посылает email, итп и перенаправляет реквест на страницу "успешная регистрация". |
| Автор: DarkDS 22.6.2004, 20:39 | ||||
| Не совсем. JSP - это Java Server Pages. Теговый язык, который компилится на сервере и выдается конечному пользователю в виде ХТМЛ страницы. Есть 2-а способа использования JSP. 1. Инлайн подстановка кода. То есть весь код написан в перемешку с ХТМЛ кодом. К примеру так:
2. Вариант это теговое использование. То есть вся обработка происходит в написанных программистом Тегах. Класс тега юзера наследуется от класса Тег, описывается параметры тега в спец классе-сателите и вот этот тег, скомпилиный сервером, уже вставляется в код. То есть вставляется что то типа
и при генерации страницы управление будет передаватся из сервера тегу и отображать полученный из тега результат. Дальнейшее поведение не зависит от способа написания. данная страничка генерится в класс JavaPage, унаследованный от сервлета, дается классу реквест, ожидается респонс, и управление передается данному классу. Класс сам пишет в поток респонса то, что ему нужно и все. |
| Автор: ElectricalStorm 22.6.2004, 20:41 |
| Спасибо большое ! |
| Автор: Domestic Cat 22.6.2004, 21:11 |
| Ну я имел в виду советы Falkner'a, Jones'a а не в целом JSP. Использовать JSP можно как угодно, но для избежания мешанины и nuzhno разделение труда между JSP и Servlets - в J2EE eto nazyvaetsja MVC pattern. |
| Автор: Катена 13.3.2007, 07:07 |
| Помогите пожалуйста! Не компилируется сервлет(красным помечено ошибки) [code=java] package bonus.controllers; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class BonusCalculationServlet extends HttpServlet { public void init(ServletConfig config) { System.out.println("BonusCalculationServlet: init()"); } public double calculateBonus(int multiplier, double bonus) { double calculatedBonus = (multiplier * bonus); return calculatedBonus; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String inputMultiplier = request.getParameter("multiplier"); String ssn = request.getParameter("ssn"); Integer multiplierAsInteger = new Integer(inputMultiplier); int multiplier = multiplierAsInteger.intValue(); double inputBonus = 100.00; double bonus = this.calculateBonus(multiplier, inputBonus); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML><HEAD><TITLE>"); out.println("Servlet Example - Bonus Calculator"); out.println("</TITLE></HEAD><BODY>"); out.println("<H1>Bonus Calculation:</H1>"); out.println("<P>Social Security Number: " + ssn + "<P>"); out.println("<P>Multiplier: " + multiplier + "<P>"); out.println("<P>Bonus Amount: " + bonus + "<P>"); out.println("</BODY></HTML>"); out.close(); } public void destroy() { System.out.println("BonusCalculationServlet: destroy()"); } } Я не все указала. Ошибки выдаются на HttpServlet |
| Автор: tux 13.3.2007, 08:21 |
| Нужна библиотека с J2EE-классами. В Томкате это ${TOMCAT_HOME}/common/lib/servlet-api.jar. |