Не удалось передать значение из сервлета в JSP - PullRequest
2 голосов
/ 26 марта 2011

Код обновлен с помощью web.xml и конфигурации сервлета

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

Вот моя форма:

<HTML>
<BODY>
<FORM METHOD=POST ACTION="servlet/NewServlet">
Enter Name: <Input type="text" name="name"/><br>
<P><INPUT TYPE=SUBMIT>
</FORM>

Вот мой Бин, который я использую для методов установки и получения:

package user;

    public class CompileClass {
    public String name;

    public void setName(String n){
            name=n;
        }

    public String getName(){
            return name;
        }
    }

Вот мой сервлет:

import java.io.*;
import javax.servlet.*;  
import javax.servlet.http.*;

import user.CompileClass;

public class NewServlet extends HttpServlet{

    public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
String name1;

CompileClass c=new CompileClass();
name1=c.getName();
request.getSession().setAttribute("name1", name1);

request.getRequestDispatcher("../Result.jsp").forward(request, response);

    }
    }

И, наконец, вот моя страница JSP:

<%@ page import="java.net.*"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="java.util.ArrayList"%>

<jsp:useBean id="user" scope="request" class="user.CompileClass" />
<jsp:setProperty property="*" name="user"/>
<html>

  <body>

Name:
<br/>

<% request.getSession().getAttribute("name1");%>


  </body>
</html>

Это мой web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>NewServlet</servlet-name>
    <servlet-class>NewServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>NewServlet</servlet-name>
    <url-pattern>/servlet/NewServlet</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Мне все кажется нормальным.Но все же я не получаю никакого вывода на моей странице JSP.Помощь

Ответы [ 3 ]

3 голосов
/ 26 марта 2011

Как значение из формы попадает в ваш Бин? Вы делаете:

CompileClass c=new CompileClass();      //creates a new, empty instance
name1=c.getName();                      //gets the name from the empty 
                                        //instance (will be null)
request.setAttribute("name1", name1);   //sets 'name1' to null in the request

Возможно, вам повезет больше, если вы сделаете:

CompileClass c=new CompileClass();      //creates a new, empty instance
c.setName(request.getParameter("name"));//get the param and set it in the bean
name1=c.getName();                      //gets the name from the bean
request.setAttribute("name1", name1);   //sets 'name1' in the request

Хотя из структуры вашего кода кажется, что вы, вероятно, используете какую-то веб-среду, которая, как вы ожидаете, автоматически заполнит Бин данными из запроса. Если это так, то вы можете обратиться к документации по конфигурации и использованию вашей платформы, чтобы убедиться, что она настроена правильно и используется правильно.

Edit:

Также, пожалуйста, не делайте такие вещи, как:

<% request.getSession().getAttribute("name1");%>

Используйте это вместо:

${name1}

Редактировать 2:

Вы не развертываете свой сервлет в web.xml. Вам необходимо настроить его, добавив что-то вроде:

<servlet>
  <servlet-name>newServlet</servlet-name>
  <servlet-class>user.NewServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>newServlet</servlet-name>
  <url-pattern>/name/*</url-pattern>
</servlet-mapping>

А затем вам нужно обновить HTML-форму, чтобы она отправляла в сервлет, а не напрямую в JSP. Так что-то вроде:

<FORM METHOD=POST ACTION="name/submit">

0 голосов
/ 20 марта 2014

использовать класс RequestDispatcher ...

0 голосов
/ 26 марта 2011

Кажется, похоже на проблемы с областями применения. Самый простой способ исправить это заменить

request.setAttribute("name1", name1);

до

request.getSession().setAttribute("name1", name1);
...