在request.getAttribute上获取null值

时间:2014-04-10 11:37:33

标签: java servlets

您好我有一个像这样的servlet类

public class DBConnection extends HttpServlet {
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
   {

      resp.setContentType("text/html");
      req.setAttribute("Message","Message from servlet page");

      req.getRequestDispatcher("/index.jsp").forward(req,resp);

   }
}

在index.jsp页面上调用servlet,如下所示

<% String Msg= (String)request.getAttribute("Message");
out.println("<p> Servlet communicated message to JSP: "+ Msg + "</p>");%>

这在我的web.xml文件中

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    <display-name>dbconnection</display-name>
    <welcome-file-list>
    <welcome-file>Login.html
    </welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>DBConnection</servlet-name>
        <servlet-class>DBConnection</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DBConnection</servlet-name>
        <url-pattern>/DBConnection</url-pattern>
    </servlet-mapping>
</web-app>

我得到一个空值..任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您正在获取空值,因为您没有使用正确的URL访问。

假设您有以下网址:

http://localhost:8080/TestWeb/

您的项目名称为TestWeb。如果您尝试使用上面的url,则会获得null值,因为请求不是来自servlet。所以你需要使用以下url

http://localhost:8080/TestWeb/DBConnection

然后只有你会得到正确的输出。请试一试。

答案 1 :(得分:0)

您可以使用表达式语言访问servlet中定义的属性。

内部JSP:

<p> Servlet communicated message to JSP: ${Message} </p>

的Servlet

RequestDispatcher rd;
resp.setContentType("text/html");
req.setAttribute("Message","Message from servlet page");
rd = req.getRequestDispatcher("/index.jsp");
rd.forward(req,resp);

答案 2 :(得分:0)

您没有在您尝试调用的url中调用您的servlet 按照Yubi的建议尝试。

示例:如果您的网址格式为

<url-pattern>/TestingServlet</url-pattern>

在你的web.xml执行你的servlet获取/发布该servlet你应该使用urlpattern

    `http://yourserverhost:port/ServletTest/TestingServlet`

ServletTest 是您的应用程序上下文, TestingServlet 是您的Servlet的url模式。

  <servlet>
    <description></description>
    <display-name>TestingServlet</display-name>
    <servlet-name>TestingServlet</servlet-name>
    <servlet-class>TestingServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestingServlet</servlet-name>
    **<url-pattern>/TestingServlet</url-pattern>**
  </servlet-mapping>