簡體   English   中英

Java Servlet JSP不會打印出屬性

[英]Java Servlet JSP does not print out attribute

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

我正在使用Eclipse-EE Europa和Tomcat 6。

我嘗試使用這里的技巧

但是,而不是打印所需的屬性似乎忽略屬性的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正文中的“消息”之后沒有任何內容,好像message屬性為空。

謝謝

我看到這種情況的唯一方法是您實際上並沒有訪問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);

並將文件移到WEB-INF

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM