получить доступ к WEB-INF / JSP из HTML - PullRequest
0 голосов
/ 25 июня 2018

У меня есть простое приложение для проверки связи между html и jsp.Мой jsp находится в

WEB-INF/test.jsp

Вот структура моих файлов:

ProjectA 
  src 
    irstServlet.java 
  Web-Content 
    test1.html 
    WEB-INF 
      test.jsp 

Вот код из сервлета

protected void doPost(HttpServletRequest request, response) throws ServletException, IOException {
  RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/test.jsp");
  request.setAttribute("userName", request.getParameter("userName"););
  dispatcher.forward(request, response);
}

Сначала я развернулв tomcat запусти мой test1.html: он приведет меня к сервлету: FirstServlet.java, и я смогу ввести там userName.

Но после того, как я введу значения в и нажму enter, я ожидаю, что он перенаправит меня на test.jsp который не работает.Я получаю сообщение об ошибке:

Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрывать, что он существует.

Отредактировано: в моемhtml Я пытаюсь использовать его как:

<form method="POST" name="XX" action="/HelloWorldServlet">

Все еще не работает.

Пожалуйста, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 25 июня 2018

Ваш код не выглядит так, как если бы он вообще компилировался.

  • Параметр response не имеет типа - должен быть HttpServletResponse
  • Существует точка с запятой (;) после request.getParameter("userName")

Также я не уверен, почему вы получаете RequestDispatcher из контекста сервлета, а не из запроса - опять же, я никогда не проверял, имеет ли это какое-то значение.

В любом случае, я бы переписал doPost метод, подобный этому:

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setAttribute("userName", request.getParameter("userName"));
    req.getRequestDispatcher("/WEB-INF/test.jsp").forward(req, resp);
}

EDIT:

Я предполагаю, что у вас есть правильное отображение сервлета в вашем web.xml:

<servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>

или ваш сервлет снабжен аннотацией @WebServlet:

@WebServlet("/HelloWorldServlet")
public class FirstServlet extends HttpServlet {
    //your code
}

. Если ни один из них не соответствует действительности, то это ваша проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...