2013-09-26 52 views
0

我正在嘗試使用生成的HTML代碼編寫servlet,而不是打印出靜態HTML。Java Servlet JSP不打印出屬性

我使用Eclipse的EE歐洲和Tomcat 6

我試圖從HERE

使用流動的小費,但是而不是打印所需的屬性看來,JSP忽略屬性或屬性爲空。

這裏是servlet:

package com.serv.pac; 


import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.PrintWriter; 

/** 
* Servlet implementation class for Servlet: testServlet 
* 
*/ 
public class testServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { 
    static final long serialVersionUID = 1L; 

    /* (non-Java-doc) 
    * @see javax.servlet.http.HttpServlet#HttpServlet() 
    */ 
    public testServlet() { 
     super(); 
    }  

    /* (non-Java-doc) 
    * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String message = "doGet response"; 

     request.setAttribute("message", message); 
     request.getRequestDispatcher("/testServlet/WEB-INF/index1.jsp").forward(request, response); 
     PrintWriter out = response.getWriter(); 
     out.println("the servlet"); 
    } 

    /* (non-Java-doc) 
    * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     System.out.println("first servlet"); 
    }    
} 

這裏是JSP

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>SO question 2370960</title> 
    </head> 
    <body> 
     <p>Message: ${message}</p> 
    </body> 
</html> 

而下面的是:

<?xml version="1.0" encoding="UTF-8"?> 
<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_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>servlet1_test</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 

    <welcome-file>index1.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
    <description></description> 
    <display-name>testServlet</display-name> 
    <servlet-name>testServlet</servlet-name> 
    <servlet-class>com.serv.pac.testServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>testServlet</servlet-name> 
    <url-pattern>/testServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

而這正是我得到的瀏覽器:

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>SO question 2370960</title> 
    </head> 
    <body> 
     <p>Message: </p> 
    </body> 
</html> 

正如人們可以看到,HTML體內的「消息」之後沒有任何東西,就好像消息屬性是空的。

謝謝

+0

您的請求調度程序應該是'getRequestDispatcher(「/ WEB-INF/index1.jsp」)'假設常規目錄結構。你能向你展示嗎? –

回答

0

我可以看到這個happenning是你是不是真正訪問您Servlet的唯一途徑。

你已經宣佈<welcome-file>

<welcome-file>index1.jsp</welcome-file> 

因此,如果您嘗試打

localhost:8080/YourContextPath

默認Servlet將渲染和送你一個丟失了message的屬性,JSP。

如果你想打你的實際Servlet,你需要使用

localhost:8080/YourContextPath/testServlet

請注意,您需要更改

request.getRequestDispatcher("/testServlet/WEB-INF/index1.jsp").forward(request, response); 

request.getRequestDispatcher("/WEB-INF/index1.jsp").forward(request, response); 

舉動你的文件在之下。