Отправка целого числа из JSP в сервлет - PullRequest
0 голосов
/ 01 февраля 2020

Невозможно отправить целое число из сервлета в JSP.

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public MyServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Method Get in MyServlet");
        int Gconta = Integer.parseInt(request.getParameter("Gcont"));
        Gconta = Gconta + 1;
        System.out.println(Gconta);

        HttpSession session = request.getSession();
        session.setAttribute("NGconta", Gconta);
        response.sendRedirect("cabecalhost.jsp");

        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

Страница JSP

<body>  
    <h3>O Resultado NGconta:</h3> 

    <%String Getnumbx = request.getParameter("NGconta"); %>
    <%= Getnumbx %>

    <%String Getnumb = (String) request.getAttribute("NGconta");%>
    <% out.println("Your Result is "+ Getnumb);  %>

    &{NGconta}; 

</body>

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Замените

response.sendRedirect("cabecalhost.jsp");

на

request.getRequestDispatcher("cabecalhost.jsp").forward(request, response);

и код в JSP на

<body>  
    <h3>O Resultado NGconta:</h3> 

    <%String Getnumbx = session.getAttribute("NGconta").toString(); %>
    <%= Getnumbx %>

    <%String Getnumb = session.getAttribute("NGconta").toString();%>
    <% out.println("Your Result is "+ Getnumb);  %>

    ${NGconta}; 

</body>

Объяснение:

  1. redirect указывает серверу создать новый запрос для целевого URL, и поэтому содержимое существующего request не будет доступно целевому URL. С другой стороны, forward перенаправляет существующий объект request на целевой URL, и поэтому вы можете извлечь содержимое существующего request по целевому URL. Проверьте аналогичные post для лучшего понимания.
  2. $ (вместо &) используется в качестве оператора языка выражений JSP для извлечения значений из различных переменных области.
0 голосов
/ 01 февраля 2020

попробуйте

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public MyServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Method Get in MyServlet");
        int Gconta = Integer.parseInt(request.getParameter("Gcont"));
        Gconta = Gconta + 1;
        System.out.println(Gconta);

        HttpSession session = request.getSession();
        session.setAttribute("NGconta", Gconta);
        RequestDispatcher rd = 
        request.getRequestDispatcher("cabecalhost.jsp");
        rd.forward(request, response);

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}


<body>  
    <%String Getnumbx = (String)request.getSession().getAttribute("NGconta"); %>
    <%= Getnumbx %>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...