Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2022, 09:53   #1
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию Servlets фундаментальные проблемы

Погрузился в новый для меня язык java и столкнулся с некоторыми проблемами и фундаментальным пониманием принципов.

Решил начать с основ и познакомится в том числе и с сервлетами. В моём понимании сервлет подпрограмма выполняемая в оболочке какого-либо web сервера, в моём случае tomcat. Именно поэтому мы не можем напрямую взаимодействовать с теме же jsp, и приходится прибегать к такому:
Код:
@WebServlet("/")
public class Main extends HttpServlet {
 
    static public String title = "Title";
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("title", title);
        request.setAttribute("include", "Вставка кода");
        RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
        rd.forward(request, response);
    }
}
Как я понял, до передачи запроса в сервлет, мы добавляем значение в get запрос, в моём случае title и include в jsp же размечаем где мы хотим разместить ранее переданную информацию:
Код:
<%--
  Created by IntelliJ IDEA.
  User: User
  Date: 20.10.2022
  Time: 21:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>${title}</title>
  <link rel="stylesheet" type="text/css" href="/css/tag.css">
  <link rel="stylesheet" type="text/css" href="/css/class.css">
  <link rel="stylesheet" type="text/css" href="/css/menu.css">
</head>
<body>
  <div class="header">
    <div class="header-top"></div>
    <div class="header-middle">
      <nav id='menu'>
        <ul>
          <li><a href='/'>Главная</a></li>
          <li><a href='/generate'>Генерация</a></li>
        </ul>
      </nav>
    </div>
    <div class="header-bottom"></div>
  </div>
 
  <div class="main">
    ${include}
  </div>
 
  <div class="footer"></div>
 
</body>
</html>
По неизвестным мне причинам данный код не работаеn и информация не передаётся.
При открытии запмапленного с помощью @WebServlet адреса в моем случае http://localhost:8080 мы получаем:
Код:
<html>
<head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="/css/tag.css">
  <link rel="stylesheet" type="text/css" href="/css/class.css">
  <link rel="stylesheet" type="text/css" href="/css/menu.css">
</head>
<body>
  <div class="header">
    <div class="header-top"></div>
    <div class="header-middle">
      <nav id='menu'>
        <ul>
          <li><a href='/'>Главная</a></li>
          <li><a href='/generate'>Генерация</a></li>
        </ul>
      </nav>
    </div>
    <div class="header-bottom"></div>
  </div>
 
  <div class="main">
    
  </div>
 
  <div class="footer"></div>
 
</body>
</html>
Как видите нет переданных мной значений, но при этом при переходе на вовсе неразмеченный адрес к примеру localhost:8080/qq получаю верный результат:
Код:
<html>
<head>
  <title>Title</title>
  <link rel="stylesheet" type="text/css" href="/css/tag.css">
  <link rel="stylesheet" type="text/css" href="/css/class.css">
  <link rel="stylesheet" type="text/css" href="/css/menu.css">
</head>
<body>
  <div class="header">
    <div class="header-top"></div>
    <div class="header-middle">
      <nav id='menu'>
        <ul>
          <li><a href='/'>Главная</a></li>
          <li><a href='/generate'>Генерация</a></li>
        </ul>
      </nav>
    </div>
    <div class="header-bottom"></div>
  </div>
 
  <div class="main">
    Вставка кода
  </div>
 
  <div class="footer"></div>
 
</body>
</html>
Делаю вывод, что я чего то не понимаю на фундаментальном уровне работы данной технологии. Я не понимаю почему вообще Web сервер возвращает ответ с незамапленного адреса, а не просто 404 и почему я получаю данные переданные по другому адресу? Не понимаю почему я не получаю преданных данных по замапленному адресу?

Прошу помощи у тех кто имеет понимание!
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Java Servlets, JSP, JSF, Facelets mmx358 PHP 0 11.09.2014 02:19
Проблемы с vba (проблемы создания макросов) Leojse Microsoft Office Excel 4 26.12.2013 20:09
JavaServer Pages и Servlets veter48 Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 6 06.06.2013 13:33
Компьютерные сети и фундаментальные науки для самоучки Serg0man Свободное общение 4 11.04.2012 23:24
Чем отличаются фундаментальные типы данных от общих? avp Общие вопросы Delphi 1 17.07.2007 09:02